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

أساسيات الـ Constructor

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

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

إليك مثالًا على فئة مع مُنشئ:

class Dog {
  String name;
  String breed;

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

يحمل constructor الاسم نفسه الذي تحمله class. يتم تمرير parameters عند إنشاء object.

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

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

الوصول إلى variables التي عيّنها constructor:

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

المخرجات:

Rex
German Shepherd
Buddy
Golden Retriever

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

class Dog {
  String name;
  String breed;

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

ينتج كلا الإصدارين النتيجة نفسها. تُعد ميزة shorthand شائعة في 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

النقطة الأساسية: تضمن constructors تهيئة كل object بالبيانات بشكل صحيح في اللحظة التي يتم فيها إنشاؤه، مما يعفيك من تعيين variables يدويًا بعد ذلك.

challenge icon

التحدي

سهل

أُعطيت ملفات PHP (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 عبر الإنترنت