Récapitulatif - Carte de bibliothèque
Fait partie de la section Programmation orientée objet du Journey Ruby de Coddy. Leçon 6 sur 57.
Défi
MoyenComplétez la classe LibraryCard. initialize(name, limit = 3) enregistre le nom et la limite d’emprunt, et commence sans aucun titre emprunté. borrow(title) renvoie true et ajoute le titre, sauf si la carte a atteint sa limite ou contient déjà ce titre, auquel cas elle renvoie false. give_back(title) renvoie true lorsqu’elle a supprimé le titre. to_s renvoie Ada: 2/3 (Dune, Emma) avec les titres dans l’ordre d’emprunt, ou Ada: 0/3 lorsqu’aucun titre n’est emprunté.
Le code fourni lit le nom et la limite (- pour la valeur par défaut), puis les commandes +title ou -title. Il affiche ok ou no pour chaque commande, puis enfin la carte.
Votre code doit être placé dans library_card.rb. main.rb contient le code fourni pour les entrées et sorties et ne peut pas être modifié.
Essayez vous-même
require_relative 'library_card'
# Code d'entrée/sortie fourni : le laisser tel quel
input = []
while (line = gets)
input << line.chomp
end
card = input[1] == "-" ? LibraryCard.new(input[0]) : LibraryCard.new(input[0], input[1].to_i)
input.drop(2).each do |cmd|
title = cmd[1..]
done = cmd.start_with?("+") ? card.borrow(title) : card.give_back(title)
puts done ? "ok" : "no"
end
puts card
Toutes les leçons de Programmation orientée objet
1Classes et objets
Travailler avec des fichiersDéfinir des classesVariables d’instanceMéthodes et selfto_s et inspectRécapitulatif - Carte de bibliothèque4Encapsulation
Méthodes privéesMéthodes protégéesSetters privésProtéger l’étatRécapitulatif - Distributeur automatique7Polymorphisme et typage canard
PolymorphismeTypage canardMéthodes abstraitesCas et classesRécapitulatif - méthodes de paiement10Patrons de conception – Partie 2
Délégation avec ForwardablePatron DécorateurPatron BuilderPatron État2Accesseurs et self
Lecteurs et écrivainsSetters personnalisésself dans les méthodesIdentité et égalitéRécapitulatif - Liste de contacts5Héritage
Sous-classesRedéfinition des méthodesAppeler superis_a? et ancêtresRécapitulatif - Paie du personnel8Méthodes spéciales
Égalité et hachageMéthodes d’opérateursIndexation et ajoutCollections personnaliséesRécapitulatif - Fractions11Projet : Gestion de bibliothèque
Livres et membresEmprunter des livresEntraînez-vous par vous-même : Compilateur Ruby en ligne