فئة الدائرة
جزء من قسم البرمجة كائنية التوجه في رحلة Lua على Coddy. الدرس 57 من 70.
التحدي
سهللنواصل بناء Shape Manager من خلال إضافة فئة Circle إلى جانب Rectangle الذي أنشأته في الدرس السابق.
ستعمل مع أربعة ملفات للحفاظ على تنظيم الأشكال:
Shape.lua: فئة Shape الأساسية التي تحتوي على:new(name)و:getName().Rectangle.lua: فئة Rectangle الخاصة بك من التحدي السابق، والتي تحتوي على:getArea().Circle.lua: أنشئ فئة Circle ترث من Shape. يجب أن يقبل constructor قيمةradius، وأن يستدعي constructor الخاص بـ parent بالاسم"Circle"، وأن يخزن نصف القطر. أضف طريقة:getArea()تحسب مساحة الدائرة باستخدام الصيغة πr². استخدمmath.piلقيمة π.main.lua: استخدم Require لكلٍّ من وحدتي Rectangle وCircle. اقرأ ثلاث قيم من input: عرض Rectangle، وارتفاع Rectangle، وradius الدائرة. أنشئ instance واحدًا من كل shape واطبع أربعة أسطر: اسم Rectangle، ومساحة Rectangle، واسم الدائرة، ومساحة الدائرة.
يشترك كلا الشكلين الآن في الواجهة نفسها من خلال inheritance: إذ يمتلك كل منهما طريقة :getName() من Shape وتنفيذ :getArea() خاصًا به. ستصبح هذه الواجهة المشتركة مفيدة في الدروس القادمة.
الإدخال: ثلاثة أسطر: width (رقم)، height (رقم)، وradius (رقم).
الإخراج: أربعة أسطر: اسم Rectangle، ومساحة Rectangle، واسم الدائرة، ومساحة الدائرة.
جرّب بنفسك
-- اطلب وحدة Rectangle
local Rectangle = require('Rectangle')
-- اطلب وحدة Circle
-- TODO: اطلب وحدة Circle هنا
-- اقرأ العرض والارتفاع من الإدخال
local width = tonumber(io.read())
local height = tonumber(io.read())
-- TODO: اقرأ نصف القطر من الإدخال
-- أنشئ كائناً جديداً من Rectangle بالأبعاد المعطاة
local rect = Rectangle:new(width, height)
-- TODO: أنشئ كائناً جديداً من Circle بنصف القطر المعطى
-- اطبع اسم ومساحة المستطيل
print(rect:getName())
print(rect:getArea())
-- TODO: اطبع اسم ومساحة الدائرة
جميع دروس البرمجة كائنية التوجه
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 للابنالمشترك مقابل الفريدملخص - التسلسل الهرمي للأشكالتدرّب بنفسك: مترجم Lua عبر الإنترنت