Menu
Coddy logo textTech

Powtórka – konto bankowe

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

challenge icon

Wyzwanie

Średni

Uzupełnij klasę BankAccount(val owner: String, opening: Int). Jej blok init wymaga niepustego właściciela (owner is empty) i nieujemnej wpłaty początkowej (opening must not be negative). balance ma prywatny setter. Transakcje są przechowywane na prywatnej liście MutableList i udostępniane jako val transactions: List<String>. deposit(amount) i withdraw(amount) zwracają true w przypadku powodzenia: kwoty mniejsze niż 1 są odrzucane, a wypłata większa niż saldo jest odrzucana; pomyślne zmiany są zapisywane jako +50 lub -20. statement() zwraca Ada: 30 (+50, -20) lub Ada: 0 (no transactions).

Dostarczony kod odczytuje właściciela i wpłatę początkową (name,amount), a następnie polecenia d n lub w n. W przypadku nieudanych poleceń wypisuje refused, a na końcu zestawienie; w przypadku nieprawidłowego konta wypisuje komunikat o błędzie.

Twój kod umieść w pliku BankAccount.kt. Plik 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 (name, amount) = input[0].split(",")
        val account = BankAccount(name, amount.toInt())
        for (cmd in input.drop(1)) {
            val (op, n) = cmd.split(" ")
            val ok = if (op == "d") account.deposit(n.toInt()) else account.withdraw(n.toInt())
            if (!ok) println("refused")
        }
        println(account.statement())
    } catch (e: IllegalArgumentException) {
        println(e.message)
    }
}

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Edytor online Kotlin