0Pricing
Dart Academy · درس

تعدد الأشكال عبر الأنواع المشتركة

برمج اعتمادًا على النوع لا الفئة

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

ما المقصود بتعدد الأشكال

يتيح Polymorphism لنوع واحد أن يحل محل أنواع متعددة. تستدعي طريقة على نوع مشترك، ويستجيب كل كائن بطريقته الخاصة.

البرمجة باستخدام نوع

بدلًا من تسمية فئة محددة، تعتمد على نوع فائق مشترك. ويعمل الكود مع أي شيء يطابق هذا الشكل.

void render(Shape s) => print(s.area());

نوع أساسي مشترك

ابدأ بنوع أساسي مجرد يعلن عن الطريقة المشتركة التي سيوفرها كل نوع فرعي بطريقة مختلفة.

abstract class Shape {
  double area();
}

أنواع فرعية متعددة، وشكل واحد

ينفذ كل نوع فرعي area بطريقته الخاصة، ومع ذلك تظل جميعها تُعامَل على أنها Shape.

class Circle extends Shape {
  double area() => 28.3;
}

الاستدعاء الديناميكي

أثناء التشغيل، يختار Dart طريقة الكائن الحقيقي. ويعني هذا dispatch أن الاستدعاء نفسه يشغّل كودًا مختلفًا لكل كائن.

Shape s = Circle();
s.area(); // runs Circle.area

قائمة من الأشكال المختلفة

بما أنها تشترك في النوع نفسه، يمكنك جمع كائنات مختلفة في List واحدة ومعاملتها بطريقة موحدة.

List<Shape> shapes = [Circle(), Square()];

التكرار بطريقة متعددة الأشكال

يتعامل تكرار واحد مع كل شكل. ولا تحتاج أبدًا إلى التفرع وفقًا للفئة المحددة؛ إذ تُشغَّل area الصحيحة تلقائيًا.

for (var s in shapes) {
  print(s.area());
}

قابل للتمديد

أضف نوعًا فرعيًا جديدًا تمامًا من Shape لاحقًا، وستستخدمه حلقات التكرار الحالية فورًا. يحافظ تعدد الأشكال على كون الكود مفتوحًا للنمو.

class Triangle extends Shape {
  double area() => 12.0;
}

تعمل الواجهات بالطريقة نفسها

يمكن أن تأتي الأنواع المشتركة من implements أيضًا. فأي فئة تنفذ الواجهة تندمج مباشرةً في الكود نفسه.

void log(Printable p) => p.printOut();

لا حاجة إلى فحص الأنواع

نادرًا ما يستخدم الكود الجيد متعدد الأشكال عمليات الفحص is. فالنوع المشترك يضمن وجود الطريقة مسبقًا، مما يحافظ على نظافة المنطق.

لماذا يهم ذلك

يُلغي تعدد الأشكال سلاسل if-else الطويلة وعبارات switch المتكررة. وتكتب كودًا مرنًا يتكيف مع الأنواع الجديدة دون تعديلات. 🌱

تحقق سريع

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

مراجعة

يعني تعدد الأشكال أن تبرمج باستخدام نوع مشترك، مع تصرف كل كائن بطريقته الخاصة. وهذا يحافظ على مرونة الكود وانفتاحه على الأنواع الفرعية الجديدة. ✨

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

هل درس «تعدد الأشكال عبر الأنواع المشتركة» مجاني؟

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

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

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

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

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

كم من الوقت يستغرق درس «تعدد الأشكال عبر الأنواع المشتركة»؟

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

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

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

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

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