مراجعة - هيكلية الموظفين
جزء من قسم Object Oriented Programming في رحلة C# على Coddy — الدرس 24 من 70.
التحدي
سهللنقم ببناء نظام تسلسل هرمي للموظفين يجمع بين جميع مفاهيم الوراثة من هذا الفصل. ستقوم بإنشاء هيكل شركة حيث تشترك أنواع الموظفين المختلفة في سمات عامة ولكنها تحسب مكافآتها بشكل مختلف.
ستقوم بتنظيم الكود الخاص بك عبر أربعة ملفات:
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
1أساسيات OOP
الملفات الخارجيةNamespaces والتوجيهاتمقدمة في Classes و Objectsالكلمة المفتاحية 'this'Methods والمعاملاتFields مقابل PropertiesConstructorsObject Initializersمراجعة - آلة حاسبة بسيطة4الوراثة
صيغة الوراثة الأساسية (:)الكلمة المفتاحية 'base'الكلمات المفتاحية Virtual و Overrideالأصناف المختومة (Sealed Classes)الفئة الأساسية 'object'مراجعة - هيكلية الموظفين7ميزات متقدمة
تحميل العوامل (Operator Overloading)المفهرسات (Indexers (this[]))إعادة تعريف ()ToStringدوال التوسعة (Extension Methods)ملخص - Custom List2الخصائص والأعضاء الساكنة (Static Members)
الخصائص المطبقة تلقائيًا (Auto-Implemented Properties)خصائص القراءة فقط والكتابة فقطالحقول والدوال الساكنة (Static)الفئات الساكنة (Static Classes)الأعضاء ذات البنية التعبيرية (Expression-Bodied Members)5تعدد الأشكال والواجهات (Polymorphism & Interfaces)
تعدد الأشكال: وقت التجميع مقابل وقت التشغيلالواجهة مقابل الفئة المجردة (Abstract Class)الواجهات المتعددةالواجهات الصريحةUpcasting و Downcastingملخص - حاسبة الأشكال8مفاهيم البرمجة كائنية التوجه (OOP) المتقدمة
التركيب بدلاً من الوراثةالـ Generics (الأصناف والدوال)الـ Delegates والأحداثالـ Attributes والـ Reflectionواجهة IDisposable وجملة usingأساسيات Dependency Injection