Menu
Coddy logo textTech

Récapitulatif - Carte de bibliothèque

Fait partie de la section Programmation orientée objet du Journey Kotlin de Coddy. Leçon 6 sur 57.

challenge icon

Défi

Moyen

Déclare la classe LibraryCard(val name: String, val limit: Int = 3). Son bloc init exige un nom non vide (name is empty) et une limite d’au moins 1 (limit must be positive). Elle conserve une liste des titres empruntés. borrow(title) renvoie true et ajoute le titre, sauf si la carte a atteint sa limite ou le possède déjà. giveBack(title) renvoie true lorsqu’il a supprimé le titre. status() renvoie Ada: 2/3 (Dune, Emma) dans l’ordre d’emprunt, ou Ada: 0/3 lorsqu’aucun titre n’est emprunté.

Le code fourni lit le nom, la limite (ou une ligne vide pour la valeur par défaut), puis les commandes +title ou -title. Il affiche ok ou no pour chaque commande, puis finalement status() ; une carte invalide affiche le message d’erreur à la place.

Ton code doit être placé dans LibraryCard.kt. Main.kt contient le code fourni pour les entrées et sorties et ne peut pas être modifié.

Essayez vous-même

fun main() {
    // Code d'entrée/sortie fourni : le laisser tel quel
    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)
    }
}

Toutes les leçons de Programmation orientée objet

Entraînez-vous par vous-même : Playground Kotlin