Récapitulatif - Gardien de zoo
Fait partie de la section Programmation orientée objet du Journey Kotlin de Coddy. Leçon 31 sur 57.
Défi
MoyenPlanifiez une journée au zoo.
Animal(name, kg)est abstraite et possède les membres abstraitsspecies,foodetdailyGrams(), ainsi qu’une méthodeline()qui renvoieLeo the lion: 5700 g meat.Lionmange de la viande, à raison de 30 g par kg.Parrotmange des graines, 50 g par jour quel que soit son poids.Sealmange du poisson, à raison de 40 g par kg.- L’interface
Trainablepossèdetrick(). Les perroquets (Polly says hello) et les phoques (Sammy balances a ball) sont entraînables ; les lions ne le sont pas. - L’extension
List<Animal>.foodTotals()renvoie les grammes par aliment, les aliments étant classés par ordre alphabétique :fish 4000, meat 5700. showLineup(animals)renvoie les tours des animaux entraînables dans l’ordre, en utilisant une vérification de type, ouno showlorsqu’il n’y en a aucun.
Le code fourni lit les lignes lion,Leo,190, parrot,Polly,1 ou seal,Sammy,100 et affiche chaque line(), puis food: avec les totaux et une ligne show: pour chaque tour renvoyé.
Votre code doit être placé dans Animal.kt, Trainable.kt, Lion.kt, Parrot.kt, Seal.kt et Functions.kt. Main.kt contient le code d’entrée/sortie fourni et ne peut pas être modifié.
Essayez vous-même
fun main() {
// Code d'entrée/sortie fourni : le garder tel quel
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")
}
Toutes les leçons de Programmation orientée objet
1Classes et objets
Travailler avec des fichiersDéfinir des classesConstructeurs primairesBlocs init et validationConstructeurs secondairesRécapitulatif - Carte de bibliothèque4Héritage
Classes ouvertes et sous-classesRedéfinition des membressuper et constructeursClasses abstraitesRécapitulatif – Annuaire du personnel2Propriétés et encapsulation
Accesseurs personnalisésModificateurs de visibilitéSetters privéslazy et lateinitRécapitulatif - Compte bancaire5Interfaces
Déclarer des interfacesMéthodes par défautInterfaces multiplesInterfaces en tant que typesRécapitulatif - Méthodes de paiement8Génériques
Fonctions génériquesClasses génériquesContraintes de typeVariance avec in et outRécapitulatif - File de priorité11Projet : Gestion de bibliothèque
Livres et membresEmprunter des livres3Objets et compagnons
Déclarations d’objetsObjets compagnonsConstantes avec constExpressions d’objetsRécapitulatif – Billetterie6Polymorphisme
Dispatch dynamiqueVérifications de types et smart castswhen avec des typesFonctions d’extensionRécapitulatif - Gardien de zooEntraînez-vous par vous-même : Playground Kotlin