مراجعة - أدوار الموظفين
جزء من قسم البرمجة كائنية التوجه في رحلة Lua على Coddy. الدرس 42 من 70.
التحدي
سهللنَبْنِ نظامًا لمكافآت الرواتب يوضّح كيف يمكن لأنواع مختلفة من الموظفين مشاركة الواجهة نفسها مع حساب المكافآت بطرق مختلفة!
ستنشىء تسلسلاً هرميًا صغيرًا للموظفين عبر أربعة ملفات:
Employee.lua: الفئة الأساسية التي تمثّل موظفًا عامًا. يجب أن يخزّن المُنشئ:new(name, salary)اسم الموظف وراتبه. أضِف طريقة:calculateBonus()تُرجع 10% من الراتب (المكافأة الافتراضية للموظفين العاديين)، وطريقة:getName()لاسترداد الاسم.Manager.lua: فئة فرعية ترث من Employee. يعمل Managers بجد ويحصلون على مكافأة: تجاوز:calculateBonus()لإرجاع 20% من راتبهم بدلًا من 10% الافتراضية.Intern.lua: فئة فرعية أخرى ترث من Employee. يحصل Interns على مكافأة ثابتة مقدارها50بغض النظر عن راتبهم: تجاوز:calculateBonus()لإرجاع هذه القيمة دائمًا.main.lua: اجمع كل شيء معًا! اقرأ ثلاث مدخلات لأسماء الموظفين وثلاث مدخلات لرواتبهم. أنشئ Manager واحدًا وIntern واحدًا وEmployee عاديًا واحدًا. خزّن الثلاثة في جدول، ثم نفّذ حلقة عبرهم واطبع اسم كل شخص متبوعًا بمكافأته المحسوبة.
ستتلقى ستة مدخلات:
- اسم Manager
- راتب Manager
- اسم Intern
- راتب Intern
- اسم الموظف العادي
- راتب الموظف العادي
لكل موظف في مجموعتك (بالترتيب: Manager، Intern، Employee)، اطبع اسمه ومكافأته بهذا التنسيق:
{name}: {bonus}على سبيل المثال، إذا كانت المدخلات هي Alice و5000 وBob و2000 وCarol و3000، فيجب أن يكون الناتج:
Alice: 1000
Bob: 50
Carol: 300لاحظ كيف ينتج عن استدعاء :calculateBonus() نفسه نتائج مختلفة استنادًا إلى نوع كل موظف: هذه هي تعدد الأشكال أثناء العمل! يحصل Manager على 20% من 5000، ويحصل Intern على 50 ثابتة، ويحصل Employee العادي على 10% من 3000.
جرّب بنفسك
-- main.lua: اجمع كل شيء معًا
local Employee = require('Employee')
local Manager = require('Manager')
local Intern = require('Intern')
-- اقرأ المدخلات
local managerName = io.read()
local managerSalary = tonumber(io.read())
local internName = io.read()
local internSalary = tonumber(io.read())
local employeeName = io.read()
local employeeSalary = tonumber(io.read())
-- TODO: أنشئ Manager واحدًا، وIntern واحدًا، وEmployee عاديًا واحدًا
-- TODO: خزّن الثلاثة جميعًا في table (بالترتيب: Manager، Intern، Employee)
-- TODO: مر عبر الـ table واطبع اسم ومكافأة كل شخص
-- التنسيق: {name}: {bonus}
جميع دروس البرمجة كائنية التوجه
4مشروع: بنك رقمي
إعداد المشروعطريقة الإيداع7تعدد الأشكال وإعادة التعريف
إعادة تعريف الدوالاستدعاء دوال الفئة الأبDuck Typingواجهة مشتركةالتحقق من النوعمراجعة - أدوار الموظفين2نمط النموذج الأولي للفئات
مفهوم النموذج الأوليالربط باستخدام __indexالمنشئ :new()تهيئة الخصائصنسخ مستقلةملخص - مصنع السيارات5تحميل المعاملات في OOP
جمع الكائناتطرح الكائناتدمج الكائناتمقارنة الكائنات (<, >)مراجعة - رياضيات المحفظة8التغليف
اصطلاحات التسميةاستخدام Closures للخصوصيةالوصول عبر Closuresجداول للقراءة فقطمنطق التحقق من الصحةمراجعة - الخزنة الآمنة11أنماط التصميم (مبسط)
دوال المصنعجدول Singletonنمط الـ Iteratorالمراقب (المستمع)مراجعة - مصنع الـ Logger3حالة الكائن وسلوكه
متغيرات النسخةدالات الجلب (Getter Methods)دالات التعيين (Setter Methods)الخصائص المحسوبةتنسيق النصوصالتحقق من المساواةمراجعة - درجة الطالب6أساسيات الوراثة
إعداد الوراثةوراثة الـ Methodsتوسيع الـ Constructorإضافة Methods للابنالمشترك مقابل الفريدملخص - التسلسل الهرمي للأشكالتدرّب بنفسك: مترجم Lua عبر الإنترنت