Menu
Coddy logo textTech

Tekrar - Banka Hesabı

Coddy'nin Kotlin Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 11 / 57.

challenge icon

Görev

Orta

BankAccount(val owner: String, opening: Int) sınıfını tamamla. Sınıfın init bloğu boşluk içermeyen bir sahip (owner is empty) ve negatif olmayan bir başlangıç bakiyesi (opening must not be negative) gerektirir. balance özelliğinin setter'ı özeldir. İşlemler özel bir MutableList içinde tutulur ve val transactions: List<String> olarak dışa sunulur. deposit(amount) ve withdraw(amount) başarılı olduklarında true döndürür: 1'in altındaki miktarlar reddedilir ve bakiyeden büyük bir çekim reddedilir; başarılı değişiklikler +50 veya -20 olarak kaydedilir. statement(), Ada: 30 (+50, -20) veya Ada: 0 (no transactions) döndürür.

Sağlanan kod, sahibin adını ve başlangıç bakiyesini (name,amount), ardından d n veya w n komutlarını okur. Başarısız komutlar için refused yazdırır ve son olarak hesap özetini yazdırır; geçersiz bir hesap için hata mesajını yazdırır.

Kodun BankAccount.kt dosyasına yazılmalıdır. Main.kt sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.

Kendin dene

fun main() {
    // Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
    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)
    }
}

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Kotlin playground