סיכום – תפקידי עובדים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Lua של Coddy. שיעור 42 מתוך 70.
אתגר
קלבואו נבנה מערכת בונוסים לשכר שמדגימה כיצד סוגים שונים של עובדים יכולים להשתמש באותו ממשק, ובו בזמן לחשב בונוסים בדרכים שונות!
תיצרו היררכיה קטנה של עובדים בארבעה קבצים:
Employee.lua: מחלקת הבסיס שמייצגת עובד כללי. הבנאי:new(name, salary)צריך לשמור גם את שם העובד וגם את שכרו. כללו מתודה:calculateBonus()שמחזירה 10% מהשכר (הבונוס כברירת מחדל לעובדים רגילים), ומתודה:getName()לאחזור השם.Manager.lua: מחלקת בת שיורשת מ־Employee. מנהלים עובדים קשה ומקבלים תגמול: דרסו את:calculateBonus()כך שתחזיר 20% מהשכר שלהם במקום 10% כברירת מחדל.Intern.lua: מחלקת בת נוספת שיורשת מ־Employee. מתמחים מקבלים בונוס קבוע של50ללא קשר לשכר שלהם: דרסו את:calculateBonus()כך שתחזיר תמיד את הסכום הזה.main.lua: חברו את הכול יחד! קראו שלוש קלטים לשמות העובדים ושלוש קלטים למשכורות שלהם. צרו מנהל אחד, מתמחה אחד ועובד רגיל אחד. אחסנו את שלושתם בטבלה, ואז עברו עליה בלולאה והדפיסו את השם של כל אחד ואחריו את הבונוס שחושב עבורו.
תקבלו שישה קלטים:
- שם המנהל
- השכר של המנהל
- שם המתמחה
- השכר של המתמחה
- שם העובד הרגיל
- השכר של העובד הרגיל
עבור כל עובד באוסף שלכם (בסדר הבא: 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}
כל השיעורים ביחידה תכנות מונחה עצמים
4פרויקט: בנק דיגיטלי
הגדרת הפרויקטפעולת הפקדה7פולימורפיזם ודריסת מתודות
דריסת מתודותקריאה למתודות של מחלקת האבטיפוסיות ברווזממשק משותףבדיקת טיפוססיכום – תפקידי עובדים2תבנית אב־טיפוס למחלקה
מושג אב־הטיפוסקישור באמצעות __indexהבנאי :new()אתחול מאפייניםמופעים עצמאייםסיכום – מפעל מכוניות5העמסת אופרטורים בתכנות מונחה עצמים
חיבור אובייקטיםחיסור אובייקטיםשרשור אובייקטיםהשוואת אובייקטים (<, >)חזרה – חישובים עם ארנק8כימוס
כללי מתן שמותClosures לשמירה על פרטיותגישה באמצעות Closuresטבלאות לקריאה בלבדלוגיקת אימותסיכום – כספת מאובטחת11תבניות עיצוב (בקצרה)
פונקציות Factoryטבלת Singletonתבנית IteratorObserver (מאזין)סיכום – מפעל Logger3מצב והתנהגות של אובייקטים
משתני מופעמתודות Getterמתודות Setterמאפיינים מחושביםעיצוב מחרוזותבדיקות שוויוןסיכום – ציון תלמיד6יסודות הירושה
הכנת מבנה הירושהירושת מתודותהרחבת הבנאיהוספת מתודות למחלקת הבתמשותף לעומת ייחודיסיכום – היררכיית צורותתרגלו בעצמכם: קומפיילר Lua אונליין