Ripasso - Custode dello zoo
Fa parte della sezione Programmazione orientata agli oggetti del percorso Kotlin di Coddy. Lezione 31 di 57.
Sfida
MedioPianifica una giornata allo zoo.
Animal(name, kg)è astratta e ha i membri astrattispecies,foodedailyGrams(), oltre a un metodoline()che restituisceLeo the lion: 5700 g meat.Lionmangia carne, 30 g per kg.Parrotmangia semi, 50 g al giorno indipendentemente dal suo peso.Sealmangia pesce, 40 g per kg.- L'interfaccia
Trainablehatrick(). I pappagalli (Polly says hello) e le foche (Sammy balances a ball) sono addestrabili; i leoni no. - L'estensione
List<Animal>.foodTotals()restituisce i grammi per alimento, con gli alimenti in ordine alfabetico:fish 4000, meat 5700. showLineup(animals)restituisce, nell'ordine, i numeri degli animali addestrabili, usando un controllo del tipo, oppureno showse non ce ne sono.
Il codice fornito legge righe lion,Leo,190, parrot,Polly,1 oppure seal,Sammy,100 e stampa ogni line(), poi food: con i totali e una riga show: per ogni numero restituito.
Il tuo codice va in Animal.kt, Trainable.kt, Lion.kt, Parrot.kt, Seal.kt e Functions.kt. Main.kt contiene il codice di input/output fornito e non può essere modificato.
Provalo tu
fun main() {
// Código de entrada/salida proporcionado: mantenlo tal 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")
}
Tutte le lezioni di Programmazione orientata agli oggetti
1Classi e oggetti
Lavorare con i fileDefinire le classiCostruttori primariBlocchi init e convalidaCostruttori secondariRiepilogo - Tessera della biblioteca4Ereditarietà
Classi aperte e sottoclassiRidefinizione dei membrisuper e costruttoriClassi astratteRiepilogo - Elenco del personale2Proprietà e incapsulamento
Accessor personalizzatiModificatori di visibilitàSetter privatilazy e lateinitRipasso - Conto bancario5Interfacce
Dichiarare le interfacceMetodi predefinitiInterfacce multipleLe interfacce come tipiRiepilogo - Metodi di pagamento8Tipi generici
Funzioni genericheClassi genericheVincoli sui tipiVarianza con in e outRiepilogo - Coda con priorità11Progetto: Gestione della biblioteca
Libri e sociPrendere in prestito i libri3Oggetti e companion
Dichiarazioni di oggettiOggetti companionCostanti con constEspressioni oggettoRipasso - Biglietteria6Polimorfismo
Dispatch dinamicoControlli di tipo e smart castwhen con i tipiFunzioni di estensioneRipasso - Custode dello zooEsercitati da solo: Playground Kotlin