0Pricing
Dart Academy · درس

الفئات والطرق المجرّدة

حدّد ما يجب أن تنفذه الفئات الفرعية

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

ماذا تعني Abstract؟

الفئة abstract هي مخطط يمكنك وصفه، لكن لا يمكنك إنشاء كائن منه مباشرةً. وهي موجودة لتُمدّد، لا لإنشاء كائنات منها بمفردها.

تمييز فئة بأنها Abstract

أضف الكلمة المفتاحية abstract قبل class. وهذا يخبر Dart بأن الفئة غير مكتملة ومصممة لتكون أساسًا مشتركًا.

abstract class Shape {
  double area();
}

لا تحتوي الطرق Abstract على جسم

تعلن الطريقة abstract عن اسم وتوقيع، لكنها تنتهي بفاصلة منقوطة، تاركةً التنفيذ الفعلي لكل فئة فرعية.

abstract class Shape {
  double area(); // no body
}

لا يمكنك إنشاء كائن منها

تؤدي محاولة كتابة Shape() إلى خطأ في الترجمة. يرفض Dart ذلك لأن الفئة abstract غير مكتملة ولا تحتوي على تنفيذ فعلي.

var s = Shape(); // error: abstract

تملأ الفئات الفرعية الفراغات

تستخدم الفئة الفرعية extends، ويجب أن توفر جسمًا لكل طريقة abstract، فتحوّل المخطط إلى شيء قابل للاستخدام.

class Circle extends Shape {
  final double r;
  Circle(this.r);
  double area() => 3.14 * r * r;
}

تُسمح بالطرق Concrete أيضًا

يمكن للفئة abstract أن تتضمن طرقًا concrete مكتوبة بالكامل. وترثها الفئات الفرعية مباشرةً، ولا تنفذ إلا الطرق abstract.

abstract class Shape {
  double area();
  void describe() => print('Area is ' + area().toString());
}

الحقول في الفئات Abstract

يمكن للفئات abstract أن تحتوي على حقول وبوانٍ أيضًا. وتُنفذ هذه البواني عند إنشاء فئة فرعية، فتظل الحالة المشتركة في الفئة الأساسية.

abstract class Shape {
  final String name;
  Shape(this.name);
}

يفرض المترجم العقد

إذا نسيت فئة فرعية تنفيذ طريقة abstract، فسيبلغك Dart بخطأ قبل تشغيل الشيفرة. ويتم التحقق من العقد نيابةً عنك.

class Square extends Shape {} // error: area() missing

لماذا نستخدم الفئات Abstract؟

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

Getters Abstract

ليست الطرق وحدها ما يمكن تركه abstract. فـgetter بلا جسم يعمل بالطريقة نفسها، ويجب أن تعرّفه الفئات الفرعية.

abstract class Shape {
  String get label;
}

الاحتفاظ بمراجع Abstract

يمكنك تخزين أي فئة فرعية في متغير نوعه الفئة abstract. ويضمن النوع السلوك دون تحديد فئة concrete بعينها.

Shape s = Circle(2);
print(s.area());

تحقق سريع

سؤال سريع عن الفئات abstract.

مراجعة

الفئات abstract مخططات تمددها، ولا تنشئ كائنات منها. ولا تحتوي الطرق abstract على جسم، ويجب على الفئات concrete تنفيذها. عمل رائع! 🎯

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

هل درس «الفئات والطرق المجرّدة» مجاني؟

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

ماذا ستتعلم في «الفئات والطرق المجرّدة»؟

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

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

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

كم من الوقت يستغرق درس «الفئات والطرق المجرّدة»؟

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

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

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

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

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