Zusammenfassung – Gutscheincodes
Teil des Abschnitts Objektorientierte Programmierung der Ruby-Journey von Coddy. Lektion 16 von 57.
Aufgabe
MittelVervollständige die Klasse Coupon. Die Fabrik Coupon.parse(code) akzeptiert SAVE gefolgt von einem Prozentsatz (SAVE10) oder OFF gefolgt von einem Betrag (OFF5) und gibt für jeden anderen Code nil zurück. Prozentsätze über der Konstante MAX_PERCENT (50) werden auf 50 reduziert. Jeder von der Fabrik erstellte Coupon wird in einer Klasseninstanzvariablen gezählt, die als Coupon.issued lesbar ist; mache new privat. apply(total) gibt den rabattierten Gesamtbetrag zurück, der niemals unter 0 liegt, und to_s gibt SAVE10 (10% off) oder OFF5 (5.00 off) zurück.
Der bereitgestellte Code liest die Bestellsumme aus der ersten Zeile und aus jeder folgenden Zeile einen Code. Er gibt SAVE10 (10% off): 90.00 oder invalid code HELLO aus und schließlich issued: 2.
Dein Code gehört in coupon.rb. main.rb enthält den bereitgestellten Eingabe-/Ausgabecode und darf nicht bearbeitet werden.
Probier es selbst
require_relative 'coupon'
# Bereitgestellter Ein-/Ausgabecode: belasse ihn wie er ist
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}"
Alle Lektionen in Objektorientierte Programmierung
1Klassen und Objekte
Arbeiten mit DateienKlassen definierenInstanzvariablenMethoden und selfto_s und inspectRückblick – Bibliotheksausweis4Kapselung
Private MethodenGeschützte MethodenPrivate SetterZustand schützenRückblick – Verkaufsautomat7Polymorphismus und Duck Typing
PolymorphismusDuck TypingAbstrakte MethodenFälle und KlassenRückblick – Zahlungsmethoden2Getter und Setter sowie self
Leser und SchreiberBenutzerdefinierte Setterself in MethodenIdentität und GleichheitWiederholung – Kontaktliste5Vererbung
UnterklassenMethoden überschreibensuper aufrufenis_a? und VorfahrenRückblick – Gehaltsabrechnung des Personals8Spezielle Methoden
Gleichheit und HashOperator-MethodenIndexieren und AnhängenBenutzerdefinierte CollectionsRückblick – Brüche11Projekt: Bibliotheksverwaltung
Bücher und MitgliederBücher ausleihen3Klassenmethoden und Variablen
KlassenmethodenKlasseninstanzvariablenKonstantenFactory-MethodenZusammenfassung – GutscheincodesÜbe selbstständig: Online-Ruby-Compiler