Podsumowanie – kolejka zadań
Część sekcji Programowanie obiektowe ścieżki R w Coddy. Lekcja 41 z 57.
Wyzwanie
ŚredniZbuduj kolejkę zadań z dwóch klas referencyjnych. Obie definicje są opakowane w suppressMessages().
Taskw plikuTask.R: polatitle,priority(liczbowe) idone(logiczne);initializeustawiadonenaFALSE, jeśli nie podano tej wartości;label()zwraca[x] fix (3)dla ukończonego zadania lub[ ] fix (3).TaskQueuew plikuTaskQueue.R: poletasks(listalist);add(title, priority)dodaje nowy obiektTaski zwracainvisible(.self);next_task()zwraca tytuł otwartego zadania o najwyższym priorytecie (w przypadku remisu tego dodanego najwcześniej) lubnothing;complete(title)oznacza pierwsze otwarte zadanie o tym tytule jako ukończone i zwracaTRUElubFALSE;report()zwraca etykietę każdego zadania w kolejności dodania, a następnieopen: 2.
Dostarczony kod odczytuje add fix 3, next i done fix, następnie dodaje dwa zadania w jednym łańcuchowym wywołaniu i wyświetla raport.
Umieść swój kod w plikach Task.R i TaskQueue.R. Plik main.R zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.
Spróbuj swoich sił
source("Task.R")
source("TaskQueue.R")
# Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
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())
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy S3
Praca z plikamiListy z klasąFunkcje konstruktoraMetody print i formatWalidatory i funkcje pomocniczePowtórzenie — temperatury4Enkapsulacja w R
Domknięcia jako obiektyŚrodowiska jako obiektyFunkcje dostępoweOchrona stanuPodsumowanie – parkometr2Generics i metody S3
Generics i UseMethodMetody domyślneMetody dla podstawowych genericsPodstawy NextMethodPowtórzenie — pola figur5Klasy S4
Definiowanie klas S4Sloty i dostępSprawdzanie poprawnościMetody wyświetlaniaPodsumowanie – katalog produktów8Klasy referencyjne
Definiowanie klas referencyjnychMetody i aktualizacja pólSemantyka kopiowaniaDziedziczenie i callSuperPodsumowanie – kolejka zadań11Projekt: Zarządzanie biblioteką
Książki i czytelnicyWypożyczanie książek3Dziedziczenie S3
Wektory klasKolejność wyszukiwania metodRozszerzanie za pomocą NextMethodSprawdzanie za pomocą inherits()Powtórzenie — lista płac pracownikówPoćwicz samodzielnie: Kompilator R online