Menu
Coddy logo textTech

סיכום – היררכיית עובדים

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

challenge icon

אתגר

קל

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

תארגן את הקוד שלך בארבעה קבצים:

  • 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}
    }
}

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

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