Menu
CoddyTech

Ôn tập: Người chăm sóc sở thú

Thuộc phần Lập trình hướng đối tượng trong hành trình Kotlin của Coddy. Bài học 31 trên 57.

challenge icon

Thử thách

Trung bình

Lên kế hoạch cho một ngày ở sở thú.

  • Animal(name, kg) là lớp trừu tượng với các thành phần trừu tượng species, food và dailyGrams(), cùng phương thức line() trả về Leo the lion: 5700 g meat.
  • Lion ăn thịt, 30 g trên mỗi kg. Parrot ăn hạt, 50 g mỗi ngày bất kể cân nặng. Seal ăn cá, 40 g trên mỗi kg.
  • Giao diện Trainable có trick(). Vẹt (Polly says hello) và hải cẩu (Sammy balances a ball) có thể được huấn luyện; sư tử thì không.
  • Hàm mở rộng List<Animal>.foodTotals() trả về số gam của từng loại thức ăn, theo thứ tự bảng chữ cái: fish 4000, meat 5700.
  • showLineup(animals) trả về các trò biểu diễn của những con vật có thể được huấn luyện theo đúng thứ tự, bằng cách kiểm tra kiểu dữ liệu, hoặc trả về no show nếu không có con vật nào.

Code được cung cấp đọc các dòng lion,Leo,190, parrot,Polly,1 hoặc seal,Sammy,100 và in ra từng line(), sau đó in food: cùng tổng lượng thức ăn và một dòng show: cho mỗi trò biểu diễn được trả về.

Code của bạn nằm trong Animal.kt, Trainable.kt, Lion.kt, Parrot.kt, Seal.kt và Functions.kt. Main.kt chứa code đầu vào/đầu ra được cung cấp và bạn không thể chỉnh sửa tệp này.

Tự làm thử

fun main() {
    // Đoạn code đầu vào/đầu ra đã cho: giữ nguyê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")
}

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Playground Kotlin