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

أساسيات الـ Constructor

جزء من قسم Object Oriented Programming في رحلة Dart على Coddy — الدرس 8 من 110.

المُنشئ (constructor) هو دالة خاصة تعمل تلقائياً عند إنشاء كائن (object) جديد. حيث يقوم بتهيئة متغيرات الكائن (instance variables) في لحظة الإنشاء مباشرة.

إليك مثال على فئة (class) مع منشئ (constructor):

class Dog {
  String name;
  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');

قم بالوصول إلى المتغيرات التي حددها المنشئ (constructor):

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

نقطة هامة: تضمن المشيدات (Constructors) تهيئة كل كائن بشكل صحيح بالبيانات في لحظة إنشائه، مما يغنيك عن تعيين المتغيرات يدويًا بعد ذلك.

challenge icon

التحدي

سهل

لقد تم تزويدك بملفات PHP (book.dart و driver.dart) لتنفيذ نظام كتب.

مهامك:

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

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

ورقة مرجعية

المنشئ (Constructor) هو طريقة خاصة تعمل تلقائيًا عند إنشاء كائن جديد. يقوم بتهيئة متغيرات النسخة (instance variables) للكائن في لحظة الإنشاء.

يحمل المنشئ نفس اسم الفئة (class):

class Dog {
  String name;
  String breed;

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

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

Dog rex = Dog('Rex', 'German Shepherd');

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

class Dog {
  String name;
  String breed;

  Dog(this.name, this.breed);
}

يمكنك إضافة قيم افتراضية للمعلمات باستخدام المعلمات الموضعية الاختيارية:

class Cat {
  String name;
  int age;

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

Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // العمر الافتراضي هو 1

جرّب بنفسك

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اختبر نفسك

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

جميع دروس Object Oriented Programming