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

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

جزء من قسم Object Oriented Programming في رحلة Dart على Coddy — الدرس 42 من 110.

challenge icon

التحدي

سهل

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

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

  • employee.dart: حدد التسلسل الهرمي للموظفين هنا:
    • فئة أساسية Employee مع خصائص String name و double salary و int id. قم بتضمين منشئ (constructor) وتابع getDetails() الذي يعيد '[name] (ID: [id]) - Salary: $[salary]'
    • فئة Manager ترث من Employee وتضيف خاصية int teamSize. استخدم معاملات super للحقول الموروثة. قم بعمل override لـ getDetails() لتعيد تفاصيل الأب متبوعة بـ ', Team: [teamSize] members'
    • فئة Developer ترث من Employee وتضيف خاصية String language. قم بعمل override لـ getDetails() لتعيد تفاصيل الأب متبوعة بـ ', Specializes in [language]'
    • فئة TeamLead ترث من Developer وتضيف خاصية int projectCount. قم بعمل override لـ getDetails() لتبني على نسخة Developer عن طريق إضافة ', Leading [projectCount] projects'
  • main.dart: استورد ملف الموظف وقم بإنشاء مثيلات (instances) لكل نوع من أنواع الموظفين:
    • أنشئ Employee باسم 'Alice'، وراتب 50000.0، ومعرف 101
    • أنشئ Manager باسم 'Bob'، وراتب 75000.0، ومعرف 102، و teamSize قيمته 8
    • أنشئ Developer باسم 'Carol'، وراتب 65000.0، ومعرف 103، ولغة 'Dart'
    • أنشئ TeamLead باسم 'David'، وراتب 80000.0، ومعرف 104، ولغة 'Python'، و projectCount قيمته 3
    • اطبع نتيجة استدعاء getDetails() لكل موظف، كل واحد في سطر

لاحظ كيف يوضح TeamLead الوراثة متعددة المستويات - فهو يرث من Developer، الذي بدوره يرث من Employee. يضيف كل مستوى تفاصيله الخاصة مع الحفاظ على المعلومات من الفئات الأب باستخدام super.

المخرجات المتوقعة:

Alice (ID: 101) - Salary: $50000.0, Team: 8 members
Bob (ID: 102) - Salary: $75000.0, Team: 8 members
Carol (ID: 103) - Salary: $65000.0, Specializes in Dart
David (ID: 104) - Salary: $80000.0, Specializes in Python, Leading 3 projects

جرّب بنفسك

import 'employee.dart';

void main() {
  // TODO: قم بإنشاء موظف (Employee) باسم 'Alice'، وراتب 50000.0، ومعرف 101

  // TODO: قم بإنشاء مدير (Manager) باسم 'Bob'، وراتب 75000.0، ومعرف 102، وحجم فريق 8

  // TODO: قم بإنشاء مطور (Developer) باسم 'Carol'، وراتب 65000.0، ومعرف 103، ولغة 'Dart'

  // TODO: قم بإنشاء قائد فريق (TeamLead) باسم 'David'، وراتب 80000.0، ومعرف 104، ولغة 'Python'، وعدد مشاريع 3

  // TODO: قم بطباعة getDetails() لكل موظف، كل واحد في سطر منفصل
}

جميع دروس Object Oriented Programming