Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - بطاقة المكتبة

جزء من قسم البرمجة كائنية التوجه في رحلة Ruby على Coddy. الدرس 6 من 57.

challenge icon

التحدي

متوسط

أكمل الصنف LibraryCard. تقوم initialize(name, limit = 3) بتخزين الاسم وحدّ الإعارة، وتبدأ دون أي عناوين مُعارة. تُرجع borrow(title) القيمة true وتضيف العنوان، ما لم تكن البطاقة قد بلغت حدّها أو كانت تحتوي على ذلك العنوان بالفعل، وفي هذه الحالة تُرجع false. تُرجع give_back(title) القيمة true عند إزالة العنوان. تُرجع to_s القيمة Ada: 2/3 (Dune, Emma) مع العناوين بترتيب استعارتها، أو Ada: 0/3 عندما لا يكون هناك شيء مُعار.

يقرأ الكود المُزوَّد الاسم والحدّ (- للقيمة الافتراضية)، ثم يقرأ الأوامر +title أو -title. ويطبع ok أو no لكل أمر، ثم يطبع البطاقة في النهاية.

ضع الكود الخاص بك في library_card.rb. يحتوي main.rb على كود الإدخال/الإخراج المُزوَّد ولا يمكن تعديله.

جرّب بنفسك

require_relative 'library_card'

# كود الإدخال/الإخراج المُزوَّد: أبقِه كما هو
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

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم Ruby عبر الإنترنت