Zusammenfassung – Aufgabenwarteschlange
Teil des Abschnitts Objektorientierte Programmierung der R-Journey von Coddy. Lektion 41 von 57.
Aufgabe
MittelErstelle eine Aufgabenwarteschlange aus zwei Referenzklassen. Beide Definitionen sind in suppressMessages() eingeschlossen.
TaskinTask.R: die Feldertitle,priority(numerisch) unddone(logisch);initializesetztdoneaufFALSE, wenn es nicht angegeben wurde;label()gibt für eine erledigte Aufgabe[x] fix (3)oder[ ] fix (3)zurück.TaskQueueinTaskQueue.R: das Feldtasks(einelist);add(title, priority)fügt ein neuesTaskhinzu und gibtinvisible(.self)zurück;next_task()gibt den Titel der offenen Aufgabe mit der höchsten Priorität zurück (bei Gleichstand die zuerst hinzugefügte) odernothing;complete(title)markiert die erste offene Aufgabe mit diesem Titel als erledigt und gibtTRUEoderFALSEzurück;report()gibt ein Label pro Aufgabe in der Reihenfolge ihrer Hinzufügung und anschließendopen: 2zurück.
Der bereitgestellte Code liest add fix 3, next und done fix ein, fügt anschließend in einem verketteten Aufruf zwei Aufgaben hinzu und gibt den Bericht aus.
Dein Code gehört in Task.R und TaskQueue.R. main.R enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.
Probier es selbst
source("Task.R")
source("TaskQueue.R")
# Gelieferter Ein-/Ausgabecode: belasse ihn wie er ist
input <- suppressWarnings(readLines(file("stdin")))
q <- TaskQueue$new()
for (line in input) {
p <- strsplit(line, " ")[[1]]
if (p[1] == "add") {
q$add(p[2], as.numeric(p[3]))
} else if (p[1] == "next") {
cat("next: ", q$next_task(), "\n", sep = "")
} else if (p[1] == "done") {
cat(if (q$complete(p[2])) "completed " else "no open task ", p[2], "\n", sep = "")
}
}
q$add("late", 1)$add("later", 1)
writeLines(q$report())
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