Menu
Coddy logo textTech

Podsumowanie – opiekun zoo

Część sekcji Programowanie obiektowe ścieżki Kotlin w Coddy. Lekcja 31 z 57.

challenge icon

Wyzwanie

Średni

Zaplanuj dzień w zoo.

  • Animal(name, kg) jest klasą abstrakcyjną z abstrakcyjnymi elementami species, food i dailyGrams() oraz metodą line(), która zwraca Leo the lion: 5700 g meat.
  • Lion je mięso, 30 g na kg. Parrot je nasiona, 50 g dziennie niezależnie od swojej wagi. Seal je ryby, 40 g na kg.
  • Interfejs Trainable zawiera trick(). 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, lub no 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

Poćwicz samodzielnie: Edytor online Kotlin