Menu
Coddy logo textTech

Ripasso - Conto bancario

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

challenge icon

Sfida

Medio

Completa la classe BankAccount(val owner: String, opening: Int). Il suo blocco init richiede un proprietario non vuoto (owner is empty) e un deposito iniziale non negativo (opening must not be negative). balance ha un setter privato. Le transazioni sono conservate in una MutableList privata ed esposte come val transactions: List<String>. deposit(amount) e withdraw(amount) restituiscono true in caso di successo: gli importi inferiori a 1 vengono rifiutati e un prelievo superiore al saldo viene rifiutato; le modifiche effettuate con successo vengono registrate come +50 o -20. statement() restituisce Ada: 30 (+50, -20) oppure Ada: 0 (no transactions).

Il codice fornito legge il proprietario e il deposito iniziale (name,amount), quindi i comandi d n o w n. Stampa refused per i comandi non riusciti e infine il rendiconto; per un conto non valido stampa il messaggio di errore.

Il tuo codice va inserito in BankAccount.kt. Main.kt contiene il codice di input/output fornito e non può essere modificato.

Provalo tu

fun main() {
    // Código de entrada/salida proporcionado: mantenlo tal como está
    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)
    }
}

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Playground Kotlin