Menu
CoddyTech

Ringkasan: Kartu Perpustakaan

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

challenge icon

Tantangan

Sedang

Deklarasikan class LibraryCard(val name: String, val limit: Int = 3). Blok init-nya mewajibkan name yang tidak kosong (name is empty) dan limit minimal 1 (limit must be positive). Class ini menyimpan list judul yang dipinjam. borrow(title) mengembalikan true dan menambahkan judul, kecuali jika kartu sudah mencapai batas atau sudah memiliki judul tersebut. giveBack(title) mengembalikan true jika judul tersebut berhasil dihapus. status() mengembalikan Ada: 2/3 (Dune, Emma) sesuai urutan peminjaman, atau Ada: 0/3 jika tidak ada yang dipinjam.

Kode yang disediakan membaca name, limit (atau baris kosong untuk menggunakan nilai default), lalu perintah +title atau -title. Kode tersebut mencetak ok atau no untuk setiap perintah, lalu mencetak status(); jika kartu tidak valid, kode tersebut mencetak pesan error.

Tulis kodemu di LibraryCard.kt. Main.kt berisi kode input/output yang disediakan dan tidak dapat diedit.

Coba sendiri

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

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Playground Kotlin