تدريب عملي
التدريب العملي 59: واجهة الطباعة Printable
واجهة Printable ينفّذها كلاسا Student و Book، ثم نطبع بياناتهما من مصفوفة واحدة.
من الدرس 15. تعدد الأشكال والتجريد والواجهات · كل التدريبات
١نص المسألة
أنشئ واجهة Printable فيها الدالة printInfo بلا جسم، ثم كلاسين ينفّذانها: Student (رقم واسم ودرجة) و Book (رقم وعنوان). في main ضع ثلاثة كائنات منهما في مصفوفة من نوع Printable، واطبع بيانات كل منها بحلقة.
٢الخوارزمية المقترحة
أ) تصميم الواجهة والكلاسات
- الواجهة Printable: دالة printInfo بلا جسم
- الكلاس Student ينفّذ Printable:
- الخصائص: الرقم، والاسم، والدرجة
- دالة printInfo: تطبع بيانات الطالب
- الكلاس Book ينفّذ Printable:
- الخصائص: الرقم، والعنوان
- دالة printInfo: تطبع بيانات الكتاب
ب) خطوات البرنامج الرئيسي
- ابدأ
- أنشئ مصفوفة من نوع Printable فيها: طالب، وكتاب، وطالب
- كرّر على كل عنصر في المصفوفة:
- استدعِ printInfo؛ فيطبع كل عنصر بياناته بطريقته
- توقف
٣خطوات التطبيق
في NetBeans
- أنشئ مشروعًا باسم Lab59 والكلاس الرئيسي Main.
- أنشئ الواجهة: زر أيمن على الحزمة ← New ← Java Interface، واسمها Printable.
- أنشئ الكلاسين Student و Book، واكتب بعد اسم كل منهما implements Printable.
- انقر على المصباح الذي يظهر واختر Implement all abstract methods، ثم اكتب جسم الدالة printInfo.
في OneCompiler
- افتح OneCompiler من زر «▶ شغّل المشروع» أسفل الحل، أو من موقع onecompiler.com/java.
- في OneCompiler تُكتب كل الكلاسات في ملف واحد Main.java؛ زر التشغيل يجمعها لك تلقائيًّا.
- إذا كان البرنامج يقرأ من لوحة المفاتيح، فاكتب المدخلات في خانة STDIN التي تظهر تحت الكود في محرّر OneCompiler، ثم اضغط Run.
٤المخرجات المطلوبة
نفّذ برنامجك، ويجب أن تظهر المخرجات التالية:
run:
Student: 4321 - Mohammed - 80.0
Book: 1 - Java in 10 days
Student: 4344 - Turki - 50.0
BUILD SUCCESSFUL (total time: 0 seconds)
٥الحل المقترح
حاول بنفسك أولًا، ثم قارن حلّك بالحل المقترح (كود التدريب من مذكرة العملي):
👁 اعرض الحل المقترح
package lab59; public interface Printable { void printInfo(); // دالة بلا جسم}
ملفات المشروع في تبويبات كما في NetBeans. زر التشغيل يجمعها في ملف واحد ليعمل على OneCompiler.
run:
Student: 4321 - Mohammed - 80.0
Book: 1 - Java in 10 days
Student: 4344 - Turki - 50.0
BUILD SUCCESSFUL (total time: 0 seconds)
أسئلة المناقشة
أسئلة مناقشة على التدريب 17. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».
1السؤال الأول: اختر الإجابة الصحيحة
1) لماذا وضعنا الطالب والكتاب في مصفوفة واحدة من نوع Printable؟
2) ماذا يحدث إذا حذفنا الدالة printInfo من الكلاس Book؟
3) في الحلقة for (Printable p : items) ما الذي يحدّد نسخة printInfo التي تُنفَّذ؟
4) أي سطر يُنشئ الواجهة في NetBeans؟
5) ما ناتج السطر الثاني في المخرجات؟
6) هل نستطيع كتابة Printable p = new Printable(); ؟
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».