המשימה
נתונה המחלקה **המופשטת** Shape עם פעולה מופשטת area ופעולה מופשטת
name. מחלקה מופשטת אינה ניתנת ליצירה — היא רק מגדירה מה כל צורה
חייבת לדעת לעשות.
בנה שתי מחלקות שיורשות ממנה:
• Circle — תכונה radius. השטח: π·r². השם: circle.
• Rect — תכונות width ו-height. השטח: מכפלה. השם: rect.
ובנוסף, **פעולה חיצונית** שמקבלת מערך של Shape ומחזירה את הצורה
בעלת השטח הגדול ביותר.
הנחיות:
• השתמש ב-Math.PI ולא ב-3.14.
• הפעולה החיצונית אינה יודעת ואינה צריכה לדעת באיזו צורה מדובר —
היא קוראת ל-area, והשפה בוחרת בזמן ריצה את המימוש הנכון.
זו כל מהות הפולימורפיזם, ולכן אין בפעולה הזו שום בדיקת טיפוס.
• אתחל את המקסימום לאיבר הראשון.
```ds:table
{"title":"הצורות שבדוגמה","rows":[["צורה","נתונים","שטח"],["circle","r=2","12.566..."],["rect","4×5","20.0"],["circle","r=1","3.141..."],["rect","2×3","6.0"]]}
```
קוד הפתיחה
abstract class Shape {
public abstract double area();
public abstract String name();
}
class Circle extends Shape {
// תכונה: radius
public Circle(double radius) {
// אתחל
}
@Override
public double area() {
// כתוב את הפתרון כאן — Math.PI
return 0;
}
@Override
public String name() {
return ""; // circle
}
}
class Rect extends Shape {
// תכונות: width, height
public Rect(double width, double height) {
// אתחל
}
@Override
public double area() {
return 0;
}
@Override
public String name() {
return ""; // rect
}
}
public class Main {
/** מחזירה את הצורה בעלת השטח הגדול ביותר — בלי לבדוק טיפוסים. */
public static Shape largest(Shape[] arr) {
// כתוב את הפתרון כאן
return arr[0]; // מציב זמני
}
public static void main(String[] args) {
Shape[] shapes = {
new Circle(2),
new Rect(4, 5),
new Circle(1),
new Rect(2, 3)
};
for (int i = 0; i < shapes.length; i++) {
System.out.println(shapes[i].name() + " " + shapes[i].area());
}
System.out.println(largest(shapes).name()); // rect
System.out.println(largest(shapes).area()); // 20.0
}
}
כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון —
כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות
בדיקה חיצוני.