אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2023 · אביב מועד ב · שאלה 4כל שאלות המבחן ←
תכנות מונחה עצמיםירושה

סעיף א' (10 נק'): נתון main עם ארבע השמות/הטלות בין ארבע מחלקות One/Two/Three/Four; לכל אחת מחמש אפשרויות עץ-ירושה מועמדות יש לקבוע אם main תקינה, נכשלת בהידור, או נכשלת בזמן ריצה. סעיף ב' (6 נק', ללא קשר לסעיף א'): היררכיית Point<-Circle<-Cylinder עם שרשרת toString/ToString — יש להשלים בונים ודריסות כך שהפלט יהיה 'x = 1, radius = 2' ו-'x = 10, radius = 20, height = 30'.

קטע הקוד מ-main (סעיף א') — זהה משמעותית בשתי השפות (Java: main, String[]; C#: Main, string[]).

Three x1 = new One();
Two x2 = (Two)(new One());
Two x3 = new Four();
One x4 = new Four();
סעיף א

נתונה הפעולה Main במחלקה Driver (ראו את קטע הקוד למעלה). נתונות חמש האפשרויות לעץ הירושה הכולל את המחלקות One, Two, Three, Four: 6. Three יורשת מ-One, Two יורשת מ-One, Four יורשת מ-One 7. Three יורשת מ-One, Two יורשת מ-One, Four יורשת מ-Two 8. One יורשת מ-Three, Four יורשת מ-Two, Three יורשת מ-Two 9. One יורשת מ-Three, Three יורשת מ-Two, Four יורשת מ-One 10. One יורשת מ-Three, Two יורשת מ-One, Four יורשת מ-One עבור כל אחת מהאפשרויות ציירו עץ ירושה וכתבו אם הפעולה Main תהיה תקינה או תתרחש שגיאת הידור (קומפילציה) או שגיאת זמן ריצה. הסבירו את תשובתכם.

סעיף ב

(אין קשר לסעיף א'). נתונות שלוש המחלקות הבאות: Point (מתארת נקודה על ציר ה-X), Circle (מעגל עם מרכז על ציר ה-X, יורשת מ-Point), Cylinder (גליל, יורשת מ-Circle) — ראו את קוד המחלקות למעלה. נתונה הפעולה Main הבאה: Circle b = new Circle (1, 2); Console.WriteLine(b); Cylinder c = new Cylinder (10, 20, 30); Console.WriteLine(c); השלימו את הפעולות החסרות במחלקות Cylinder ו-Circle כך שפלט הפעולה Main יהיה: x = 1, radius = 2 x = 10, radius = 20, height = 30

public Circle(int x, int radius) : base(...) — public override string ToString() — public Cylinder(int x, int radius, int height) : base(...)

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי