Etkinlik Planlayıcı
Coddy'nin Kotlin Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 56 / 57.
Görev
ZorBir etkinlik zamanlayıcı oluşturun.
Event(title, day, start, end)(0 ile 24 arasındaki saatler)Comparable<Event>uygulayan ve güne, ardından başlangıç saatine, ardından başlığa göre sıralanan bir sınıftır. Başlıkları ve günleri eşleştiğinde iki etkinlik eşittir (aynı etkinliğin iki kez girilmesi); bu nedenle bu iki özellik üzerindeequalsvehashCodegeçersiz kılınmalıdır.day 3 09-11 standupbiçiminde, saatleri iki basamaklı olarak yazdırılır.overlaps(other), aynı gün içinde her etkinlik diğerinin bitişinden önce başlıyorsa true değerini döndürür.Scheduler.add(event), etkinlik başlangıcından sonra bitmiyorsainvalid: standup, eşit bir etkinlik içinduplicate, ajanda sırasındaki ilk çakışan etkinlik içinconflicts with reviewveyaaddedyanıtını verir.agenda()etkinlikleri sıralanmış biçimde döndürür vebusiestDay(), en çok rezerve edilmiş saate sahip gün içinbusiest day 3: 5h(eşitlik durumunda daha erken gün) veyano eventsdöndürür.
Verilen kod, etkinlikleri title,day,start,end satırları olarak okur, her biri için yanıtı yazdırır; ardından ajandayı (her satırda bir etkinlik) ve en yoğun günü yazdırır.
Kodunuz Event.kt ve Scheduler.kt dosyalarına yazılmalıdır. Main.kt, verilen giriş/çıkış kodunu içerir ve düzenlenemez.
Kendin dene
fun main() {
// Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
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())
}
Nesne Yönelimli Programlama bölümündeki tüm dersler
1Sınıflar ve Nesneler
Dosyalarla ÇalışmaSınıfları TanımlamaBirincil Yapıcılarinit Blokları ve Doğrulamaİkincil YapıcılarTekrar - Kütüphane Kartı4Kalıtım
Açık Sınıflar ve Alt SınıflarÜyeleri Geçersiz Kılmasuper ve YapıcılarSoyut SınıflarTekrar - Personel Dizini2Özellikler ve Kapsülleme
Özel ErişimcilerGörünürlük DeğiştiricileriÖzel Setter'larlazy ve lateinitTekrar - Banka Hesabı5Arayüzler
Arayüz BildirimleriVarsayılan MetotlarBirden Çok ArayüzTür Olarak ArayüzlerÖzet - Ödeme Yöntemleri8Generic'ler
Generic FonksiyonlarGeneric SınıflarTür Kısıtlamalarıin ve out ile VaryansTekrar - Öncelik Kuyruğu11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç AlmaKendi başına pratik yap: Kotlin playground