Tekrar - Personel Dizini
Coddy'nin Kotlin Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 21 / 57.
Görev
OrtaBir sınıf hiyerarşisi olarak bir personel dizini oluşturun.
Person(name)soyuttur. Soyutrole()işlevini bildirir vecard()işlevini uygular; bu işlevAda (staff in sales)değerini döndürür ve üzerine yazılamaz.Staff(name, department)open'dır; rolüstaff in salesşeklindedir.Manager(name, department),Staffsınıfını genişletir ve özel bir ekip tutar.hire(member), üye aynı departmanda çalışıyorsa, yönetici değilse ve henüz ekipte değilsetruedöndürür ve üyeyi ekler; diğer durumlardafalsedöndürür. Rolü,Staffrolünün ardından gelen, 2 reportsifadesidir (superkullanın).Contractor(name, days),Personsınıfını genişletir; rolücontractor for 30 daysşeklindedir.
Sağlanan kod, staff Ada sales, manager Bo sales, contractor Cy 30 veya hire Bo Ada komutlarını okur (hired ya da refused yazdırır; bir ad bilinmiyorsa da aynı şekilde davranır), ardından her kişinin kartını eklenme sırasına göre yazdırır.
Kodunuz Person.kt, Staff.kt, Manager.kt ve Contractor.kt dosyalarına yazılmalıdır. Main.kt, sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.
Kendin dene
fun main() {
// Sağlanan giriş/çıkış kodu: olduğu gibi bırakın
val input = generateSequence(::readLine).toList()
val people = mutableListOf<Person>()
val staff = mutableMapOf<String, Staff>()
val managers = mutableMapOf<String, Manager>()
for (cmd in input) {
val p = cmd.split(" ")
when (p[0]) {
"staff" -> Staff(p[1], p[2]).also { people.add(it); staff[it.name] = it }
"manager" -> Manager(p[1], p[2]).also { people.add(it); staff[it.name] = it; managers[it.name] = it }
"contractor" -> people.add(Contractor(p[1], p[2].toInt()))
"hire" -> {
val boss = managers[p[1]]
val worker = staff[p[2]]
println(if (boss != null && worker != null && boss.hire(worker)) "hired" else "refused")
}
}
}
for (person in people) println(person.card())
}
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