Ô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.
Thử thách
Trung bìnhLê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ượngspecies,foodvàdailyGrams(), cùng phương thứcline()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
Trainablecó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 shownế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
1Lớp và đối tượng
Làm việc với tệpĐịnh nghĩa lớpHàm khởi tạo chínhKhối init và kiểm tra tính hợp lệHàm khởi tạo phụÔn tập: thẻ thư viện4Kế thừa
Lớp mở và lớp conGhi đè thành viênsuper và hàm khởi tạoLớp trừu tượngÔn tập: Danh bạ nhân viên2Thuộc tính và tính đóng gói
Trình truy cập tùy chỉnhBộ sửa đổi phạm vi truy cậpSetter riêng tưlazy và lateinitÔn tập: tài khoản ngân hàng5Giao diện
Khai báo giao diệnPhương thức mặc địnhNhiều giao diệnGiao diện như kiểu dữ liệuÔn tập: Phương thức thanh toán3Đối tượng và đối tượng đồng hành
Khai báo đối tượngĐối tượng đồng hànhHằng số với constBiểu thức đối tượngÔn tập: Phòng bán vé6Tính đa hình
Gọi phương thức độngKiểm tra kiểu và ép kiểu thông minhwhen với kiểu dữ liệuHàm mở rộngÔn tập: Người chăm sóc sở thúTự luyện tập: Playground Kotlin