دالة البناء Constructor
سوف نتعرَف في هذا الدرس على دالة البناء Constructor هي اول دالة يتم إستدعائها عند إنشاء أي كائن object من أي كلاس, و من أهم مهام هذه الدالة أنها تقوم بإعطاء قيم اولية لجميع المُتغيرات الموجودة في الكلاس.
صفات دالة البناء Constructor
- لا تقوم بإرجاع قيمة و لا حتى void.
- إسمها يأتي نفس إسم الكلاس (فإذا كان إسم الكلاس Date فيكون إسمها أيضاً Date).
- يتم إستدعائها عند إنشاء أي كائن من الكلاس مباشرتاً.
مثال 1
لنُفكر ماذا يوجد حولنا "هواتف ذكية و يوجد أشخاص" سوف نقوم بعمل كلاس يقوم بحفظ أشخاص فالشخص لديه إسم و عمر و طول و الطول يُعتبَر مُهم, سوف نقوم بعمل كلاس يحفظ بيانات الشخص.
#include <iostream> using namespace std; class Person { public: string name; int age; double height; Person(string n, int a, double h) { name = n; age = a; height = h; } void print() { cout << "الأسم " << name << endl; cout << "العمر" << age << endl; cout << "الطول" << height << endl; } }; int main() { Person saja("Saja", 27, 155.7); saja.print(); return 0; }
شرح المثال السابق 1
لقد قمنا بإنشاء كلاس إسمه Person و كان به ثلاث متغيرات عامة و هي متغير نصي string من أجل تخزين الإسم فيه و متغير عددي int لتخزين العمر فيه و متغير بفاصلة عشريه double لتخزين الطول فيه, ثم قمنا بإنشاء كونستركتر Constructor و أخذ نفس إسم الكلاس Person و عرفنا به المتغيرات الثلاث بأن المتغير الذي يرمز للإسم نختصره بحرف n و المتغير الذي يرمز للعمر بحرف a و المتغير الذي يرمز للطول h ثم عرّفناهم و بعد ذلك قمنا بإنشاء دالة void من اجل الطباعة print عند إستدعائها ووضعنا بأن يطبع لنا على شاشة الإخراج عبر cout أن يطبع الأسم و اسفله العمر و اسفله الطول, ثم دخلنا بداخل الدالة main و أنشأنا كائن من إسم الكلاس إسمه saja ووضعنا بداخل الأقواس القيم الذي سوف يتم إستدعائها و تعيينها للمتغيرات الثلاث و إستدعينا دالة الطباعة عن طريق الكائن saja و عند تنفيذ هذا البرنامج سوف نحصل على النتيجة الآتية
كما نلاحظ أنه طبع لنا الإسم Saja في الأعلى ثم العمر 27 ثم الطول 155.7.
مثال 2
قم بكتابة برنامج يكون به كلاس بإسم Car و به اربع متغيرات لإسم السيارة و لونها و سرعتها و تاريخ صنعها.
#include <iostream> using namespace std; class Car { public: string name; string color; int speed; int model; Car(string name, string color, int speed, int model) { this->name = name; this->color = color; this->speed = speed; this->model = model; } void printInfo() { cout << "Name: " << name << "\n"; cout << "Color: " << color << "\n"; cout << "Speed: " << speed << "\n"; cout << "Model: " << model << "\n"; } }; int main() { Car car("BMW", "black", 240, 2001); car.printInfo(); return 0; }
شرح المثال السابق 2
لقد قمنا بإنشاء كلاس إسمه Car و قمنا بإنشاء اربع متغيرات عامة public و هي متغير نصي لإسم السيارة name و متغير نصي آخر للون السيارة color و متغير عددي صحيح لسرعة السيارة speed و متغير عددي لتاريخ صنعها او موديلها model و قمنا بإنشاء كونستركتور أخذ نفس إسم الكلاس Car و مررنا بيانات به من أجل إستدعاءه ثم قمنا بوضع القيم التي يجب تمريرها للكونستركتور و بعدها قمنا بإنشاء دالة طباعة عن طريق void و الدالة هي printInfo مهمتها طباعة كل قيم المتغيرات الموجودة في الكلاس Car و دخلنا لداخل الدالة main قمنا بإشتقاق كائن من الكلاس Car و الكائن هو car ووضعنا به القيم التي يجب تمريرها للكونستركتور بشكل مباشر و قمنا بإستدعاء دالة الطباعة عن طريق الكائن و عندما قمنا بتشغيل الكود السابق سنحصل على النتيجة
ليست هناك تعليقات:
إرسال تعليق