فهرس المقرر
تدريب عملي

التدريب العملي 5: مشروع المكتبة library

كلاس Book بدالتي بناء، وكلاس Main ينشئ كتابين بطريقتين.

new Book(2, …) bk2 : Book id = 2title = "Learn Javan"author = "Fahad"price = 11.67 …

من الدرس 3. دالة البناء Constructor · كل التدريبات

١نص المسألة

أنشئ مشروع مكتبة library فيه كلاس Book بخصائص الكتاب (id و title و author و price و pages)، ودالتي بناء: افتراضية، وأخرى تستقبل جميع القيم. أضف دالة printBookDetails تطبع بيانات الكتاب. في Main أنشئ كتابين بالطريقتين واطبع بياناتهما.

٢الخوارزمية المقترحة

  1. أنشئ كلاس Book وعرّف فيه الخصائص الخمس.
  2. اكتب دالة البناء الافتراضية Book() بلا عمل.
  3. اكتب دالة البناء Book(id, title, author, price, pages) وأسند القيم باستخدام this.
  4. اكتب الدالة printBookDetails تطبع الخصائص الخمس.
  5. في Main: أنشئ bk1 بالدالة الافتراضية وأعطه id و title فقط.
  6. أنشئ bk2 بدالة البناء ذات المعاملات.
  7. استدعِ printBookDetails للكائنين بينهما سطر من الشرطات.

٣خطوات التطبيق

في NetBeans

  1. أنشئ مشروعًا باسم library، مع تفعيل Create Main Class باسم library.Main.
  2. انقر بالزر الأيمن على الحزمة library‏ ← ‏New‏ ← ‏Java Class، واسمه Book.
  3. اكتب كود Book ثم كود Main، ونفّذ.

في OneCompiler

  1. افتح OneCompiler من زر «▶ شغّل المشروع» أسفل الحل، أو من موقع onecompiler.com/java.
  2. في OneCompiler تُكتب كل الكلاسات في ملف واحد Main.java؛ زر التشغيل يجمعها لك تلقائيًّا.
  3. إذا كان البرنامج يقرأ من لوحة المفاتيح، فاكتب المدخلات في خانة STDIN التي تظهر تحت الكود في محرّر OneCompiler، ثم اضغط Run.

٤المخرجات المطلوبة

نفّذ برنامجك، ويجب أن تظهر المخرجات التالية:

Output – (run)×
run:
Id: 1
Title: Java in 10 days
Author: null
Price: 0.0
Pages: 0
----------
Id: 2
Title: Learn Javan
Author: Fahad
Price: 11.67
Pages: 237
BUILD SUCCESSFUL (total time: 0 seconds)

٥الحل المقترح

حاول بنفسك أولًا، ثم قارن حلّك بالحل المقترح (كود التدريب من مذكرة العملي):

👁 اعرض الحل المقترح
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;    }    public void printBookDetails(){        System.out.println("Id: " + this.id);        System.out.println("Title: " + this.title);        System.out.println("Author: " + this.author);        System.out.println("Price: " + this.price);        System.out.println("Pages: " + this.pages);    }}
package library;public class Main {    public static void main(String[] args) {        Book bk1 = new Book();        bk1.id = 1;        bk1.title = "Java in 10 days";         Book bk2 = new Book(2, "Learn Javan", "Fahad", 11.67,237);         bk1.printBookDetails();        System.out.println("----------");        bk2.printBookDetails();    }}
مخطط المشروع مستخرج من الكود. انقر على أي كلاس لفتح كوده.
BookMain
Book~ id : int~ title : String~ author : String~ price : double~ pages : int+ Book()+ Book(id : int, title : String, author : String, price : double, pages : int)+ printBookDetails() : voidMain+ main(args : String[]) : void

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

Output – Library (run)×
run:
Id: 1
Title: Java in 10 days
Author: null
Price: 0.0
Pages: 0
----------
Id: 2
Title: Learn Javan
Author: Fahad
Price: 11.67
Pages: 237
BUILD SUCCESSFUL (total time: 0 seconds)

أسئلة المناقشة

أسئلة مناقشة على التدريب 5. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) ما الغرض من الدالة printBookDetails في الكلاس Book؟
2) ماذا يحدث إذا لم نُعرّف أي constructor في الكلاس Book؟
3) أي عبارة صحيحة عن الـ constructor الذي يستقبل معاملات في الكلاس Book؟
4) عند تنفيذ السطر التالي :
snippet
Book bk1 = new Book();
ما الذي يحدث؟
5) عند استدعاء
snippet
 bk1.printBookDetails();
مباشرة بعد الإنشاء دون تعيين أي قيم، ما القيم التي ستُطبع؟
6) ما الهدف من استخدام this داخل الكلاس Book؟
7) ما الفرق بين الكائنين bk1 و bk2 في الكود؟
8) ماذا تطبع الجملة:
snippet
 System.out.println(bk2.title);
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».