Menu
Coddy logo textTech

Tekrar - Kütüphane Kartı

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

challenge icon

Görev

Orta

LibraryCard(val name: String, val limit: Int = 3) sınıfını tanımlayın. init bloğu boş olmayan bir ad (name is empty) ve en az 1 değerinde bir limit (limit must be positive) gerektirir. Ödünç alınan başlıkların bir listesini tutar. borrow(title), kart limitine ulaşmadığı ve başlığı zaten içermediği sürece true döndürür ve başlığı ekler. giveBack(title), başlığı kaldırdığında true döndürür. status(), ödünç alma sırasına göre Ada: 2/3 (Dune, Emma) veya hiçbir şey ödünç alınmadığında Ada: 0/3 döndürür.

Sağlanan kod adı, limiti (veya varsayılan değer için boş bir satırı) ve ardından +title ya da -title komutlarını okur. Her komut için ok veya no yazdırır ve son olarak status() çağrısını yazdırır; geçersiz bir kart yerine hata mesajını yazdırır.

Kodunuz LibraryCard.kt dosyasına gitmelidir. 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 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)
    }
}

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

Kendi başına pratik yap: Kotlin playground