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

مراجعة - نظام الحيوانات (Animal System)

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

challenge icon

التحدي

سهل

لنقم ببناء نظام حيوانات كامل يجمع كل ما تعلمته عن الـ mixins! ستقوم بإنشاء فئة أساسية Animal، و mixins للسلوك تستخدم الكلمة المفتاحية on، وفئات حيوانات محددة تجمع بين هذه القدرات بطرق مختلفة.

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

  • animal.dart: حدد الفئة الأساسية التي سترث منها جميع الحيوانات:
    • فئة Animal مع خاصية String name ومنشئ (constructor)
    • دالة describe() تطبع '$name is an animal'
  • behaviors.dart: استورد ملف الحيوان وأنشئ ثلاثة mixins للسلوك، كل منها مقيد بـ Animal باستخدام الكلمة المفتاحية on:
    • mixin باسم Swimming مع دالة swim() تطبع '$name is swimming'
    • mixin باسم Flying مع دالة fly() تطبع '$name is flying'
    • mixin باسم Walking مع دالة walk() تطبع '$name is walking'
  • main.dart: استورد كلا الملفين وأنشئ ثلاث فئات حيوانات تجمع بين الوراثة ومجموعات مختلفة من الـ mixins:
    • فئة Duck ترث من Animal وتستخدم جميع الـ mixins الثلاثة (Swimming، Flying، Walking)
    • فئة Fish ترث من Animal وتستخدم mixin الـ Swimming فقط
    • فئة Bird ترث من Animal وتستخدم mixins الـ Flying و Walking
    ثم استعرض قدرات كل حيوان:
    • أنشئ Duck باسم 'Donald'، واستدعِ describe()، ثم swim()، و fly()، و walk()
    • اطبع سطراً فارغاً
    • أنشئ Fish باسم 'Nemo'، واستدعِ describe()، ثم swim()
    • اطبع سطراً فارغاً
    • أنشئ Bird باسم 'Tweety'، واستدعِ describe()، ثم fly() و walk()

يمكن لكل mixin الوصول إلى خاصية name بسبب قيد on Animal، مما يضمن سلامة النوع (type safety) مع توفير تكوين سلوك مرن.

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

Donald is an animal
Donald is swimming
Donald is flying
Donald is walking

Nemo is an animal
Nemo is swimming

Tweety is an animal
Tweety is flying
Tweety is walking

جرّب بنفسك

import 'animal.dart';
import 'behaviors.dart';

// TODO: أنشئ فئة Duck التي ترث من Animal وتستخدم mixins الـ Swimming و Flying و Walking
class Duck {
  // TODO: قم بتنفيذ فئة Duck
}

// TODO: أنشئ فئة Fish التي ترث من Animal وتستخدم mixin الـ Swimming فقط
class Fish {
  // TODO: قم بتنفيذ فئة Fish
}

// TODO: أنشئ فئة Bird التي ترث من Animal وتستخدم mixins الـ Flying و Walking
class Bird {
  // TODO: قم بتنفيذ فئة Bird
}

void main() {
  // TODO: أنشئ Duck باسم 'Donald'
  // استدعِ describe() و swim() و fly() و walk()
  
  // TODO: اطبع سطراً فارغاً
  
  // TODO: أنشئ Fish باسم 'Nemo'
  // استدعِ describe() و swim()
  
  // TODO: اطبع سطراً فارغاً
  
  // TODO: أنشئ Bird باسم 'Tweety'
  // استدعِ describe() و fly() و walk()
}

جميع دروس Object Oriented Programming