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

مراجعة - أدوار الموظفين

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

challenge icon

التحدي

سهل

لنَبْنِ نظامًا لمكافآت الرواتب يوضّح كيف يمكن لأنواع مختلفة من الموظفين مشاركة الواجهة نفسها مع حساب المكافآت بطرق مختلفة!

ستنشىء تسلسلاً هرميًا صغيرًا للموظفين عبر أربعة ملفات:

  • 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 عاديًا واحدًا. خزّن الثلاثة في جدول، ثم نفّذ حلقة عبرهم واطبع اسم كل شخص متبوعًا بمكافأته المحسوبة.

ستتلقى ستة مدخلات:

  1. اسم Manager
  2. راتب Manager
  3. اسم Intern
  4. راتب Intern
  5. اسم الموظف العادي
  6. راتب الموظف العادي

لكل موظف في مجموعتك (بالترتيب: 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}

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

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