تدريب عملي
التدريب العملي 11: المبرمج يرث الموظف
Employee بخاصية salary محمية بشرط، و Programmer يرثه ويضيف لغات البرمجة.
من الدرس 8. الوراثة Inheritance · كل التدريبات
١نص المسألة
أنشئ كلاس Employee فيه الاسم والعنوان وراتب private لا يقبل أقل من 4000. ثم أنشئ كلاس Programmer يرث Employee ويضيف مصفوفة لغات البرمجة ودالة تطبعها.
٢الخوارزمية المقترحة
- Employee: الخاصيتان name و address، والخاصية private double salary.
- setSalary: إذا كان salary >= 4000 احفظه، وإلا اطبع رسالة الخطأ.
- Programmer extends Employee: الخاصية private String[] progLangs، والدالتان setProgLangs و printProgLangs (حلقة for).
- في Main: أنشئ p من Programmer، وأعطه الاسم Ali والراتب 3999 (سيُرفض).
- أرسل مصفوفة اللغات Java و PHP و Python، ثم اطبع الاسم والراتب واللغات.
٣خطوات التطبيق
في NetBeans
- أنشئ مشروع lab11 بثلاثة كلاسات: Employee و Programmer و Main.
- في Programmer اكتب: public class Programmer extends Employee.
- لاحظ أن p.name و p.getSalary() موروثتان رغم أننا لم نكتبهما في Programmer.
في OneCompiler
- افتح OneCompiler من زر «▶ شغّل المشروع» أسفل الحل، أو من موقع onecompiler.com/java.
- في OneCompiler تُكتب كل الكلاسات في ملف واحد Main.java؛ زر التشغيل يجمعها لك تلقائيًّا.
- إذا كان البرنامج يقرأ من لوحة المفاتيح، فاكتب المدخلات في خانة STDIN التي تظهر تحت الكود في محرّر OneCompiler، ثم اضغط Run.
٤المخرجات المطلوبة
نفّذ برنامجك، ويجب أن تظهر المخرجات التالية:
run:
ERROR: salary must be >= 4000
name: Ali
salary: 0.0
Programming Languages:
Java
PHP
Python
BUILD SUCCESSFUL (total time: 0 seconds)
٥الحل المقترح
حاول بنفسك أولًا، ثم قارن حلّك بالحل المقترح (كود التدريب من مذكرة العملي):
👁 اعرض الحل المقترح
+ public- private# protected~ defaultمسطّر: staticمائل: abstract
package lab11;public class Employee { String name; String address; private double salary; public double getSalary() { return salary; } public void setSalary(double salary) { if(salary >= 4000) this.salary = salary; else System.out.println("ERROR: salary must be >= 4000"); }}
ملفات المشروع في تبويبات كما في NetBeans. زر التشغيل يجمعها في ملف واحد ليعمل على OneCompiler.
run:
ERROR: salary must be >= 4000
name: Ali
salary: 0.0
Programming Languages:
Java
PHP
Python
BUILD SUCCESSFUL (total time: 0 seconds)
أسئلة المناقشة
أسئلة مناقشة على التدريب 11. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».
1السؤال الأول: اختر الإجابة الصحيحة
1) ما نوع العلاقة بين الكلاس Programmer والكلاس Employee؟
2) لماذا لا يمكن الوصول مباشرة إلى المتغير salary من كائن Programmer؟
3) ما الطريقة الصحيحة لتغيير قيمة salary من خارج الكلاس؟
4) عند تنفيذ ما النتيجة؟
p.setSalary(3999);5) بعد محاولة تعيين salary بـ 3999، ماذا ستطبع الدالة getSalary()؟
6) لماذا استطعنا الوصول إلى name مباشرة في الكلاس Main رغم أنه موجود في الكلاس Employee؟
7) ما وظيفة الدالة printProgLangs() في الكلاس Programmer
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».