Menu
Coddy logo textTech

Rückblick – Bibliotheksausweis

Teil des Abschnitts Objektorientierte Programmierung der Kotlin-Journey von Coddy. Lektion 6 von 57.

challenge icon

Aufgabe

Mittel

Deklariere die Klasse LibraryCard(val name: String, val limit: Int = 3). Ihr init-Block verlangt einen nicht leeren Namen (name is empty) und ein Limit von mindestens 1 (limit must be positive). Sie verwaltet eine Liste ausgeliehener Titel. borrow(title) gibt true zurück und fügt den Titel hinzu, es sei denn, die Karte hat ihr Limit erreicht oder enthält ihn bereits. giveBack(title) gibt true zurück, wenn der Titel entfernt wurde. status() gibt Ada: 2/3 (Dune, Emma) in der Reihenfolge der Ausleihen zurück oder Ada: 0/3, wenn nichts ausgeliehen ist.

Der bereitgestellte Code liest den Namen, das Limit (oder eine leere Zeile für den Standardwert) und anschließend Befehle +title oder -title. Für jeden Befehl gibt er ok oder no aus und anschließend status(); bei einer ungültigen Karte wird stattdessen die Fehlermeldung ausgegeben.

Dein Code gehört in LibraryCard.kt. Main.kt enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.

Probier es selbst

fun main() {
    // Gelieferter Ein-/Ausgabe-Code: belasse ihn wie er ist
    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)
    }
}

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Kotlin-Playground