في 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.