לפניכם כותרות המחלקות AA, BB והתכונות שלהן. הפעולות הבונות של המחלקות מסומנות ב-*** (ייתכנו מספר פעולות בנייה, אחת למחלקה). לשתי המחלקות אין פעולות get/Get ו-set/Set. לפניכם מחלקה Test עם פעולה ראשית שיוצרת עשרה עצמים (a1..a5, b1..b5), ותרשים זיכרון המתאר את המצב הסופי של כל אחד מהעצמים הללו. יש לכתוב במחלקות AA ו-BB את הפעולות הבונות הנדרשות כדי לקבל את העצמים שמתוארים.
לפניכם כותרות המחלקות AA, BB והתכונות שלהן. הפעולות הבונות של המחלקות מסומנות ב-*** (ייתכנו מספר פעולות בנייה, אחת למחלקה). לשתי המחלקות אין פעולות get/Get ו-set/Set. לפניכם מחלקה Test עם פעולה ראשית שיוצרת עשרה עצמים (a1..a5, b1..b5), ותרשים זיכרון המתאר את המצב הסופי של כל אחד מהעצמים הללו. יש לכתוב במחלקות AA ו-BB את הפעולות הבונות הנדרשות כדי לקבל את העצמים שמתוארים.
public class AA
{
private int x;
***
}
public class BB extends AA
{
private AA f;
***
}
public class Test{
public static void main(String[] args) {
AA a1 = new AA ();
AA a2 = new AA (8);
AA a3 = new AA (3);
AA a4 = new AA (a1);
AA a5 = new AA (a2);
BB b1 = new BB ();
BB b2 = new BB (6, a4);
BB b3 = new BB (5, a2);
BB b4 = new BB (a4);
BB b5 = new BB (a2);
}
}
תרשים הזיכרון הסופי של עשרת העצמים. a1..a5 מטיפוס AA עם ערך x בלבד. b1..b5 מטיפוס BB, כל אחד עם x (מוריש, לא מוצג כתכונה נפרדת אלא כחלק מהעצם) ו-f. b2,b3: f מצביע לאותו עצם כמו a4/a2 (בהתאמה - מוצג כטקסט f=a4 / f=a2). b4,b5: f מצביע לעצם AA חדש ונפרד, שערך ה-x שלו שווה לזה של a4/a2 בהתאמה (מוצג כחץ לתיבת AA נפרדת).
a1:AA{x=2} a2:AA{x=8} a3:AA{x=3} a4:AA{x=2} a5:AA{x=8}
b1:BB{x=1,f=null}
b2:BB{x=6,f=a4} (אותו עצם כמו a4)
b3:BB{x=5,f=a2} (אותו עצם כמו a2)
b4:BB{x=0,f->AA{x=2}} (עצם AA חדש, ערך זהה ל-a4.x)
b5:BB{x=0,f->AA{x=8}} (עצם AA חדש, ערך זהה ל-a2.x)
כתבו במחלקה AA את הפעולות הבונות הנדרשות כדי לקבל את העצמים a1..a5 שמתוארים בתרשים (a1=new AA(), a2=new AA(8), a3=new AA(3), a4=new AA(a1), a5=new AA(a2)). ציינו עבור כל אחד מהעצמים שנוצרו את הפעולה הבונה המתאימה לו.
AA(); AA(int x); AA(AA other);
כתבו במחלקה BB את הפעולות הבונות הנדרשות כדי לקבל את העצמים b1..b5 שמתוארים בתרשים (b1=new BB(), b2=new BB(6,a4), b3=new BB(5,a2), b4=new BB(a4), b5=new BB(a2)). שימו לב: לתכונה x, שהיא private במחלקת האב AA, אין גישה ישירה מתוך BB - יש להיעזר בפעולות הבונות של AA (סעיף א) באמצעות super/base. ציינו עבור כל אחד מהעצמים שנוצרו את הפעולה הבונה המתאימה לו.
BB(); BB(int x, AA a); BB(AA a);
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.