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

مراجعة - هيكلية الموظفين

جزء من قسم Object Oriented Programming في رحلة C# على Coddy — الدرس 24 من 70.

challenge icon

التحدي

سهل

لنقم ببناء نظام تسلسل هرمي للموظفين يجمع بين جميع مفاهيم الوراثة من هذا الفصل. ستقوم بإنشاء هيكل شركة حيث تشترك أنواع الموظفين المختلفة في سمات عامة ولكنها تحسب مكافآتها بشكل مختلف.

ستقوم بتنظيم الكود الخاص بك عبر أربعة ملفات:

  • Employee.cs: قم بتعريف الفئة الأساسية Employee في مساحة الاسم Company. كل موظف لديه Name (string) و Salary (decimal). قم بإنشاء منشئ (constructor) يقبل كلتا القيمتين. أضف طريقة virtual تسمى CalculateBonus() تعيد 10% من الراتب افتراضياً. قم بعمل override لـ ToString() لتعيد "{Name} - ${Salary}".
  • Manager.cs: قم بتعريف فئة Manager في مساحة الاسم Company ترث من Employee. لدى المديرين خاصية إضافية TeamSize (int). يجب أن يقبل المنشئ الاسم والراتب وحجم الفريق، مع استخدام base لتهيئة الفئة الأب. قم بعمل override لـ CalculateBonus() لتعيد 15% من الراتب بالإضافة إلى $50 لكل عضو في الفريق. قم بعمل override لـ ToString() لتعيد "{Name} - ${Salary} (Manager, Team: {TeamSize})".
  • Developer.cs: قم بتعريف فئة Developer في مساحة الاسم Company ترث من Employee. لدى المطورين خاصية ProgrammingLanguage (string). يقبل المنشئ الاسم والراتب ولغة البرمجة. قم بعمل override لـ CalculateBonus() لتعيد 12% من الراتب. قم بعمل override لـ ToString() لتعيد "{Name} - ${Salary} (Developer, {ProgrammingLanguage})".
  • Program.cs: في ملفك الرئيسي، قم بإنشاء واحد من كل نوع موظف باستخدام قيم الإدخال. قم بتخزين الثلاثة جميعاً في مصفوفة من مراجع Employee لإظهار تعدد الأشكال (polymorphism). قم بالمرور عبر المصفوفة واطبع نتيجة 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 لإظهار تعدد الأشكال (polymorphism)
        
        // TODO: المرور عبر المصفوفة وطباعة الـ ToString() والمكافأة الخاصة بكل موظف
        // التنسيق:
        // {نتيجة ToString}
        // Bonus: ${نتيجة CalculateBonus}
    }
}

جميع دروس Object Oriented Programming