סיכום – היררכיית עובדים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C# של Coddy. שיעור 24 מתוך 70.
אתגר
קלבואו נבנה מערכת היררכיה של עובדים שמשלבת את כל מושגי הירושה מהפרק הזה. תיצור מבנה חברה שבו לסוגי עובדים שונים יש מאפיינים משותפים, אבל הם מחשבים את הבונוסים שלהם בדרכים שונות.
תארגן את הקוד שלך בארבעה קבצים:
Employee.cs: הגדר את מחלקת הבסיסEmployeeבמרחב השמותCompany. לכל עובד ישName(מחרוזת) ו-Salary(מספר עשרוני). צור בנאי שמקבל את שני הערכים. הוסף מתודהvirtualבשםCalculateBonus()שמחזירה כברירת מחדל 10% מהמשכורת. דרוס אתToString()כך שתחזיר"{Name} - ${Salary}".Manager.cs: הגדר מחלקהManagerבמרחב השמותCompanyשיורשת מ-Employee. למנהלים יש מאפיין נוסףTeamSize(מספר שלם). הבנאי צריך לקבל שם, משכורת וגודל צוות, ולהשתמש ב-baseכדי לאתחל את מחלקת האב. דרוס אתCalculateBonus()כך שתחזיר 15% מהמשכורת בתוספת $50 עבור כל חבר צוות. דרוס אתToString()כך שתחזיר"{Name} - ${Salary} (Manager, Team: {TeamSize})".Developer.cs: הגדר מחלקהDeveloperבמרחב השמותCompanyשיורשת מ-Employee. למפתחים יש מאפייןProgrammingLanguage(מחרוזת). הבנאי מקבל שם, משכורת ושפת תכנות. דרוס אתCalculateBonus()כך שתחזיר 12% מהמשכורת. דרוס אתToString()כך שתחזיר"{Name} - ${Salary} (Developer, {ProgrammingLanguage})".Program.cs: בקובץ הראשי שלך, צור עובד אחד מכל סוג באמצעות ערכי קלט. אחסן את שלושתם במערך של הפניות מסוגEmployeeכדי להדגים פולימורפיזם. עבור בלולאה על המערך והדפס את התוצאה שלToString()עבור כל עובד, ואחריה את הבונוס שלו.
תקבל שמונה ערכי קלט:
- שם העובד הבסיסי
- משכורת העובד הבסיסי
- שם המנהל
- משכורת המנהל
- גודל צוות המנהל
- שם המפתח
- משכורת המפתח
- שפת התכנות של המפתח
הדפס את המידע והבונוס של כל עובד בפורמט הזה:
{ToString result}
Bonus: ${CalculateBonus result}לדוגמה, אם ערכי הקלט הם John, 50000, Sarah, 80000, 5, Mike, 70000 ו-C#, הפלט צריך להיות:
John - $50000
Bonus: $5000
Sarah - $80000 (Manager, Team: 5)
Bonus: $12250
Mike - $70000 (Developer, C#)
Bonus: $8400שים לב איך כל סוג עובד מחשב את הבונוסים בדרך שונה, ובכל זאת אפשר לעבד את כולם באמצעות מערך יחיד של Employee. זה הכוח של שילוב ירושה עם פולימורפיזם!
נסו בעצמכם
using System;
using Company;
class Program
{
public static void Main(string[] args)
{
// קראו את נתוני הקלט של העובד הבסיסי
string empName = Console.ReadLine();
decimal empSalary = Convert.ToDecimal(Console.ReadLine());
// קראו את נתוני הקלט של המנהל
string mgrName = Console.ReadLine();
decimal mgrSalary = Convert.ToDecimal(Console.ReadLine());
int teamSize = Convert.ToInt32(Console.ReadLine());
// קראו את נתוני הקלט של המפתח
string devName = Console.ReadLine();
decimal devSalary = Convert.ToDecimal(Console.ReadLine());
string progLang = Console.ReadLine();
// TODO: צרו מופע אחד של Employee, מופע אחד של Manager ומופע אחד של Developer
// TODO: שמרו את שלושתם במערך של Employee כדי להדגים פולימורפיזם
// TODO: עברו על המערך והדפיסו עבור כל עובד את תוצאת ToString() ואת הבונוס שלו
// פורמט:
// {ToString result}
// Bonus: ${CalculateBonus result}
}
}
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםמרחבי שמות והנחיותמבוא למחלקות ולאובייקטיםמילת המפתח 'this'מתודות ופרמטריםשדות לעומת מאפייניםבנאיםאתחול אובייקטיםסיכום – מחשבון פשוט4ירושה
תחביר ירושה בסיסית (:)מילת המפתח 'base'מילות המפתח Virtual ו-Overrideמחלקות Sealedמחלקת הבסיס 'object'סיכום – היררכיית עובדים7תכונות מתקדמות
העמסת אופרטוריםאינדקסרים (this[])דריסת ToString()מתודות הרחבהסיכום – רשימה מותאמת אישית2מאפיינים וחברים סטטיים
מאפיינים במימוש אוטומטימאפיינים לקריאה בלבד ולכתיבה בלבדשדות ומתודות סטטייםמחלקות סטטיותחברים עם גוף ביטוי5פולימורפיזם וממשקים
פולימורפיזם בזמן קומפילציה לעומת בזמן ריצהממשק לעומת מחלקה מופשטתממשקים מרוביםממשקים מפורשיםהמרה כלפי מעלה והמרה כלפי מטהחזרה: מחשבון צורות8מושגים מתקדמים בתכנות מונחה עצמים
קומפוזיציה במקום ירושהGenerics (מחלקות ומתודות)נציגים ואירועיםמאפיינים ורפלקציהIDisposable והצהרת usingיסודות הזרקת תלויותתרגלו בעצמכם: קומפיילר C# אונליין