Repaso: cuidador del zoológico
Parte de la sección Programación orientada a objetos del Journey de Kotlin de Coddy. Lección 31 de 57.
Desafío
IntermedioPlanifica un día en el zoológico.
Animal(name, kg)es abstracta y tiene los miembros abstractosspecies,foodydailyGrams(), además de un métodoline()que devuelveLeo the lion: 5700 g meat.Lioncome carne, 30 g por kg.Parrotcome semillas, 50 g al día independientemente de cuánto pese.Sealcome pescado, 40 g por kg.- La interfaz
Trainabletienetrick(). Los loros (Polly says hello) y las focas (Sammy balances a ball) se pueden entrenar; los leones no. - La extensión
List<Animal>.foodTotals()devuelve los gramos por alimento, con los alimentos en orden alfabético:fish 4000, meat 5700. showLineup(animals)devuelve los trucos de los animales entrenables en orden, usando una comprobación de tipo, ono showcuando no hay ninguno.
El código proporcionado lee las líneas lion,Leo,190, parrot,Polly,1 o seal,Sammy,100 e imprime cada line(), después food: con los totales y una línea show: por cada truco devuelto.
Tu código va en Animal.kt, Trainable.kt, Lion.kt, Parrot.kt, Seal.kt y Functions.kt. Main.kt contiene el código proporcionado de entrada/salida y no se puede editar.
Pruébalo tú mismo
fun main() {
// Código de entrada/salida suministrado: déjalo 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")
}
Todas las lecciones de Programación orientada a objetos
1Clases y objetos
Trabajar con archivosDefinir clasesConstructores primariosBloques init y validaciónConstructores secundariosRepaso - Tarjeta de biblioteca4Herencia
Clases abiertas y subclasesSobrescritura de miembrossuper y constructoresClases abstractasRepaso: directorio del personal2Propiedades y encapsulación
Accesores personalizadosModificadores de visibilidadSetters privadoslazy y lateinitRepaso: cuenta bancaria5Interfaces
Declaración de interfacesMétodos predeterminadosInterfaces múltiplesInterfaces como tiposRepaso: métodos de pago8Genéricos
Funciones genéricasClases genéricasRestricciones de tiposVariancia con in y outRepaso - Cola de prioridad11Proyecto: Gestión de biblioteca
Libros y miembrosPréstamo de libros3Objetos y complementos
Declaraciones de objetosObjetos complementariosConstantes con constExpresiones de objetosRepaso: taquilla6Polimorfismo
Despacho dinámicoComprobaciones de tipos y conversiones inteligenteswhen con tiposFunciones de extensiónRepaso: cuidador del zoológicoPractica por tu cuenta: Playground de Kotlin