Menu
CoddyTech

Ringkasan: Rekening Bank

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Kotlin di Coddy. Pelajaran 11 dari 57.

challenge icon

Tantangan

Sedang

Lengkapi class BankAccount(val owner: String, opening: Int). Blok init-nya mengharuskan owner tidak kosong (owner is empty) dan setoran awal tidak negatif (opening must not be negative). balance memiliki setter privat. Transaksi disimpan dalam MutableList privat dan ditampilkan sebagai val transactions: List<String>. deposit(amount) dan withdraw(amount) mengembalikan true jika berhasil: jumlah di bawah 1 ditolak, dan penarikan yang melebihi saldo ditolak; perubahan yang berhasil dicatat sebagai +50 atau -20. statement() mengembalikan Ada: 30 (+50, -20) atau Ada: 0 (no transactions).

Kode yang disediakan membaca owner dan setoran awal (name,amount), lalu perintah d n atau w n. Kode tersebut mencetak refused untuk perintah yang gagal, lalu mencetak statement; akun yang tidak valid akan mencetak pesan error.

Masukkan kodemu ke BankAccount.kt. Main.kt berisi kode input/output yang disediakan dan tidak boleh diedit.

Coba sendiri

fun main() {
    // Kode input/output yang disediakan: biarkan apa adanya
    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)
    }
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Playground Kotlin