Menu
Coddy logo textTech

Ripasso - Custode dello zoo

Fa parte della sezione Programmazione orientata agli oggetti del percorso Kotlin di Coddy. Lezione 31 di 57.

challenge icon

Sfida

Medio

Pianifica una giornata allo zoo.

  • Animal(name, kg) è astratta e ha i membri astratti species, food e dailyGrams(), oltre a un metodo line() che restituisce Leo the lion: 5700 g meat.
  • Lion mangia carne, 30 g per kg. Parrot mangia semi, 50 g al giorno indipendentemente dal suo peso. Seal mangia pesce, 40 g per kg.
  • L'interfaccia Trainable ha trick(). I pappagalli (Polly says hello) e le foche (Sammy balances a ball) sono addestrabili; i leoni no.
  • L'estensione List<Animal>.foodTotals() restituisce i grammi per alimento, con gli alimenti in ordine alfabetico: fish 4000, meat 5700.
  • showLineup(animals) restituisce, nell'ordine, i numeri degli animali addestrabili, usando un controllo del tipo, oppure no show se non ce ne sono.

Il codice fornito legge righe lion,Leo,190, parrot,Polly,1 oppure seal,Sammy,100 e stampa ogni line(), poi food: con i totali e una riga show: per ogni numero restituito.

Il tuo codice va in Animal.kt, Trainable.kt, Lion.kt, Parrot.kt, Seal.kt e Functions.kt. Main.kt contiene il codice di input/output fornito e non può essere modificato.

Provalo tu

fun main() {
    // Código de entrada/salida proporcionado: mantenlo tal como está
    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")
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Playground Kotlin