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
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، و id 101

  // TODO: قم بإنشاء Manager بالاسم 'Bob'، والراتب 75000.0، و id 102، و teamSize 8

  // TODO: قم بإنشاء Developer بالاسم 'Carol'، والراتب 65000.0، و id 103، و language 'Dart'

  // TODO: قم بإنشاء TeamLead بالاسم 'David'، والراتب 80000.0، و id 104، و language 'Python'، و projectCount 3

  // TODO: اطبع getDetails() لكل موظف، سطرًا بسطر
}

جميع دروس Object Oriented Programming