Podsumowanie – opiekun zoo
Część sekcji Programowanie obiektowe ścieżki Kotlin w Coddy. Lekcja 31 z 57.
Wyzwanie
ŚredniZaplanuj dzień w zoo.
Animal(name, kg)jest klasą abstrakcyjną z abstrakcyjnymi elementamispecies,foodidailyGrams()oraz metodąline(), która zwracaLeo the lion: 5700 g meat.Lionje mięso, 30 g na kg.Parrotje nasiona, 50 g dziennie niezależnie od swojej wagi.Sealje ryby, 40 g na kg.- Interfejs
Trainablezawieratrick(). Papugi (Polly says hello) i foki (Sammy balances a ball) można trenować; lwów nie. - Funkcja rozszerzająca
List<Animal>.foodTotals()zwraca liczbę gramów dla każdego rodzaju jedzenia, w kolejności alfabetycznej:fish 4000, meat 5700. showLineup(animals)zwraca sztuczki trenowanych zwierząt w kolejności, używając sprawdzenia typu, lubno show, gdy nie ma żadnych.
Dostarczony kod odczytuje wiersze lion,Leo,190, parrot,Polly,1 lub seal,Sammy,100 i wypisuje każdy line(), a następnie food: z podsumowaniami oraz po jednym wierszu show: dla każdej zwróconej sztuczki.
Twój kod umieść w plikach Animal.kt, Trainable.kt, Lion.kt, Parrot.kt, Seal.kt i Functions.kt. Main.kt zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.
Spróbuj swoich sił
fun main() {
// Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
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")
}
Wszystkie lekcje w sekcji Programowanie obiektowe
1Klasy i obiekty
Praca z plikamiDefiniowanie klasKonstruktory główneBloki init i walidacjaKonstruktory dodatkowePodsumowanie — karta biblioteczna4Dziedziczenie
Klasy otwarte i podklasyNadpisywanie składowychsuper i konstruktoryKlasy abstrakcyjnePodsumowanie – katalog pracowników7Klasy specjalne
Klasy danychKlasy wyliczenioweHierarchie zapieczętowaneequals, hashCode, toStringPodsumowanie — śledzenie zamówień10Wzorce projektowe, część 2
Delegowanie za pomocą byWzorzec dekoratoraWzorzec budowniczegoWzorzec stanu2Właściwości i hermetyzacja
Własne akcesoryModyfikatory widocznościPrywatne setterylazy i lateinitPowtórka – konto bankowe5Interfejsy
Deklarowanie interfejsówMetody domyślneWiele interfejsówInterfejsy jako typyPowtórzenie – metody płatności8Typy generyczne
Funkcje generyczneKlasy generyczneOgraniczenia typówKowariancja i kontrawariancja: in i outPodsumowanie — kolejka priorytetowa11Projekt: Zarządzanie biblioteką
Książki i czytelnicyWypożyczanie książek3Obiekty i obiekty towarzyszące
Deklaracje obiektówObiekty towarzysząceStałe z constWyrażenia obiektowePowtórzenie — kasa biletowa6Polimorfizm
Dynamiczne wiązanieSprawdzanie typów i inteligentne rzutowaniewhen z typamiFunkcje rozszerzającePodsumowanie – opiekun zooPoćwicz samodzielnie: Edytor online Kotlin