Riepilogo - coda di attività
Fa parte della sezione Programmazione orientata agli oggetti del percorso R di Coddy. Lezione 41 di 57.
Sfida
MedioCrea una coda di attività usando due classi di riferimento. Entrambe le definizioni sono racchiuse in suppressMessages().
TaskinTask.R: campititle,priority(numerico) edone(logico);initializeimpostadonesuFALSEquando non viene specificato;label()restituisce[x] fix (3)per un'attività completata oppure[ ] fix (3).TaskQueueinTaskQueue.R: il campotasks(unalist);add(title, priority)aggiunge una nuovaTaske restituisceinvisible(.self);next_task()restituisce il titolo dell'attività aperta con la priorità più alta (in caso di parità, quella aggiunta per prima), oppurenothing;complete(title)contrassegna come completata la prima attività aperta con quel titolo e restituisceTRUE, oppureFALSE;report()restituisce un'etichetta per ogni attività nell'ordine in cui è stata aggiunta, poiopen: 2.
Il codice fornito legge add fix 3, next e done fix, poi aggiunge due attività con un'unica chiamata concatenata e stampa il report.
Il tuo codice va inserito in Task.R e TaskQueue.R. main.R contiene il codice di input/output fornito e non può essere modificato.
Provalo tu
source("Task.R")
source("TaskQueue.R")
# Codice di input/output fornito: lascialo così com'è
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())
Tutte le lezioni di Programmazione orientata agli oggetti
1Nozioni di base su S3
Lavorare con i fileListe con una classeFunzioni costruttriciMetodi di stampa e formattazioneValidatori e funzioni di supportoRipasso - Temperature4Incapsulamento in R
Chiusure come oggettiAmbienti come oggettiFunzioni di accessoProteggere lo statoRiepilogo - Parcometro2Generics e metodi S3
Generics e UseMethodMetodi predefinitiMetodi per i generics di baseNozioni di base su NextMethodRiepilogo - Aree delle forme5Classi S4
Definire le classi S4Slot e accessoControlli di validitàMetodi showRiepilogo - Catalogo prodotti8Classi di riferimento
Definizione delle classi di riferimentoMetodi e aggiornamenti dei campiSemantica della copiaEreditarietà e callSuperRiepilogo - coda di attività11Progetto: Gestione della biblioteca
Libri e iscrittiPrestito dei libriEsercitati da solo: Compilatore R online