الدرس 5 من 10
الدوال والتحميل الزائد
- 12 دقيقة
- 6 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
قيمة مُرجعة ونسخ بالاسم نفسه
الشرح
توقيع الدالة يعلن كل شيء عنها: نوع ما تُرجعه، ثم اسمها، ثم نوع كل وسيط: static int heal(int hp, int amount). والتي لا تُرجع شيئًا نوعها void. وreturn تُنهي الدالة فورًا بقيمتها، والمترجم يرفض دالة قد تنتهي بلا return.
والتحميل الزائد (overloading) دوال عدّة بالاسم نفسه ووسائط تختلف في العدد أو النوع، والمترجم يختار بحسب ما تمرّره: max(3, 9) تستدعي نسخة int، وmax(2.5, 1.5) نسخة double. وليس في Java قيم افتراضية للوسائط، فالتحميل الزائد يقوم مقامها: heal(hp) تستدعي heal(hp, 25)، فيبقى المنطق في مكان واحد.
والفخّ: Java تمرّر إلى الدالة نسخة من قيمة الوسيط، فتعديل hp داخلها لا يمسّ متغيّر المستدعي. وheal(hp, 30); وحدها تحسب النتيجة ثم ترميها؛ احفظ ما تُرجعه: hp = heal(hp, 30);.
المطلوب
أكمل ثلاث نسخ من max: لعددين صحيحين، ولعددين عشريين، ولثلاثة أعداد صحيحة تبنيها من نسخة العددين. وheal(hp, amount) تُرجع الصحة بعد الشفاء دون أن تتجاوز 100، وheal(hp) تشفي 25 باستدعاء الأولى. ثم أصلح main لتطبع الصحة: 100.
معايير التصحيح
6 معايير- max لعددين صحيحين
- max لعددين عشريين نسخة مستقلّة
- max لثلاثة أعداد
- heal تزيد الصحة ولا تتجاوز 100
- heal بلا مقدار تشفي 25
- طُبع: الصحة: 100