לפניכם כותרות המחלקות BB, CC והתכונות שלהן, ולפניכם המחלקה Tester הכוללת פעולה ראשית:
public class BB {
private int a;
protected int b;
****
}
public class CC extends BB {
private int c;
****
}
public class Tester {
public static void main(String[] args) {
BB [] b = new BB[8];
b[0] = new BB();
b[1] = new BB(16);
b[2] = new BB(b[0]);
b[3] = new BB(b[1]);
b[4] = new CC(9);
b[5] = new CC(5);
b[6] = new CC(b[0]);
b[7] = new CC(b[1]);
}
}
הערה: שימו לב – לשתי המחלקות אין פעולות get ו-set.
לפניכם תרשים עצמים שנוצרו בעקבות הרצת קטע הקוד:
תא 0: BB a=10, b=1
תא 1: BB a=10, b=16
תא 2: BB a=10, b=1
תא 3: BB a=10, b=16
תא 4: CC a=10, b=9, c=7
תא 5: CC a=10, b=5, c=7
תא 6: CC a=10, b=1, c=19
תא 7: CC a=10, b=16, c=19
לפניכם תרשים עצמים שנוצרו בעקבות הרצת קטע הקוד. מצב האובייקטים במערך b[0..7] לאחר ההרצה מפורט בטבלה שלהלן:
| אינדקס | מחלקה | a | b | c |
|---|---|---|---|---|
| b[0] | BB | 10 | 1 | — |
| b[1] | BB | 10 | 16 | — |
| b[2] | BB | 10 | 1 | — |
| b[3] | BB | 10 | 16 | — |
| b[4] | CC | 10 | 9 | 7 |
| b[5] | CC | 10 | 5 | 7 |
| b[6] | CC | 10 | 1 | 19 |
| b[7] | CC | 10 | 16 | 19 |
כתבו במחלקות BB ו-CC את הפעולות הבונות הנדרשות כדי לקבל את העצמים שבטבלה. ציינו בעבור כל אחד מן העצמים שבטבלה את הפעולה הבונה על פיה הוא נוצר. הערה: אין להוסיף פעולות שאינן בונות במחלקות BB ו-CC. פתרון הכולל פעולות שאינן בונות לא יזוכה בנקודות.
נתון קטע קוד תקין והפלט שהתקבל בעקבות הרצתו. כמו כן, נתון קטע קוד עבורו התקבלה שגיאת הידור (קומפילציה). ממשו את הפעולות goo ו-foo במחלקות המתאימות (BB ו-CC) על פי עקרונות תכנות מונחה עצמים, כך שיתקבל הפלט שלפניכם (יש לממש במחלקות רק את הפעולות הנחוצות כדי שהקוד ירוץ).
קטע הקוד התקין (בסוף הפעולה הראשית, אחרי יצירת שמונת העצמים):
b[0].foo(0); //1
b[0].foo(3); //2
((CC)b[4]).foo(); //3
((CC)b[6]).foo(); //4
((CC)b[5]).goo(); //5
((CC)b[7]).goo(); //6
הפלט שהתקבל:
BB foo: 11 //1
BB foo: 14 //2
CC foo: 7 //3
BB foo: 26
CC foo: 19 //4
BB foo: 30
CC goo //5
CC goo //6
קטע הקוד שעבורו התקבלה שגיאת הידור:
b[3].foo();
b[2].goo();
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.