0Pricing
Dart Academy · درس

التركيب أفضل من الوراثة

فضّل تصميمات has-a حيثما تناسب

التركيب أفضل من الوراثة درس مجاني في Dart Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Dart Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Dart Academy 4 دروس في المجموع.

طريقتان لإعادة الاستخدام

يمكنك إعادة استخدام السلوك عن طريق توريثه أو عن طريق الاحتفاظ بكائن آخر. ويُسمى الأسلوب الثاني التركيب.

is-a مقابل has-a

يمثل التوريث العلاقة is-a: فـ Circle هو Shape. أما التركيب فيمثل العلاقة has-a: إذ تحتوي Car على Engine.

فئة مركبة

في التركيب، تخزن مساعدًا في حقل وتفوض العمل إليه بدلًا من التمديد منه.

class Car {
  final Engine engine = Engine();
}

تفويض السلوك

تمرر الفئة الخارجية الاستدعاءات إلى كائنها الداخلي. ويعيد هذا التفويض استخدام المنطق دون أي توريث.

class Car {
  final engine = Engine();
  void start() => engine.ignite();
}

مشكلة الفئة الأساسية الهشة

التوريث العميق هش. فقد يؤدي تغيير في فئة أصل إلى إفساد الفئات الفرعية البعيدة بصمت، وهي مشكلة تُعرف باسم الفئة الأساسية الهشة.

المرونة أثناء التشغيل

يتيح لك التركيب استبدال الكائن الداخلي متى شئت. فالتوريث ثابت منذ البداية، بينما يمكن أن يتغير الحقل.

class Car {
  Engine engine;
  Car(this.engine);
}

الدمج مع الواجهات

اجمع التركيب مع الواجهات: اعتمد على نوع Engine مجرد حتى يتمكن أي محرك مطابق من الاندماج بسلاسة.

abstract class Engine {
  void ignite();
}

أسهل في الاختبار

بما أن الأجزاء كائنات منفصلة، يمكنك تمرير كائن وهمي إليها أثناء الاختبارات. ويجعل التركيب عملية mocking بسيطة وطبيعية.

var car = Car(FakeEngine());

تجنب توريث الأشياء غير المناسبة

ترث الفئات الفرعية كل عضو، حتى الأعضاء التي لا ينبغي لها كشفها. أما التركيب فلا يشارك إلا ما تختار تفويضه.

متى يظل التوريث هو الخيار الأفضل

يُعد التوريث مناسبًا لعلاقة is-a واضحة تتشارك الهوية. فاستخدم التركيب عندما تكون العلاقة في حقيقتها has-a.

القاعدة العملية

فضّل التركيب افتراضيًا، واستخدم التوريث باعتدال. فهذا يحافظ على ترابط ضعيف بين مكونات التصميم ويسهّل تغييره لاحقًا. 🧩

تحقق سريع

سؤال سريع واحد عن التركيب.

مراجعة

يمثل التركيب علاقة has-a من خلال الاحتفاظ بكائنات أخرى وتفويض العمل إليها. ويظل مرنًا وقابلًا للاختبار، بينما يناسب التوريث علاقات is-a الواضحة. 👍

الأسئلة الشائعة

هل درس «التركيب أفضل من الوراثة» مجاني؟

نعم — نص درس «التركيب أفضل من الوراثة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Dart Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Dart Academy 4 دروس في المجموع.

ماذا ستتعلم في «التركيب أفضل من الوراثة»؟

فضّل تصميمات has-a حيثما تناسب تتمرن على Dart Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Dart Academy؟

لا تُشترط خبرة سابقة. Dart Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «التركيب أفضل من الوراثة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Dart Academy هذا؟

نعم. كل درس في Dart Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الفئات والطرق المجرّدة
  2. الواجهات الضمنية وimplements
  3. تعدد الأشكال عبر الأنواع المشتركة
  4. التركيب أفضل من الوراثة
← العودة إلى Dart Academy