Menu
Coddy logo textTech

Repaso - Tarjeta de biblioteca

Parte de la sección Programación orientada a objetos del Journey de Kotlin de Coddy. Lección 6 de 57.

challenge icon

Desafío

Intermedio

Declara la clase LibraryCard(val name: String, val limit: Int = 3). Su bloque init requiere un nombre no vacío (name is empty) y un límite de al menos 1 (limit must be positive). Mantiene una lista de títulos prestados. borrow(title) devuelve true y añade el título, a menos que la tarjeta haya alcanzado su límite o ya lo tenga. giveBack(title) devuelve true cuando elimina el título. status() devuelve Ada: 2/3 (Dune, Emma) en el orden de préstamo, o Ada: 0/3 cuando no hay nada prestado.

El código proporcionado lee el nombre, el límite (o una línea vacía para usar el valor predeterminado) y después los comandos +title o -title. Imprime ok o no para cada comando y finalmente status(); si la tarjeta no es válida, imprime el mensaje de error en su lugar.

Tu código va en LibraryCard.kt. Main.kt contiene el código proporcionado de entrada/salida y no se puede editar.

Pruébalo tú mismo

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

Todas las lecciones de Programación orientada a objetos

Practica por tu cuenta: Playground de Kotlin