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

فئة الدائرة

جزء من قسم Object Oriented Programming في رحلة Lua على Coddy — الدرس 57 من 70.

challenge icon

التحدي

سهل

دعنا نواصل بناء مدير الأشكال (Shape Manager) الخاص بنا عن طريق إضافة فئة Circle إلى جانب فئة Rectangle التي أنشأتها في الدرس السابق.

ستعمل مع أربعة ملفات للحفاظ على تنظيم أشكالك:

  • Shape.lua: فئة Shape الأساسية الخاصة بك مع :new(name) و :getName().
  • Rectangle.lua: فئة Rectangle الخاصة بك من التحدي السابق مع :getArea().
  • Circle.lua: قم بإنشاء فئة Circle ترث من Shape. يجب أن يقبل المنشئ (constructor) قيمة radius، ويستدعي منشئ الفئة الأب بالاسم "Circle"، ويخزن نصف القطر (radius). أضف طريقة :getArea() التي تحسب مساحة الدائرة باستخدام الصيغة πr². استخدم math.pi لقيمة π.
  • main.lua: قم باستدعاء كل من وحدات Rectangle و Circle. اقرأ ثلاث قيم من المدخلات: عرض المستطيل، وطول المستطيل، ونصف قطر الدائرة. أنشئ نسخة واحدة من كل شكل واطبع أربعة أسطر—اسم المستطيل، ومساحة المستطيل، واسم الدائرة، ومساحة الدائرة.

يتشارك كلا الشكلين الآن في نفس الواجهة من خلال الوراثة—لكل منهما طريقة :getName() من Shape وتطبيق :getArea() الخاص به. ستصبح هذه الواجهة المشتركة مفيدة في الدروس القادمة.

المدخلات: ثلاثة أسطر—العرض (رقم)، والطول (رقم)، ونصف القطر (رقم).

المخرجات: أربعة أسطر—اسم المستطيل، مساحة المستطيل، اسم الدائرة، مساحة الدائرة.

جرّب بنفسك

-- استدعاء وحدة Rectangle
local Rectangle = require('Rectangle')

-- استدعاء وحدة Circle
-- TODO: استدعاء وحدة Circle هنا

-- قراءة width و height من المدخلات
local width = tonumber(io.read())
local height = tonumber(io.read())

-- TODO: قراءة radius من المدخلات

-- إنشاء مثيل (instance) جديد من Rectangle بالأبعاد المعطاة
local rect = Rectangle:new(width, height)

-- TODO: إنشاء مثيل (instance) جديد من Circle بنصف القطر المعطى

-- طباعة اسم ومساحة المستطيل
print(rect:getName())
print(rect:getArea())

-- TODO: طباعة اسم ومساحة الدائرة

جميع دروس Object Oriented Programming