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

נתון עץ הירושה הבא:

  • Square, Triangle ו-Circle יורשות מ-Shape.
  • Rectangle יורשת מ-Square.
  • Ellipse יורשת מ-Circle.

לפניכם קטע קוד מתוך הפעולה הראשית:

Shape s1 = new Shape();
Shape s2 = new Square();
Shape s3 = new Rectangle();
Square sq = new Rectangle();
סעיף א

לפניכם שמונה קטעי קוד. עבור כל אחד מהסעיפים יש לציין אם הקוד תקין או לא. אם הקוד אינו תקין – יש להסביר למה הקוד אינו תקין ולציין את סוג השגיאה (שגיאת קומפילציה/הידור, או שגיאת זמן ריצה).

9. Square sq1 = new Shape();
10.Square sq2 = s1;
11.Square sq3 = (Square)s2;
12.Square sq4 = (Square)s3;
13.Square sq5 = (Square) s1;
14.
   Triangle t = new Triangle();
   Shape s6 = t;
   Square sq6 = (Square)s6;
15.Shape s7 = (Square)(new Rectangle());
16.Square sq8 = (Shape)(new Rectangle());

המספור 9–16 הוא כפי שמודפס בשאלון.

סעיף ב

רוצים לכתוב פעולה אשר מקבלת מערך של צורות (מערך הפניות לעצמים מטיפוס Shape) ומחזירה את סכום השטחים של כל המשולשים (Triangle) והמלבנים (Rectangle). באיזו מחלקה או מחלקות יש להוסיף את הפעולה double Area() המחשבת ומחזירה שטח? הסבירו את תשובתכם.

סעיף ג

public static Triangle MaxArea(Shape[] arr)

כתבו פעולה המקבלת מערך צורות ומחזירה את המשולש ששטחו הגדול ביותר. אם במערך אין אף משולש, הפעולה תחזיר null.

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

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

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

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