לפניכם כותרות המחלקות First, Second ותכונות שלהן ומחלקה Test הכוללת פעולה ראשית:
public class First
{
protected int num;
....
}
public class Second : First
{
private double x;
private First f;
...
}
public class Test
{
public static void Main(string[] args)
{
First[] arr = new First[5];
arr[0] = new First (13);
arr[1] = new First ();
arr[2] = new Second();
arr[3] = new Second(5, arr[0]);
arr[4] = new Second(2, 3.7, arr[2]);
}
}
הרצת הפעולה יצרה את העצמים הבאים (תא אחר תא במערך arr):
arr[0]: First{num=13} | arr[1]: First{num=10} | arr[2]: Second{num=10,x=1.1,f=null} | arr[3]: Second{num=5,x=5.5,f→First{num=13}} | arr[4]: Second{num=5,x=5.5,f→(אותו עצם Second שב-arr[2])}
עץ הירושה לסעיף ב': Square, Triangle ו-Circle יורשות מ-Shape; Cylinder יורשת מ-Circle.
Shape
├── Square
├── Triangle
└── Circle
└── Cylinder
סעיף א
לפניכם כותרות המחלקות Second, First ותכונות שלהן ומחלקה Test הכוללת פעולה ראשית (בקוד שבראש השאלה). הרצת הפעולה יצרה את העצמים המתוארים שם. כתבו במחלקות First ו-Second את הפעולות הבונות (constructors) הנדרשות לשם הרצת הפעולה הראשית כך שיתקבלו העצמים המתוארים.
סעיף ב
נתון עץ הירושה שלמעלה (Square, Triangle ו-Circle יורשות מ-Shape; Cylinder יורשת מ-Circle).
לפניכם קטע קוד מתוך פעולה ראשית:
Shape s1 = new Shape();
Shape s2 = new Circle();
Shape s3 = new Cylinder();
Circle c = new Cylinder();
לפניכם שמונה קטעי קוד. עבור כל אחד מהסעיפים יש לציין, אם הקוד תקין או לא. אם הקוד אינו תקין – יש להסביר למה הוא אינו תקין ולציין את סוג השגיאה (שגיאת קומפילציה/הידור או שגיאת זמן ריצה).
1. Circle c0 = new Shape();
2. Circle c1 = s1;
3. Circle c2 = (Circle)s2;
4. Circle c3 = (Circle)s3;
5. Circle c4 = (Circle) s1;
6.
Triangle t = new Triangle();
Shape s5 = t;
Circle c5 = (Circle)s5;
7. Shape s = (Circle)(new Cylinder());
8. Circle c = (Shape)(new Cylinder());
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.