המשימה
נתונה המחלקה **המופשטת** 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"]]}
```
קוד הפתיחה
using System;
abstract class Shape {
public abstract double Area();
public abstract string Name();
}
class Circle : Shape {
// תכונה: radius
public Circle(double radius) {
// אתחל
}
public override double Area() {
// כתוב את הפתרון כאן — Math.PI
return 0;
}
public override string Name() {
return ""; // circle
}
}
class Rect : Shape {
// תכונות: width, height
public Rect(double width, double height) {
// אתחל
}
public override double Area() {
return 0;
}
public override string Name() {
return ""; // rect
}
}
class Program {
/** מחזירה את הצורה בעלת השטח הגדול ביותר — בלי לבדוק טיפוסים. */
static Shape Largest(Shape[] arr) {
// כתוב את הפתרון כאן
return arr[0]; // מציב זמני
}
static void Main() {
Shape[] shapes = {
new Circle(2),
new Rect(4, 5),
new Circle(1),
new Rect(2, 3)
};
for (int i = 0; i < shapes.Length; i++) {
Console.WriteLine(shapes[i].Name() + " " + shapes[i].Area());
}
Console.WriteLine(Largest(shapes).Name()); // rect
Console.WriteLine(Largest(shapes).Area()); // 20
}
}
כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון —
כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות
בדיקה חיצוני.