לפניכם כותרות המחלקות BB, CC והתכונות שלהן, ולפניכם המחלקה Tester הכוללת פעולה ראשית:
לפניכם כותרות המחלקות BB, CC והתכונות שלהן, ולפניכם המחלקה Tester הכוללת פעולה ראשית:
public class BB {
private int a;
protected int b;
****
}
public class CC: 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.
לפניכם תרשים עצמים שנוצרו בעקבות הרצת קטע הקוד:
idx0 BB{a=10,b=1} idx1 BB{a=10,b=16} idx2 BB{a=10,b=1} idx3 BB{a=10,b=16} idx4 CC{a=10,b=9,c=7} idx5 CC{a=10,b=5,c=7} idx6 CC{a=10,b=1,c=19} idx7 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 (Java) / Goo ו-Foo (C#) במחלקות המתאימות (BB ו-CC) על פי עקרונות תכנות מונחה עצמים, כך שיתקבל הפלט שלפניכם (יש לממש במחלקות רק את הפעולות הנחוצות כדי שהקוד ירוץ).
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.