Menu
Coddy logo textTech

Podsumowanie — karta biblioteczna

Część sekcji Programowanie obiektowe ścieżki Kotlin w Coddy. Lekcja 6 z 57.

challenge icon

Wyzwanie

Średni

Zadeklaruj klasę LibraryCard(val name: String, val limit: Int = 3). Jej blok init wymaga niepustej nazwy, która nie składa się wyłącznie z białych znaków (name is empty), oraz limitu wynoszącego co najmniej 1 (limit must be positive). Klasa przechowuje listę wypożyczonych tytułów. borrow(title) zwraca true i dodaje tytuł, chyba że karta osiągnęła limit lub ma już ten tytuł. giveBack(title) zwraca true, gdy usunęła tytuł. status() zwraca Ada: 2/3 (Dune, Emma) w kolejności wypożyczenia albo Ada: 0/3, gdy nic nie jest wypożyczone.

Dostarczony kod odczytuje nazwę, limit (lub pusty wiersz, aby użyć wartości domyślnej), a następnie polecenia +title lub -title. Dla każdego polecenia wypisuje ok lub no, a na końcu status(); w przypadku nieprawidłowej karty wypisuje komunikat o błędzie.

Umieść swój kod w pliku LibraryCard.kt. Main.kt zawiera dostarczony kod wejścia/wyjścia i nie można go edytować.

Spróbuj swoich sił

fun main() {
    // Dostarczony kod wejścia/wyjścia: pozostaw go bez zmian
    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)
    }
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Edytor online Kotlin