مراجعة - رموز القسائم
جزء من قسم البرمجة كائنية التوجه في رحلة 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}"
جميع دروس البرمجة كائنية التوجه
1الفئات والكائنات
العمل مع الملفاتتعريف الفئاتمتغيرات النسخةالأساليب و selfto_s و inspectمراجعة - بطاقة المكتبة7تعدد الأشكال والكتابة بأسلوب البطة
تعدد الأشكالالكتابة بأسلوب البطةالأساليب المجردةالحالات والفئاتمراجعة - طرق الدفع3أساليب ومتغيرات الأصناف
أساليب الأصنافمتغيرات كائنات الأصنافالثوابتأساليب الإنشاءمراجعة - رموز القسائمتدرّب بنفسك: مترجم Ruby عبر الإنترنت