Revisão - Cuidador do zoológico
Parte da seção Programação Orientada a Objetos do Journey de Kotlin da Coddy. Lição 31 de 57.
Desafio
MédioPlaneje um dia no zoológico.
Animal(name, kg)é abstrata, com os membros abstratosspecies,foodedailyGrams(), e um métodoline()que retornaLeo the lion: 5700 g meat.Lioncome carne, 30 g por kg.Parrotcome sementes, 50 g por dia, independentemente de quanto pesa.Sealcome peixe, 40 g por kg.- A interface
Trainabletemtrick(). Papagaios (Polly says hello) e focas (Sammy balances a ball) podem ser treinados; leões não. - A extensão
List<Animal>.foodTotals()retorna os gramas por alimento, com os alimentos em ordem alfabética:fish 4000, meat 5700. showLineup(animals)retorna os truques dos animais treináveis na ordem, usando uma verificação de tipo, ouno showquando não houver nenhum.
O código fornecido lê linhas lion,Leo,190, parrot,Polly,1 ou seal,Sammy,100 e imprime cada line(), depois food: com os totais e uma linha show: para cada truque retornado.
Seu código deve ser colocado em Animal.kt, Trainable.kt, Lion.kt, Parrot.kt, Seal.kt e Functions.kt. Main.kt contém o código fornecido de entrada/saída e não pode ser editado.
Experimente você mesmo
fun main() {
// Código de entrada/saída fornecido: mantenha-o 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 as lições de Programação Orientada a Objetos
1Classes e Objetos
Trabalhando com ArquivosDefinindo ClassesConstrutores PrimáriosBlocos init e ValidaçãoConstrutores SecundáriosRecapitulação - Cartão da Biblioteca4Herança
Classes Abertas e SubclassesSobrescrevendo Membrossuper e ConstrutoresClasses AbstratasRevisão - Diretório de Funcionários2Propriedades e Encapsulamento
Acessores PersonalizadosModificadores de VisibilidadeSetters Privadoslazy e lateinitRevisão - Conta Bancária5Interfaces
Declarando InterfacesMétodos PadrãoMúltiplas InterfacesInterfaces como TiposRecapitulação - Métodos de Pagamento8Genéricos
Funções genéricasClasses genéricasRestrições de tipoVariância com in e outRecapitulação - Fila de prioridade11Projeto: Gerenciamento de Biblioteca
Livros e MembrosEmpréstimo de Livros3Objetos e Companheiros
Declarações de ObjetosObjetos CompanionConstantes com constExpressões de ObjetosRevisão - Bilheteria6Polimorfismo
Despacho dinâmicoVerificações de tipo e smart castswhen com tiposFunções de extensãoRevisão - Cuidador do zoológicoPratique por conta própria: Playground de Kotlin