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

היררכיית מחלקות הכוללת חמש מחלקות Point, Shape, Circle, Square, Rectangle ושני ממשקים ITurnable ו-IFillable; Shape מכילה (has-a) Point, ו-Circle/Square/Rectangle יורשות ממנה תוך מימוש חלק מהממשקים.

תרשים ההיררכיה (מ-200dpi crop, עמ' 8): IFillable{void fill(String color)} ו-ITurnable{void left(int degree); void right(int degree)} הם ממשקים עצמאיים. Shape{protected String color; protected Point point} מחזיקה הפניה ל-Point{private int x; private int y} (קשר הכלה/צירוף, מסומן ביהלום מלא). Circle{private double radius} יורשת מ-Shape ומממשת IFillable (שני חצים נפרדים: רציף ל-Shape, מקווקו ל-IFillable). Square{protected double length1} יורשת מ-Shape ומממשת גם IFillable וגם ITurnable (שלושה חצים: רציף ל-Shape, מקווקו ל-IFillable, מקווקו ל-ITurnable). Rectangle{private double length2} יורשת מ-Square בלבד (חץ רציף יחיד; יורשת את IFillable/ITurnable של Square בירושה עקיפה, בלי חצים מקווקווים נוספים משלה).

IFillable <..impl.. Circle --extends--> Shape --(has-a, ◆)--> Point
IFillable <..impl.. Square --extends--> Shape
ITurnable <..impl.. Square
Rectangle --extends--> Square
סעיף א

כתבו עבור כל מחלקה, את כותרת המחלקה ואת הכותרות של כל הפעולות שחייבות להיות במחלקה. נתון קטע קוד בפעולה הראשית (main): Shape s = new Square(new Point(50,50),10); Shape c = new Circle(new Point(50,50),8); ITurnable t; IFillable f; (***)

סעיף ב

כתבו כותרות לכל הבנאים הנדרשים להרצה תקינה של קטע הקוד הנתון.

סעיף ג

בהתייחס לכל אחד מהקטעים הבאים, כתבו מה יקרה בעקבות הוספתו לשיטה main שלעיל, במקום שמסומן בכוכביות (***). אם הקוד אינו תקין יש להסביר ולציין את סוג השגיאה (קומפילציה או זמן ריצה). (1) f=(IFillable)c; (2) t=s; t.fill("Green"); (3) f=c; f.fill("Red"); (4) ((Circle)s).left(45); (5) Shape d=c; d.fill("Yellow"); (6) f=new Rectangle(new Point(10,10),10,20); f.left(Math.PI); (7) c=s; c.left(90); (C#: אותם שבעה קטעים, Fill/Left באות גדולה, Math.PI זהה.)

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

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

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

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