Penjadwal Acara
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan R di Coddy. Pelajaran 56 dari 57.
Tantangan
SulitBuat penjadwal acara dalam dua file.
Event.R: class S3eventdengan fieldtitle,day,start,end(jam). Tulisnew_event();validate_event(), yang menghentikan proses denganday must be from 1 to 31atauhours must be within 0 to 24 and start before end; helperevent(title, day, start, end), yang mengonversi argumen teks menjadi angka;format.event(), yang menghasilkanday 3 09-11 standup; danoverlaps(a, b), yang menghasilkanTRUEsaat dua acara berlangsung pada hari yang sama dan masing-masing dimulai sebelum acara lainnya berakhir.Scheduler.R:make_scheduler()menyimpan acara secara privat dan mengembalikanadd(e), yang membalasduplicateuntuk judul yang sama pada hari yang sama,conflicts with reviewsaat acara tersebut bertumpang tindih dengan acara yang sudah ada, atauadded;agenda(), yang menghasilkan acara berformat dan diurutkan berdasarkan hari, waktu mulai, lalu judul; sertabusiest_day(), yang menghasilkanbusiest: day 3 (4 hours)berdasarkan total jam (hari yang lebih awal jika seri), atauno events.
Gunakan call. = FALSE. Kode yang disediakan membaca baris title,day,start,end, mencetak balasan untuk setiap baris, lalu agenda dan hari tersibuk.
Tulis kodemu di Event.R dan Scheduler.R. main.R berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
source("Event.R")
source("Scheduler.R")
# Kode input/output yang disediakan: biarkan apa adanya
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 = "")
Semua pelajaran di Pemrograman Berorientasi Object
1Dasar S3
Bekerja dengan fileList dengan classFungsi KonstruktorMethod print dan formatValidator dan helperUlasan: Suhu4Enkapsulasi di R
Closure sebagai objectEnvironment sebagai objectFungsi accessorMelindungi stateRangkuman: Meter Parkir2S3 Generics dan Method
Generics dan UseMethodMethod DefaultMethod untuk Base GenericsDasar-Dasar NextMethodRekap: Luas Bangun5S4 class
Mendefinisikan class S4Slots dan AksesPemeriksaan ValiditasMethod showRingkasan: Katalog Produk8Kelas Referensi
Mendefinisikan Kelas ReferensiPembaruan method dan fieldSemantik PenyalinanPewarisan dan callSuperRangkuman: Antrean Tugas11Proyek: Manajemen Perpustakaan
Buku dan AnggotaMeminjam BukuLatihan sendiri: Compiler R online