recent
أخبار ساخنة

دوال البناء constructor في لغة جافا JAVA الدرس|24|

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

 

دوال البناء constructor

هي عبارة عن دالة تحمل نفس إسم الكلاس لكن لا تعيد قيمة و يتم تنفيذها تلقائياً بمجرد إنشاء الكائن.

 

الشكل العام

public class Con1

Con1()

{

//وضع ما نريد تنفيذ عند تشغيل البرنامج

}

كما نلاحظ بأن دالة constructor حملت نفس إسم الكلاس Con1 سوف تتنفذ تلقائياً بمجرد إنشاء كائن و هنا النقطة المهمة هي يتم تنفيذها تلقائياً بمجرد إنشاء كائن يعني إذا اردنا أن نقوم بعملية عند تشغيل البرنامج نستخدم constructor, على سبيل المثال نريد أن تظهر رسالة ترحيبية بمجرد تشغيل البرنامج أو رسالة معينة للمستخدم, أو على سبيل المثال نريد إعطاء قيم اولية لبعض المتغيرات أو تصفيرها بمجرد تشغيل البرنامج, و مثال آخر يتم إستخدام constructor في قواعد البيانات و برمجة الشبكات, إذا اردنا بمجرد تشغيل البرنامج يتم الإتصال مباشرتاً بقاعدة البرنامج.

مثال 1

package con23;

public class Con23 {
    Con23()
    {
        System.out.println("Hello Programmer Tech");
    }
    
    public static void main(String[] args) {
        Con23 cs=new Con23();
    }

}



و عند تشغيل البرنامج أو تنفيذ هذا الكود ستكون النتيجة


شرح البرنامج السابق 1

انشأنا كلاس Con1 ثم انشأنا constructor و أخذ نفس إسم الكلاس لأن الدالة هذه تأخذ نفس إسم الكلاس و وضعنا لها طباعة عبارة Hello Programmer Tech بمجرد تشغيل البرنامج, و في البرنامج الرئيسي إشتقينا كائن من إسم الكلاس حتى يتم تنفيذ دالة constructor, أما إذا ازلنا الكائن فلن يتم طباعة شيئ لأن هذه شروط الـ constructor أنها تعمل بمجرد إنشاء كائن.


كما أن في البرمجة الكائنية الموجهة يمكن إنشاء اكثر من دالة بناء بشرط أن تكون مختلفة بعدد الباراميترات يعني على سبيل المثال إذا كتبنا دالة بناء اخرى سوف يعترض المفسر Compiler على الدالة يعني هي موجودة لماذا نبنيها مرة اخرى أما إذا غيرنا عدد الباراميترات سوف يسمح لنا بالبناء لأنها اختلفت عن الأولى.

 

مثال 2

package con23;
public class Con23 {
    int y;
    Con23()
    {
        System.out.println("Hello Programmer Tech");
    }
    Con23(int x)
    {
        y=x;
    }
    public static void main(String[] args) {
        Con23 cs=new Con23();
        Con23 cs1=new Con23(2);
        Con23 cs2=new Con23(3);
        System.out.println(cs1.y);
        System.out.println(cs2.y);
    }
}

 

و عند التنفيذ

 

شرح البرنامج السابق 2

انشأنا متغير y و دالتين بناء الأولى هي لطباعة الجملة الترحيبية و الثانية انشانا بها متغير y=x ثم دخلنا للبرنامج الرئيسي انشأنا ثلاث كائنات, الأول من اجل الدالة الأولى و طباعة الجملة الترحيبية و الثاني يحمل القيمة 2 و الثالث يحمل القيمة 3 و وضعنا امر الطباعة و هو طباعة قيمة الكائن الأول cs1 و الثاني لطباعة قيمة الكائن cs2 و عند التنفيذ نفذ لنا ما طلبناه.


مثال 3

package con23;
public class Con23 {
    int y;
    double y1;
    Con23()
    {
        System.out.println("Hello Programmer Tech");
    }
    Con23(int x)
    {
        y=x;
    }
    Con23(double x)
    {
        y1=x;
    }
    public static void main(String[] args) {
        Con23 cs=new Con23();
        Con23 cs1=new Con23(2);
        Con23 cs2=new Con23(2.3);
        System.out.println(cs1.y); 
        System.out.println(cs2.y1);  
    }
}


 

و نتيجة التنفيذ

شرح البرنامج السابق 3

لقد أنشأنا في هذا المثال متغير عددي int و هو y و متغير آخر من نوع double و هو y1 ثم أنشأنا دالة Con23 ,و هي int x و اوامرها y=x ثم أنشأنا دالة ثانية و كان المتغير هو double و هو y1=x ثم دخلنا للبرنامج الرئيسي و أنشأنا ثلاث كائنات و هي الأول cs من أجل الرسالة الترحيبية و الثاني cs1 محمل بالقيمة 2 و الثالث cs2 محمل بالقيمة 2.3 ثم قمنا بكتابة امر الطباعة الأول يطبع لنا y و امر الطباعة الثاني يطبع y1.


مثال 4

package con23;
public class Con23 {
    int y;
    double y1;
    Con23()
    {
        System.out.println("Hello Programmer Tech");
    }
    Con23(int x)
    {
        y=x;
    }
    Con23(double x)
    {
        y1=x;
    }
    Con23(double x, int x1)
    {
        y1=x+x1;
    }
    public static void main(String[] args) {
        Con23 cs=new Con23();
        Con23 cs1=new Con23(2);
        Con23 cs2=new Con23(2.3,26);
        System.out.println(cs1.y);  //cs1 طباعة
        System.out.println(cs2.y1);  //cs2 طباعة
    }
}

و نتيجة


شرح البرنامج السابق 4

شرح هذا المثال مطابق لشرح المثال الثالث السابق لكن وضعنا بهى عملية جمع y1=x+x1 و يكون ضمن الدالة باراميترين.

google-playkhamsatmostaqltradent