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.
Défi
MoyenDé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
1Classes et objets
Travailler avec des fichiersDéfinir des classesConstructeurs primairesBlocs init et validationConstructeurs secondairesRécapitulatif - Carte de bibliothèque4Héritage
Classes ouvertes et sous-classesRedéfinition des membressuper et constructeursClasses abstraitesRécapitulatif – Annuaire du personnel2Propriétés et encapsulation
Accesseurs personnalisésModificateurs de visibilitéSetters privéslazy et lateinitRécapitulatif - Compte bancaire5Interfaces
Déclarer des interfacesMéthodes par défautInterfaces multiplesInterfaces en tant que typesRécapitulatif - Méthodes de paiement8Génériques
Fonctions génériquesClasses génériquesContraintes de typeVariance avec in et outRécapitulatif - File de priorité11Projet : Gestion de bibliothèque
Livres et membresEmprunter des livresEntraînez-vous par vous-même : Playground Kotlin