تدريب عملي
التدريب العملي 3: تدريب إضافي على التحميل الزائد Overloading
دالتان بالاسم sum: الأولى للأعداد الصحيحة والثانية للعشرية. لاحظ أيّهما تُستدعى في الحالة الثالثة.
من الدرس 1. الدوال المعرّفة من قبل المستخدم · كل التدريبات
١نص المسألة
اكتب دالتين بالاسم نفسه sum: الأولى تجمع عددين صحيحين int، والثانية تجمع عددين عشريين double، وكل دالة تطبع نوعها قبل أن تعيد الناتج. ثم استدعِ sum بثلاث صور ولاحظ أي دالة تُنفَّذ.
٢الخوارزمية المقترحة
- عرّف static int sum(int a, int b) تطبع "int sum" ثم تعيد a + b.
- عرّف static double sum(double a, double b) تطبع "double sum" ثم تعيد a + b.
- في main اطبع ناتج sum(8, 2) ثم sum(2.5, 3.5) ثم sum(2, 3.5).
- لاحظ: sum(2, 3.5) لا توجد لها دالة (int, double)، فتُستدعى نسخة double.
٣خطوات التطبيق
في NetBeans
- أنشئ مشروعًا جديدًا: File ← New Project ← Java with Ant ← Java Application.
- اكتب اسم المشروع، وفعّل Create Main Class.
- اكتب الكود ثم نفّذ بـ Run (F6).
في OneCompiler
- افتح OneCompiler من زر «▶ شغّل المشروع» أسفل الحل، أو من موقع onecompiler.com/java.
- في OneCompiler تُكتب كل الكلاسات في ملف واحد Main.java؛ زر التشغيل يجمعها لك تلقائيًّا.
- إذا كان البرنامج يقرأ من لوحة المفاتيح، فاكتب المدخلات في خانة STDIN التي تظهر تحت الكود في محرّر OneCompiler، ثم اضغط Run.
٤المخرجات المطلوبة
نفّذ برنامجك، ويجب أن تظهر المخرجات التالية:
run:
int sum
8 + 2 = 10
double sum
2.5 + 3.5 = 6.0
double sum
2 + 3.5 = 5.5
BUILD SUCCESSFUL (total time: 0 seconds)
٥الحل المقترح
حاول بنفسك أولًا، ثم قارن حلّك بالحل المقترح (كود التدريب من مذكرة العملي):
👁 اعرض الحل المقترح
package javaapplication3;public class JavaApplication3 { static int sum(int a, int b){ System.out.println("int sum"); return a + b; } static double sum(double a, double b){ System.out.println("double sum"); return a + b; } public static void main(String[] args) { System.out.println("8 + 2 = " + sum(8,2)); System.out.println("2.5 + 3.5 = " + sum(2.5, 3.5)); System.out.println("2 + 3.5 = " + sum(2, 3.5)); }}
run:
int sum
8 + 2 = 10
double sum
2.5 + 3.5 = 6.0
double sum
2 + 3.5 = 5.5
BUILD SUCCESSFUL (total time: 0 seconds)
أسئلة المناقشة
أسئلة مناقشة على التدريب 3. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».
1السؤال الأول: اختر الإجابة الصحيحة
1) ما سبب نجاح تعريف دالتين بنفس الاسم sum في هذا البرنامج؟
2) عند استدعاء sum(8,2) أي نسخة من الدالة سيتم استدعاؤها؟
3) عند استدعاء sum(2.5, 3.5) ما الذي يطبع أولاً على الشاشة؟
4) ما الفائدة الأساسية من Overloading في هذا البرنامج؟
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».