Ripasso - Tessera della biblioteca
Fa parte della sezione Programmazione orientata agli oggetti del percorso Ruby di Coddy. Lezione 6 di 57.
Sfida
MedioCompleta la classe LibraryCard. initialize(name, limit = 3) memorizza il nome e il limite di prestiti e inizia senza titoli presi in prestito. borrow(title) restituisce true e aggiunge il titolo, a meno che la tessera non abbia raggiunto il limite o non possieda già quel titolo; in tal caso restituisce false. give_back(title) restituisce true quando rimuove il titolo. to_s restituisce Ada: 2/3 (Dune, Emma) con i titoli nell’ordine in cui sono stati presi in prestito, oppure Ada: 0/3 quando non è stato preso in prestito nulla.
Il codice fornito legge il nome e il limite (- per quello predefinito), quindi i comandi +title o -title. Stampa ok o no per ogni comando e infine la tessera.
Il tuo codice va in library_card.rb. main.rb contiene il codice di input/output fornito e non può essere modificato.
Provalo tu
require_relative 'library_card'
# Codice di input/output fornito: lascialo così com'è
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
Tutte le lezioni di Programmazione orientata agli oggetti
1Classi e oggetti
Lavorare con i fileDefinire le classiVariabili d'istanzaMetodi e selfto_s e inspectRipasso - Tessera della biblioteca4Incapsulamento
Metodi privatiMetodi protettiSetter privatiProteggere lo statoRiepilogo - Distributore automatico7Polimorfismo e Duck Typing
PolimorfismoDuck TypingMetodi astratticase e classiRiepilogo - Metodi di pagamento10Pattern di progettazione Parte 2
Delegazione con ForwardablePattern DecoratorPattern BuilderPattern State2Metodi di accesso e self
Metodi di lettura e scritturaSetter personalizzatiself nei metodiIdentità e uguaglianzaRiepilogo - Elenco contatti5Ereditarietà
SottoclassiRidefinizione dei metodiChiamare superis_a? e antenatiRiepilogo - Paghe del personale8Metodi speciali
Uguaglianza e hashMetodi degli operatoriIndicizzazione e appendCollezioni personalizzateRiepilogo - Frazioni11Progetto: Gestione della biblioteca
Libri e iscrittiPrendere in prestito i libriEsercitati da solo: Compilatore Ruby online