סיכום – קודי קופון
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Ruby של Coddy. שיעור 16 מתוך 57.
אתגר
בינוניהשלימו את המחלקה Coupon. מפעל היצירה Coupon.parse(code) מקבל את SAVE ואחריו אחוז (SAVE10) או את OFF ואחריו סכום (OFF5), ומחזיר nil עבור כל קוד אחר. אחוזים מעל הקבוע MAX_PERCENT (50) מופחתים ל־50. כל קופון שמפעל היצירה יוצר נספר במשתנה מופע של מחלקה, שאפשר לקרוא באמצעות Coupon.issued; הפכו את new לפרטי. apply(total) מחזירה את הסכום לאחר ההנחה, שלעולם אינו קטן מ־0, ו־to_s מחזירה SAVE10 (10% off) או OFF5 (5.00 off).
הקוד שסופק קורא את הסכום הכולל של ההזמנה מהשורה הראשונה, וקוד אחד מכל שורה שאחריה. הוא מדפיס SAVE10 (10% off): 90.00 או invalid code HELLO, ולבסוף issued: 2.
כתבו את הקוד שלכם בקובץ coupon.rb. הקובץ main.rb מכיל את קוד הקלט/פלט שסופק ואי אפשר לערוך אותו.
נסו בעצמכם
require_relative 'coupon'
# קוד הקלט/פלט שסופק: יש להשאיר אותו כפי שהוא
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}"
כל השיעורים ביחידה תכנות מונחה עצמים
3מתודות ומשתנים של מחלקה
מתודות של מחלקהמשתני מופע של מחלקהקבועיםמתודות ליצירת מופעיםסיכום – קודי קופוןתרגלו בעצמכם: קומפיילר Ruby אונליין