Riepilogo - Codici coupon
Fa parte della sezione Programmazione orientata agli oggetti del percorso Ruby di Coddy. Lezione 16 di 57.
Sfida
MedioCompleta la classe Coupon. La factory Coupon.parse(code) accetta SAVE seguito da una percentuale (SAVE10) oppure OFF seguito da un importo (OFF5) e restituisce nil per qualsiasi altro codice. Le percentuali superiori alla costante MAX_PERCENT (50) vengono ridotte a 50. Ogni coupon creato dalla factory viene conteggiato in una variabile di istanza della classe, leggibile come Coupon.issued; rendi new privato. apply(total) restituisce il totale scontato, mai inferiore a 0, e to_s restituisce SAVE10 (10% off) oppure OFF5 (5.00 off).
Il codice fornito legge il totale dell'ordine dalla prima riga e un codice per ogni riga successiva. Stampa SAVE10 (10% off): 90.00 oppure invalid code HELLO, e infine issued: 2.
Il tuo codice va inserito in coupon.rb. main.rb contiene il codice fornito per l'input/output e non può essere modificato.
Provalo tu
require_relative 'coupon'
# Código de entrada/salida proporcionado: mantenlo tal como está
input = []
while (line = gets)
input << line.chomp
end
total = input[0].to_f
input.drop(1).each do |code|
coupon = Coupon.parse(code)
if coupon
puts format("%s: %.2f", coupon, coupon.apply(total))
else
puts "invalid code #{code}"
end
end
puts "issued: #{Coupon.issued}"
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 libri3Metodi e variabili di classe
Metodi di classeVariabili di istanza della classeCostantiMetodi factoryRiepilogo - Codici couponEsercitati da solo: Compilatore Ruby online