فئة المستطيل
جزء من قسم Object Oriented Programming في رحلة Lua على Coddy — الدرس 56 من 70.
التحدي
سهلالآن دعنا نوسع مدير الأشكال (Shape Manager) الخاص بنا عن طريق إنشاء فئة Rectangle ترث من الفئة الأساسية Shape التي قمت ببنائها في الدرس السابق.
ستعمل مع ثلاثة ملفات للحفاظ على تنظيم الكود الخاص بك:
Shape.lua: فئة Shape الأساسية الخاصة بك من التحدي السابق (مع:new(name)و:getName()).Rectangle.lua: قم بإنشاء فئة Rectangle ترث من Shape. يجب أن يقبل المنشئ (constructor) كلاً منwidthوheight، ويستدعي منشئ الفئة الأب بالاسم"Rectangle"، ويخزن الأبعاد. أضف طريقة:getArea()التي تحسب وتُرجع مساحة المستطيل.main.lua: قم باستدعاء وحدة Rectangle الخاصة بك، واقرأ العرض والارتفاع من الإدخال، وأنشئ مثيلاً (instance) من Rectangle، واطبع اسمه متبوعاً بمساحته في أسطر منفصلة.
تذكر إعداد رابط الوراثة بشكل صحيح حتى تتمكن مثيلات Rectangle من الوصول إلى طرق Shape من خلال سلسلة النموذج الأولي (prototype chain).
الإدخال: سطران — الأول يحتوي على العرض (رقم)، والثاني يحتوي على الارتفاع (رقم).
المخرجات: سطران — اسم المستطيل من :getName()، ثم مساحته من :getArea().
جرّب بنفسك
-- استدعاء وحدة Rectangle
local Rectangle = require('Rectangle')
-- قراءة العرض والارتفاع من المدخلات
local width = tonumber(io.read())
local height = tonumber(io.read())
-- إنشاء كائن Rectangle جديد بالأبعاد المعطاة
local rect = Rectangle:new(width, height)
-- طباعة اسم ومساحة المستطيل
print(rect:getName())
print(rect:getArea())
جميع دروس Object Oriented Programming
4مشروع: بنك رقمي
إعداد المشروعطريقة الإيداع7تعدد الأشكال وإعادة التعريف
إعادة تعريف الدوالاستدعاء دوال الفئة الأبDuck Typingواجهة مشتركةالتحقق من النوعمراجعة - أدوار الموظفين10مشروع: مدير الأشكال
إعداد المشروعفئة المستطيل2نمط النموذج الأولي للفئات
مفهوم النموذج الأوليالربط باستخدام __indexالمنشئ :new()تهيئة الخصائصنسخ مستقلةملخص - مصنع السيارات5تحميل المعاملات في OOP
جمع الكائناتطرح الكائناتدمج الكائناتمقارنة الكائنات (<, >)مراجعة - رياضيات المحفظة8التغليف
اصطلاحات التسميةاستخدام Closures للخصوصيةالوصول عبر Closuresجداول للقراءة فقطمنطق التحقق من الصحةمراجعة - الخزنة الآمنة11أنماط التصميم (مبسط)
دوال المصنعجدول Singletonنمط الـ Iteratorالمراقب (المستمع)مراجعة - مصنع الـ Logger3حالة الكائن وسلوكه
متغيرات النسخةدالات الجلب (Getter Methods)دالات التعيين (Setter Methods)الخصائص المحسوبةتنسيق النصوصالتحقق من المساواةمراجعة - درجة الطالب6أساسيات الوراثة
إعداد الوراثةوراثة الـ Methodsتوسيع الـ Constructorإضافة Methods للابنالمشترك مقابل الفريدملخص - التسلسل الهرمي للأشكال