Menu
CoddyTech

أساسيات الـ Constructor

جزء من قسم البرمجة كائنية التوجه في رحلة Dart على Coddy. الدرس 8 من 110.

المنشئ هو أسلوب خاص يعمل تلقائيًا عند إنشاء كائن جديد. ويهيّئ متغيرات النسخة الخاصة بالكائن لحظة إنشائه.

إليك مثالًا على صنف يحتوي على مُنشئ:

class Dog {
  late String name; // late: تُعيَّن قيمته في جسم المُنشئ
  late String breed;

  Dog(String name, String breed) {
    this.name = name;
    this.breed = breed;
  }
}

للمُنشئ الاسم نفسه الذي للصنف. تُمرَّر المعاملات عند إنشاء الكائن.

أنشئ كائنات بتمرير الوسائط إلى المُنشئ:

Dog rex = Dog('Rex', 'German Shepherd');
Dog buddy = Dog('Buddy', 'Golden Retriever');

يمكنك الوصول إلى المتغيرات التي عيّنها المُنشئ:

print(rex.name);
print(rex.breed);
print(buddy.name);
print(buddy.breed);

الناتج:

Rex
German Shepherd
Buddy
Golden Retriever

توفّر Dart أيضًا صياغة مختصرة للمنشئ باستخدام this.variableName مباشرةً في قائمة المعلمات:

class Dog {
  String name;
  String breed;

  // صيغة مختصرة: تُسنِد المعاملات تلقائيًا إلى متغيرات الكائن
  Dog(this.name, this.breed);
}

ينتج كلا الإصدارين النتيجة نفسها. الصيغة المختصرة ميزة شائعة في Dart تلغي الحاجة إلى كتابة this.name = name يدويًا.

يمكنك أيضًا إضافة قيم افتراضية للمعلمات:

class Cat {
  String name;
  int age;

  Cat(this.name, [this.age = 1]); // القيمة الافتراضية لـ age هي 1
}

Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // القيمة الافتراضية لـ age هي 1

print('${fluffy.name} is ${fluffy.age}');    // عمر Fluffy هو 3
print('${whiskers.name} is ${whiskers.age}'); // عمر Whiskers هو 1

نقطة أساسية: تضمن البُناة تهيئة كل كائن بالبيانات على النحو الصحيح لحظة إنشائه، مما يغنيك عن ضبط المتغيرات يدويًا بعد ذلك.

challenge icon

التحدي

سهل

أُعطيت ملفات Dart (book.dart وdriver.dart) لتنفيذ نظام للكتب.

المهام المطلوبة منك:

  • أكمل الفئة Book في book.dart بإضافة مُنشئ يهيّئ title وauthor وpages: استخدم صياغة Dart المختصرة Book(this.title, this.author, this.pages);
  • في driver.dart، أنشئ كائنًا من Book بعنوان 'Harry Potter' من تأليف 'J.K. Rowling'، وعدد صفحاته 400

اتبع تعليقات TODO في كل ملف.

جرّب بنفسك

import 'book.dart';

void main() {
  // TODO: أنشئ كائنًا من Book بالخصائص التالية:
  // title: 'Harry Potter'، author: 'J.K. Rowling'، pages: 400
  Book myBook = ?;

  print("'${myBook.title}' by ${myBook.author}, ${myBook.pages} pages");
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم Dart عبر الإنترنت