recent
أخبار ساخنة

مفهوم دالة البناء Constructor في لغة سي بلس بلس C++ الدرس |26|

الصفحة الرئيسية


دالة البناء 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 ووضعنا به القيم التي يجب تمريرها للكونستركتور بشكل مباشر و قمنا بإستدعاء دالة الطباعة عن طريق الكائن و عندما قمنا بتشغيل الكود السابق سنحصل على النتيجة

 


google-playkhamsatmostaqltradent