Terminplaner
Teil des Abschnitts Objektorientierte Programmierung der R-Journey von Coddy. Lektion 56 von 57.
Aufgabe
SchwerErstelle einen Ereignisplaner über zwei Dateien.
Event.R: die S3-Klasseeventmit den Felderntitle,day,start,end(Stunden). Schreibenew_event();validate_event(), das mitday must be from 1 to 31oderhours must be within 0 to 24 and start before endabbricht; die Hilfsfunktionevent(title, day, start, end), die die Textargumente in Zahlen umwandelt;format.event(), dasday 3 09-11 standupzurückgibt; undoverlaps(a, b), dasTRUEliefert, wenn zwei Ereignisse am selben Tag stattfinden und jedes beginnt, bevor das andere endet.Scheduler.R:make_scheduler()hält seine Ereignisse privat und gibtadd(e)zurück, das bei demselben Titel am selben Tagduplicate, wenn sich das Ereignis mit einem bestehenden überschneidetconflicts with reviewoderaddedzurückgibt; außerdemagenda(), die formatierten Ereignisse, sortiert nach Tag, Beginn und Titel; undbusiest_day(),busiest: day 3 (4 hours)nach der Gesamtstundenzahl (bei Gleichstand der frühere Tag) oderno events.
Verwende call. = FALSE. Der bereitgestellte Code liest Zeilen im Format title,day,start,end, gibt für jede Zeile die Antwort aus und anschließend die Agenda sowie den Tag mit der höchsten Auslastung.
Dein Code gehört in Event.R und Scheduler.R. main.R enthält den bereitgestellten Ein-/Ausgabecode und darf nicht bearbeitet werden.
Probier es selbst
source("Event.R")
source("Scheduler.R")
# Gelieferter Ein-/Ausgabe-Code: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
s <- make_scheduler()
for (line in input) {
p <- strsplit(line, ",")[[1]]
reply <- tryCatch(s$add(event(p[1], p[2], p[3], p[4])), error = function(e) paste("invalid:", conditionMessage(e)))
cat(p[1], ": ", reply, "\n", sep = "")
}
cat("agenda:\n")
for (l in s$agenda()) cat(" ", l, "\n", sep = "")
cat(s$busiest_day(), "\n", sep = "")
Alle Lektionen in Objektorientierte Programmierung
1S3-Grundlagen
Arbeiten mit DateienListen mit einer KlasseKonstruktorfunktionenPrint- und Format-MethodenValidatoren und HilfsfunktionenRückblick – Temperaturen4Kapselung in R
Closures als ObjekteUmgebungen als ObjekteZugriffsfunktionenZustand schützenRückblick – Parkuhr2S3-Generics und Methoden
Generics und UseMethodStandardmethodenMethoden für Basis-GenericsGrundlagen von NextMethodWiederholung – Flächeninhalte von Formen5S4-Klassen
S4-Klassen definierenSlots und ZugriffGültigkeitsprüfungenShow-MethodenRückblick – Produktkatalog8Referenzklassen
Referenzklassen definierenMethoden und FeldänderungenKopiersemantikVererbung und callSuperZusammenfassung – Aufgabenwarteschlange11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihenÜbe selbstständig: Online-R-Compiler