الدرس 8 من 10

الأصناف والكائنات

هدف الدرس

initialize و attr و to_s

01

الشرح

الصنف قالب تصنع منه كائنات لكلٍّ منها بياناته. Product.new("قهوة", 12) تُنشئ كائنًا وتستدعي initialize بالوسائط نفسها، وفيها تُحفظ البيانات في متغيّرات الكائن: @name = name. العلامة @ تجعل المتغيّر يعيش مع الكائن لا مع الطريقة.

ومتغيّرات الكائن مخفية عن الخارج. attr_reader :name تكتب لك طريقة قراءة، وattr_accessor :stock قراءة وكتابة معًا. اختر الأضيق: السعر يُقرأ ولا يُعدَّل من الخارج، أما المخزون فيتغيّر. وto_s هي ما تستدعيه puts والإقحام لعرض الكائن؛ بدونها تطبع puts product شيئًا مثل #<Product:0x000…>.

والفخّ داخل الطرق: stock += qty بلا self. لا تمسّ المخزون، بل تُنشئ متغيّرًا محليًّا اسمه stock قيمته nil، فتنهار الطريقة. للكتابة استعمل @stock أو self.stock =.

02

المطلوب

عرّف صنف Product يُنشأ بـ Product.new(name, price, stock = 0)، وname وprice فيه للقراءة فقط وstock للقراءة والكتابة. وأضف in_stock? تُرجع true إن كان المخزون أكبر من صفر، وrestock(qty) تزيده، وto_s تُرجع الاسم والسعر بالشكل "قهوة — 12 ر.س".

معايير التصحيح

6 معايير
  1. Product.new يحفظ الاسم والسعر
  2. stock يبدأ من صفر ويُكتب من الخارج
  3. price للقراءة فقط
  4. in_stock? تُرجع true أو false
  5. restock تزيد المخزون
  6. to_s تعرض الاسم والسعر
main.rb
المخرجاتRuby 3.4 · ruby.wasm

جارٍ تحميل Ruby… نحو 8MB مرّة واحدة، ثم يحفظها المتصفح.

–/6

يبدأ الفحص حين تجهز البيئة.

6 معايير في بطاقة «المطلوب».