في Dart، يُستخدم الـ Parameterized Constructor لتهيئة متغيرات الكلاس. يتيح لك هذا النوع من الـ constructor تمرير قيم إلى الـ constructor أثناء إنشاء الكائن. سيقوم هذا المقال بشرح مفهوم الـ Parameterized Constructor في Dart مع الأمثلة.
بنية الـ Parameterized Constructor:
class ClassName {
// متغيرات الكلاس
int? number;
String? name;
// الـ Parameterized Constructor
ClassName(this.number, this.name);
}
أمثلة لتوضيح الـ Parameterized Constructor
مثال 1: الـ Parameterized Constructor في Dart
في هذا المثال، لدينا كلاس يسمى Student يحتوي على ثلاث خصائص: name و age و rollNumber. الكلاس يحتوي على الـ parameterized constructor الذي يأخذ قيمًا لهذه الخصائص. سنقوم بإنشاء كائن من الكلاس Student وطباعة قيم خصائصه.
class Student {
String? name;
int? age;
int? rollNumber;
// الـ Constructor
Student(this.name, this.age, this.rollNumber);
}
void main(){
// إنشاء كائن من الكلاس Student
Student student = Student("John", 20, 1);
// طباعة قيم الخصائص
print("الاسم: ${student.name}");
print("العمر: ${student.age}");
print("رقم اللفة: ${student.rollNumber}");
}
نتيجة الكود:
الاسم: John العمر: 20 رقم اللفة: 1
الشرح:
في المثال أعلاه، نقوم بتعريف الكلاس Student يحتوي على ثلاث خصائص: name و age و rollNumber. الـ parameterized constructor Student(this.name, this.age, this.rollNumber) يهيئ قيم هذه الخصائص باستخدام المعاملات الممررة.
في الدالة main، نقوم بإنشاء كائن student من الكلاس Student ونمرر قيم “John” و 20 و 1 إلى الـ constructor. ثم نقوم بطباعة قيم الخصائص باستخدام student.name و student.age و student.rollNumber.
مثال 2: استخدام المعاملات بأسماء في Dart
في هذا المثال، نقوم بتعديل الكلاس Student لاستخدام المعاملات بأسماء في الـ constructor. سنقوم بإنشاء كائن من الكلاس Student باستخدام المعاملات بأسماء ونقوم بطباعة القيم.
class Student {
String? name;
int? age;
int? rollNumber;
// الـ Constructor
Student({String? name, int? age, int? rollNumber}) {
this.name = name;
this.age = age;
this.rollNumber = rollNumber;
}
}
void main(){
// إنشاء كائن من الكلاس Student باستخدام المعاملات بأسماء
Student student = Student(name: "John", age: 20, rollNumber: 1);
// طباعة قيم الخصائص
print("الاسم: ${student.name}");
print("العمر: ${student.age}");
print("رقم اللفة: ${student.rollNumber}");
}
نتيجة الكود:
الاسم: John العمر: 20 رقم اللفة: 1
الشرح:
في هذا المثال، نعدل الكلاسStudent لاستخدام المعاملات بأسماء في الـ constructor. تعريف الـ constructor Student({String? name, int? age, int? rollNumber}) يسمح لنا بتمرير القيم باستخدام أسماء المعاملات.
في الدالة main، نقوم بإنشاء كائن student من الكلاس Student باستخدام المعاملات بأسماء name: "John" و age: 20 و rollNumber: 1. القيم تُسند إلى الخصائص المُقابلة في الـ constructor. ثم نقوم بطباعة قيم الخصائص باستخدام student.name و student.age و student.rollNumber.
مثال 3: الـ Parameterized Constructor مع قيم افتراضية
في هذا المثال، نقوم بتعديل الكلاس Student لتحتوي على قيم افتراضية للمعاملات. سنقوم بإنشاء كائن من الكلاس Student دون تمرير أي معاملات ونقوم بطباعة القيم.
class Student {
String? name;
int? age;
// الـ Constructor
Student({String? name = "John", int? age = 0}) {
this.name = name;
this.age = age;
}
}
void main(){
// إنشاء كائن من الكلاس Student
Student student = Student();
// طباعة قيم الخصائص
print("الاسم: ${student.name}");
print("العمر: ${student.age}");
}
نتيجة الكود:
الاسم: John العمر: 0
الشرح:
في هذا المثال، نقوم بتعديل الـ constructor في الكلاس Student ليحتوي على قيم افتراضية للمعاملات. تعريف الـ constructor Student({String? name = "John", int? age = 0}) يسند القيم الافتراضية “John” و 0 إلى المعاملات name و age عندما لا تُقدم أي قيم أثناء إنشاء الكائن.
في الدالة main، نقوم بإنشاء كائن student من الكلاس Student دون تمرير أي معاملات. نظرًا لأنه لم يتم تقديم أي قيم، يتم تعيين القيم الافتراضية “John” و 0 للخصائص name و age. ثم نقوم بطباعة قيم الخصائص باستخدام student.name و student.age.
باختصار، الـ parameterized constructor في Dart يسمح لك بتهيئة متغيرات الكلاس باستخدام المعاملات الممررة. إنه يوفر المرونة في تحديد الـ constructors بإمكانك استخدام المعاملات بشكل موضعي أو باستخدام أسماء المعاملات. يمكن أيضًا تعيين قيم افتراضية للمعاملات للتعامل مع الحالات التي لا يتم تقديم قيم أثناء إنشاء الكائن.
من خلال فهم واستخدام الـ parameterized constructors بفعالية، يمكنك إنشاء كلاسات أكثر قوة ومرونة في Dart.




