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

التدريب العملي 9: العدّاد الثابت والضريبة الثابتة

الجزء الأول: عدّاد static للكتب. الجزء الثاني: إضافة price والثابت TAX ودالة calcPrice.

staticnumber_of_books = 2 book1book2 final

من الدرس 6. محددات عدم الوصول: static و final · كل التدريبات

١نص المسألة

في كلاس Book استخدم متغيرًا static يعدّ الكتب المنشأة، ودالة static تعيد العدد. ثم أضف سعرًا وثابت ضريبة final static قيمته 0.15، ودالة calcPrice تحسب الضريبة والسعر النهائي.

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

  1. عرّف static int number_of_books = 0، وزِده بواحد داخل دالة البناء.
  2. اكتب static int total_books() تعيد العدد.
  3. أضف الخاصية price والثابت public static final double TAX = 0.15.
  4. calcPrice: اطبع السعر، ثم الضريبة = price * TAX، ثم المجموع = price + tax.
  5. في Main أنشئ كتابين واطبع Book.total_books()، ثم أعطِ book1 السعر 100 واستدعِ calcPrice.
  6. جرّب كتابة Book.TAX = 0.05; ولاحظ خطأ الترجمة.

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

في NetBeans

  1. أنشئ مشروعًا باسم non access بحزمة non.access.
  2. اكتب كلاس Book ثم Main ونفّذ.
  3. أضف ما بين التعليقات المتقطعة في الكلاسين.
  4. جرّب إزالة // من السطر Book.TAX = 0.05; ولاحظ رسالة الخطأ.

في OneCompiler

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

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

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

Output – (run)×
run:
Books #: 2
Price: 100.0
Tax: 15.0
Total: 115.0
BUILD SUCCESSFUL (total time: 0 seconds)

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

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

👁 اعرض الحل المقترح
package non.access;public class Book {    int id;    String title;    static int number_of_books = 0;    // -----------------    public double price;    public static final double TAX = 0.15;    // -----------------    public Book() {        number_of_books++;    }    static int total_books() {        return number_of_books;    }    // -----------------    public void calcPrice(){        System.out.println("Price: " + price);        double tax = price * TAX;        System.out.println("Tax: " + tax);        double total = price + tax;        System.out.println("Total: " + total);    }    // -----------------}
package non.access;public class Main {     public static void main(String[] args) {        Book book1 = new Book();        book1.id = 1;        book1.title = "Effective Java";         Book book2 = new Book();        System.out.println("Books #: " + Book.total_books());         // من هنا اكتب الإضافة التالية        book1.price = 100;         // لا يمكن تغيير قيمته        //Book.TAX = 0.05;        book1.calcPrice();    }}
مخطط المشروع مستخرج من الكود. انقر على أي كلاس لفتح كوده.
BookMain
Book~ id : int~ title : String~ number_of_books : int+ price : double+ TAX : double+ Book()~ total_books() : int+ calcPrice() : voidMain+ main(args : String[]) : void

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

Output – non access (run)×
run:
Books #: 2
Price: 100.0
Tax: 15.0
Total: 115.0
BUILD SUCCESSFUL (total time: 0 seconds)

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

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

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

1) عند تعريف المتغير number_of_books على أنه static، ماذا يعني ذلك؟
2) لماذا يزداد عدد number_of_books عند إنشاء كائن جديد من الكلاس Book؟
3) ما فائدة الدالة static total_books()؟
4) عند تنفيذ السطر System.out.println("Books #: " + Book.total_books()); ماذا يحدث؟
5) ما معنى تعريف TAX على أنها static final؟
6) ماذا يحدث إذا أزلنا final من تعريف TAX؟
7) ماذا يحدث عند محاولة تعديل قيمة Book.TAX داخل Main؟
8) في الدالة calcPrice()، كيف يتم حساب الضريبة؟
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».