Rückblick – Zoowärter
Teil des Abschnitts Objektorientierte Programmierung der Kotlin-Journey von Coddy. Lektion 31 von 57.
Aufgabe
MittelPlane einen Tag im Zoo.
Animal(name, kg)ist abstrakt und besitzt die abstrakten Memberspecies,foodunddailyGrams()sowie eine Methodeline(), dieLeo the lion: 5700 g meatzurückgibt.Lionfrisst Fleisch, 30 g pro kg.Parrotfrisst Samen, unabhängig von seinem Gewicht 50 g pro Tag.Sealfrisst Fisch, 40 g pro kg.- Das Interface
Trainablebesitzttrick(). Papageien (Polly says hello) und Robben (Sammy balances a ball) sind trainierbar; Löwen nicht. - Die Erweiterung
List<Animal>.foodTotals()gibt die Grammzahl pro Futter zurück, wobei die Futtersorten alphabetisch geordnet sind:fish 4000, meat 5700. showLineup(animals)gibt mithilfe einer Typprüfung die Tricks der trainierbaren Tiere in ihrer Reihenfolge zurück oderno show, wenn es keine gibt.
Der bereitgestellte Code liest die Zeilen lion,Leo,190, parrot,Polly,1 oder seal,Sammy,100 ein und gibt jedes line() aus, danach food: mit den Summen sowie eine show: -Zeile pro zurückgegebenem Trick.
Dein Code gehört in Animal.kt, Trainable.kt, Lion.kt, Parrot.kt, Seal.kt und Functions.kt. Main.kt enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.
Probier es selbst
fun main() {
// Bereitgestellter Ein-/Ausgabe-Code: belasse ihn wie er ist
val input = generateSequence(::readLine).toList()
val animals = input.map { line ->
val (kind, name, kg) = line.split(",")
when (kind) {
"lion" -> Lion(name, kg.toInt())
"parrot" -> Parrot(name, kg.toInt())
else -> Seal(name, kg.toInt())
}
}
for (a in animals) println(a.line())
println("food: " + animals.foodTotals())
for (s in showLineup(animals)) println("show: $s")
}
Alle Lektionen in Objektorientierte Programmierung
1Klassen und Objekte
Arbeiten mit DateienKlassen definierenPrimärkonstruktoreninit-Blöcke und ValidierungSekundärkonstruktorenRückblick – Bibliotheksausweis4Vererbung
Offene Klassen und UnterklassenÜberschreiben von Membernsuper und KonstruktorenAbstrakte KlassenRückblick – Mitarbeiterverzeichnis2Eigenschaften und Kapselung
Benutzerdefinierte ZugriffsmethodenSichtbarkeitsmodifikatorenPrivate Setterlazy und lateinitWiederholung – Bankkonto5Schnittstellen
Schnittstellen deklarierenStandardmethodenMehrere SchnittstellenSchnittstellen als TypenRückblick – Zahlungsmethoden8Generics
Generische FunktionenGenerische KlassenTypbeschränkungenVarianz mit in und outRückblick – Prioritätswarteschlange11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihen3Objekte und Companion-Objekte
ObjektdeklarationenCompanion-ObjekteKonstanten mit constObjektausdrückeRückblick – Fahrkartenschalter6Polymorphie
Dynamisches DispatchingTypprüfungen und Smart Castswhen mit TypenErweiterungsfunktionenRückblick – ZoowärterÜbe selbstständig: Kotlin-Playground