Menu
Coddy logo textTech

Özet - Hayvanat Bahçesi Görevlisi

Coddy'nin Kotlin Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 31 / 57.

challenge icon

Görev

Orta

Hayvanat bahçesinde bir gün planla.

  • Animal(name, kg), species, food ve dailyGrams() soyut üyelerine ve Leo the lion: 5700 g meat değerini döndüren line() yöntemine sahip soyut bir sınıftır.
  • Lion et yer, kilogram başına 30 g. Parrot tohum yer; ağırlığı ne olursa olsun günde 50 g. Seal balık yer, kilogram başına 40 g.
  • Trainable arayüzünde trick() bulunur. Papağanlar (Polly says hello) ve foklar (Sammy balances a ball) eğitilebilir; aslanlar eğitilemez.
  • List<Animal>.foodTotals(), yiyeceklere göre gram miktarlarını, yiyecekler alfabetik sırada olacak şekilde döndürür: fish 4000, meat 5700.
  • showLineup(animals), bir tür denetimi kullanarak eğitilebilir hayvanların numaralarını sırayla döndürür; hiçbiri yoksa no show döndürür.

Verilen kod, lion,Leo,190, parrot,Polly,1 veya seal,Sammy,100 satırlarını okur ve her line() sonucunu yazdırır; ardından toplamlarla birlikte food: ve döndürülen her numara için bir show: satırı yazdırır.

Kodunuzu Animal.kt, Trainable.kt, Lion.kt, Parrot.kt, Seal.kt ve Functions.kt dosyalarına yazın. Main.kt verilen girdi/çıktı kodunu içerir ve düzenlenemez.

Kendin dene

fun main() {
    // Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
    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")
}

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Kotlin playground