الوحدة 2: أساسيات البرمجة الشيئية · الموضوع 3 من 17
الموضوع 3

دالة البناء Constructor

دالة خاصة تُستدعى تلقائيًّا لحظة إنشاء الكائن، لتعطي خصائصه قيمها الأولى.

new Book(2, …) bk2 : Book id = 2title = "Learn Javan"author = "Fahad"price = 11.67 …
بعد هذا الدرس ستستطيع أن:
  • تعرّف دالة البناء constructor، وتذكر شروط كتابتها.
  • تكتب دالة بناء افتراضية وأخرى بمعاملات للكلاس نفسه.
  • تستخدم الكلمة this للتمييز بين خاصية الكائن والمعامل.
  • تصل إلى خصائص الكائن ودواله باستخدام النقطة، وتتوقّع القيم الافتراضية للخصائص.

١دالة البناء constructor

دالة خاصة تُستخدم لتهيئة الكائنات، وتُستدعى تلقائيًّا عند إنشاء كائن: Book bk1 = new Book();
الشرطالتوضيح
الاسممطابق لاسم الكلاس
النوع الراجعلا يُكتب أي نوع، ولا حتى void
إذا لم تكتبهاكل الكلاسات فيها دالة بناء افتراضية، لكن بلا عمل إضافي
package library; public class Main {     public static void main(String[] args) {        Book bk1 = new Book();    }}
package library; public class Book {    // constructor    // دالة البناء    public Book() {    }}
مخطط المشروع مستخرج من الكود. انقر على أي كلاس لفتح كوده.
MainBook
Main+ main(args : String[]) : voidBook+ Book()

٢دالة بناء بمعاملات

تستقبل معاملات تُستخدم لتهيئة خصائص الكائن عند إنشائه: Book bk2 = new Book(2, "Learn Javan", "Fahad", 11.67,237);

public Book(int id, …) this.id= id; id‏ ← ‏المعامل (القيمة 2) bk2 : Book id = 2title = "Learn Javan"
this.id = خاصية الكائن الذي يُنشأ الآن، و id وحدها = المعامل. بدون this يُسند المعامل إلى نفسه وتبقى الخاصية فارغة.

٣الوصول إلى خصائص الكلاس

بعد إنشاء الكائن نصل إلى خصائصه بصيغة النقطة (.)، فنقرأ قيمتها أو نعدّلها. وفي NetBeans تظهر قائمة الخصائص تلقائيًّا بعد كتابة bk1.

«create»Book~ id : int~ title : String~ author : String~ price : double~ pages : int+ Book()+ Book(id, title, author, price, pages)Main+ main(args : String[]) : void
🧩 دالتا البناء في قسم الدوال باسم الكلاس نفسه وبلا نوع راجع. والسهم المتقطع: Main تستخدم Book وتنشئ منه الكائنين bk1 و bk2.
+ public- private# protected~ defaultمسطّر: staticمائل: abstract
package library;public class Main {    public static void main(String[] args) {        Book bk1 = new Book();        System.out.println("id: " + bk1.id);        System.out.println("title: " + bk1.title);        bk1.id = 1;        bk1.title = "Java in 10 days";        bk1.author = "Ali";        bk1.price = 54.99;        bk1.pages = 416;        System.out.println("id: " + bk1.id);        System.out.println("title: " + bk1.title);        System.out.println("-------------------");         Book bk2 = new Book(2, "Learn Javan", "Fahad",                            11.67,237);         System.out.println("id: " + bk2.id);        System.out.println("title: " + bk2.title);    }}
package library;public class Book {    //Attributes | Fields | Data Members الخصائص    int id;    String title;    String author;    double price;    int pages;    //دالة بناء    public Book() {    }    // دالة بناء ثانية    public Book(int id, String title, String author,                double price, int pages) {        this.id = id;        this.title = title;        this.author = author;        this.price = price;        this.pages = pages;    }}
مخطط المشروع مستخرج من الكود. انقر على أي كلاس لفتح كوده.
MainBook
Main+ main(args : String[]) : voidBook~ id : int~ title : String~ author : String~ price : double~ pages : int+ Book()+ Book(id : int, title : String, author : String, price : double, pages : int)

ملفات المشروع في تبويبات كما في NetBeans. زر التشغيل يجمعها في ملف واحد ليعمل على OneCompiler.

Output – Library (run)×
run:
id: 0
title: null
id: 1
title: Java in 10 days
-------------------
id: 2
title: Learn Javan
BUILD SUCCESSFUL (total time: 0 seconds)

قبل إعطاء bk1 قيمًا طُبعت القيم الافتراضية: 0 للعدد و null للنص.

٤وظائف الكلاس methods

الدوال تمثّل أفعال الكلاس، وتُعرَّف داخله، وتُستدعى عن طريق كائن معيّن فتعمل على خصائصه هو دون غيره. نضيف إلى Book الدالة printBookDetails() ونستدعيها لكل كتاب، وهذا هو التدريب العملي 5 التالي.

التدريب العملي 5: مشروع المكتبة libraryكلاس Book بدالتي بناء، وكلاس Main ينشئ كتابين بطريقتين.افتح التدريب ←التدريب العملي 6: كلاس الطالب Studentأنشئ مشروع Student وكلاسًا حسب المخطط، ثم أنشئ طالبين بطريقتين.افتح التدريب ←

توقّع وتحقّق

أجب قبل أن تنظر إلى الشرح. التصحيح فوري، وإجاباتك تُحفظ.

أي رأس صحيح لدالة بناء في الكلاس Book؟

متى تُستدعى دالة البناء؟

ماذا يُطبع لخاصية نصية لم نعطها قيمة؟

في this.id = id; الكلمة this تشير إلى:

الخلاصة

انتقل إلى تقييم الدرسأسئلة التقييم، وأكمل الفراغات.ابدأ التقييم ←