Riepilogo - Tessera della biblioteca
Fa parte della sezione Programmazione orientata agli oggetti del percorso Kotlin di Coddy. Lezione 6 di 57.
Sfida
MedioDichiara la classe LibraryCard(val name: String, val limit: Int = 3). Il suo blocco init richiede un nome non vuoto (name is empty) e un limite di almeno 1 (limit must be positive). Mantiene un elenco dei titoli presi in prestito. borrow(title) restituisce true e aggiunge il titolo, a meno che la scheda non abbia raggiunto il limite o non lo contenga già. giveBack(title) restituisce true quando rimuove il titolo. status() restituisce Ada: 2/3 (Dune, Emma) nell’ordine in cui sono stati presi in prestito, oppure Ada: 0/3 quando non è stato preso in prestito nulla.
Il codice fornito legge il nome, il limite (oppure una riga vuota per usare il valore predefinito) e poi i comandi +title o -title. Stampa ok o no per ogni comando e infine status(); se la scheda non è valida, stampa invece il messaggio di errore.
Il tuo codice va inserito in LibraryCard.kt. Main.kt contiene il codice fornito per l’input/output e non può essere modificato.
Provalo tu
fun main() {
// Codice di input/output fornito: lascialo così com'è
val input = generateSequence(::readLine).toList()
try {
val card = if (input[1].isEmpty()) LibraryCard(input[0]) else LibraryCard(input[0], input[1].toInt())
for (cmd in input.drop(2)) {
val title = cmd.drop(1)
val done = if (cmd.startsWith("+")) card.borrow(title) else card.giveBack(title)
println(if (done) "ok" else "no")
}
println(card.status())
} catch (e: IllegalArgumentException) {
println(e.message)
}
}
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 libriEsercitati da solo: Playground Kotlin