Penjadwal Acara
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Kotlin di Coddy. Pelajaran 56 dari 57.
Tantangan
SulitBuat scheduler acara.
Event(title, day, start, end)(jam dari 0 hingga 24) adalah class yang mengimplementasikanComparable<Event>, diurutkan berdasarkan day, lalu start, lalu title. Dua acara dianggap sama jika title dan day-nya cocok (acara yang sama dimasukkan dua kali), jadi timpaequalsdanhashCodeberdasarkan kedua property tersebut. Acara dicetak sebagaiday 3 09-11 standup, dengan jam dua digit.overlaps(other)bernilai true pada day yang sama jika waktu mulai masing-masing acara sebelum waktu berakhir acara lainnya.Scheduler.add(event)memberikan balasaninvalid: standupjika acara tidak berakhir setelah waktu mulainya,duplicateuntuk acara yang sama,conflicts with reviewuntuk acara pertama yang bertumpang tindih dalam urutan agenda, atauadded.agenda()mengembalikan acara yang sudah diurutkan, danbusiestDay()mengembalikanbusiest day 3: 5huntuk day dengan jam terjadwal terbanyak (jika seri, pilih day yang lebih awal), atauno events.
Kode yang disediakan membaca acara dari baris berformat title,day,start,end, mencetak balasan untuk setiap acara, lalu agenda (satu acara per baris) dan day tersibuk.
Tulis kodemu di Event.kt dan Scheduler.kt. Main.kt berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
fun main() {
// Kode input/output yang disediakan: biarkan apa adanya
val input = generateSequence(::readLine).toList()
val scheduler = Scheduler()
for (line in input) {
val p = line.split(",")
println(scheduler.add(Event(p[0], p[1].toInt(), p[2].toInt(), p[3].toInt())))
}
for (e in scheduler.agenda()) println(e)
println(scheduler.busiestDay())
}
Semua pelajaran di Pemrograman Berorientasi Objek
1class dan object
Bekerja dengan fileMendefinisikan classKonstruktor utamaBlok init dan validasiKonstruktor sekunderRingkasan: Kartu Perpustakaan2property dan Enkapsulasi
Accessor KustomModifier VisibilitasSetter Privatlazy dan lateinitRingkasan: Rekening Bank5Interface
Mendeklarasikan Interfacemethod DefaultBeberapa InterfaceInterface sebagai TipeUlasan: Metode Pembayaran11Proyek: Pengelolaan Perpustakaan
Buku dan AnggotaPeminjaman BukuLatihan sendiri: Playground Kotlin