Menu
Coddy logo textTech

Riepilogo - Tessera della biblioteca

Fa parte della sezione Programmazione orientata agli oggetti del percorso Kotlin di Coddy. Lezione 6 di 57.

challenge icon

Sfida

Medio

Dichiara 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

Esercitati da solo: Playground Kotlin