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

دالة المحيط

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

challenge icon

التحدي

سهل

دعنا نوسع مدير الأشكال (Shape Manager) الخاص بنا عن طريق إضافة طريقة :getPerimeter() إلى كل من فئتي Rectangle و Circle. تماماً مثل :getArea()، يحسب كل شكل محيطه بشكل مختلف، لكنهما يتشاركان في نفس اسم الطريقة — وهو مثال مثالي لتعدد الأشكال (polymorphism) قيد التنفيذ.

ستستمر في العمل مع ملفاتك الحالية:

  • Shape.lua: تظل فئة Shape الأساسية الخاصة بك دون تغيير.
  • Rectangle.lua: أضف طريقة :getPerimeter() التي تعيد محيط المستطيل باستخدام الصيغة 2 × (width + height).
  • Circle.lua: أضف طريقة :getPerimeter() التي تعيد محيط الدائرة باستخدام الصيغة 2 × π × radius. استخدم math.pi لتمثيل π.
  • main.lua: قم باستدعاء كلا وحدتي الأشكال، واقرأ الأبعاد من المدخلات، وأنشئ كائناً واحداً من Rectangle وكائناً واحداً من Circle، ثم اطبع ستة أسطر: اسم المستطيل، ومساحته، ومحيطه، يليه اسم الدائرة، ومساحتها، ومحيطها.

تمتلك كلتا الشكلين الآن واجهة كاملة مع :getName() و :getArea() و :getPerimeter() — وكلها يمكن الوصول إليها من خلال نفس أسماء الطرق على الرغم من اختلاف التنفيذ.

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

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

جرّب بنفسك

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

-- استدعاء وحدة الدائرة (Circle)
local Circle = require('Circle')

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

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

-- إنشاء كائن دائرة جديد بنصف القطر المعطى
local circ = Circle:new(radius)

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

-- طباعة اسم الدائرة ومساحتها ومحيطها
print(circ:getName())
print(circ:getArea())
print(circ:getPerimeter())

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

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