Menu
Coddy logo textTech

סיכום – תפקידי עובדים

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Lua של Coddy. שיעור 42 מתוך 70.

challenge icon

אתגר

קל

בואו נבנה מערכת בונוסים לשכר שמדגימה כיצד סוגים שונים של עובדים יכולים להשתמש באותו ממשק, ובו בזמן לחשב בונוסים בדרכים שונות!

תיצרו היררכיה קטנה של עובדים בארבעה קבצים:

  • Employee.lua: מחלקת הבסיס שמייצגת עובד כללי. הבנאי :new(name, salary) צריך לשמור גם את שם העובד וגם את שכרו. כללו מתודה :calculateBonus() שמחזירה 10% מהשכר (הבונוס כברירת מחדל לעובדים רגילים), ומתודה :getName() לאחזור השם.
  • Manager.lua: מחלקת בת שיורשת מ־Employee. מנהלים עובדים קשה ומקבלים תגמול: דרסו את :calculateBonus() כך שתחזיר 20% מהשכר שלהם במקום 10% כברירת מחדל.
  • Intern.lua: מחלקת בת נוספת שיורשת מ־Employee. מתמחים מקבלים בונוס קבוע של 50 ללא קשר לשכר שלהם: דרסו את :calculateBonus() כך שתחזיר תמיד את הסכום הזה.
  • main.lua: חברו את הכול יחד! קראו שלוש קלטים לשמות העובדים ושלוש קלטים למשכורות שלהם. צרו מנהל אחד, מתמחה אחד ועובד רגיל אחד. אחסנו את שלושתם בטבלה, ואז עברו עליה בלולאה והדפיסו את השם של כל אחד ואחריו את הבונוס שחושב עבורו.

תקבלו שישה קלטים:

  1. שם המנהל
  2. השכר של המנהל
  3. שם המתמחה
  4. השכר של המתמחה
  5. שם העובד הרגיל
  6. השכר של העובד הרגיל

עבור כל עובד באוסף שלכם (בסדר הבא: Manager, Intern, Employee), הדפיסו את שמו ואת הבונוס שלו בפורמט הזה:

{name}: {bonus}

לדוגמה, אם הקלטים הם Alice, 5000, Bob, 2000, Carol ו־3000, הפלט צריך להיות:

Alice: 1000
Bob: 50
Carol: 300

שימו לב כיצד אותה קריאה ל־:calculateBonus() מפיקה תוצאות שונות בהתאם לסוג העובד: זו פולימורפיות בפעולה! המנהל מקבל 20% מ־5000, המתמחה מקבל 50 קבועים, והעובד הרגיל מקבל 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: שמרו את שלושתם בטבלה (לפי הסדר: Manager, Intern, Employee)

-- TODO: עברו על הטבלה והדפיסו את השם והבונוס של כל אדם
-- תבנית: {name}: {bonus}

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר Lua אונליין