שלוש מחלקות: Basis (תכונה מוגנת num1, שני בנאים, print מדפיסה num1). SingleOne יורשת מ-Basis, מוסיפה num2, print דורסת ומוסיפה הדפסת num2 (דרך super.print/base.Print). MultiOne יורשת מ-Basis, מחזיקה מערך קבוע של עד 5 הפניות ל-Basis (תבנית Composite), print דורסת ומדפיסה את כל האיברים במערך רקורסיבית, בלי לקרוא ל-super.print.
שלוש מחלקות: Basis (תכונה מוגנת num1, שני בנאים, print מדפיסה num1). SingleOne יורשת מ-Basis, מוסיפה num2, print דורסת ומוסיפה הדפסת num2 (דרך super.print/base.Print). MultiOne יורשת מ-Basis, מחזיקה מערך קבוע של עד 5 הפניות ל-Basis (תבנית Composite), print דורסת ומדפיסה את כל האיברים במערך רקורסיבית, בלי לקרוא ל-super.print.
class Basis {
protected int num1;
public Basis() { }
public Basis(int n) { this.num1 = n; }
public void print() {
System.out.println(this.num1);
}
}
class SingleOne extends Basis {
protected int num2;
public SingleOne(int n1, int n2) {
super(n1);
this.num2 = n2;
}
public void print() {
super.print();
System.out.println(this.num2);
}
}
class MultiOne extends Basis {
private int count = 0;
private Basis[] arr;
public MultiOne() {
this.arr = new Basis[5];
}
public void print() {
for (int i = 0; i < count; i++)
arr[i].print();
}
public void add(Basis b) {
if (count < arr.length) {
arr[count] = b;
count++;
}
}
}
סעיף א
ציירו תרשים UML שמייצג את הקשרים בין המחלקות Basis, SingleOne, MultiOne. יש לסמן ירושה באמצעות החץ והכלה באמצעות היהלום.
סעיף ב
נתונה המחלקה Test ובה הפעולה הראשית. עקבו בעזרת טבלת מעקב אחר הפעולה main במחלקה Test, ורשמו את הפלט. על הטבלה לכלול את ערכי כל המשתנים, ובעבור כל עצם — את ערכי התכונות שלו.
class Test {
public static void main(String[] args) {
MultiOne container = new MultiOne();
SingleOne s1 = new SingleOne(11, 35);
container.add(s1);
s1 = new SingleOne(47, 22);
container.add(s1);
s1 = new SingleOne(8, 17);
container.add(s1);
MultiOne subContainer = new MultiOne();
s1 = new SingleOne(53, 40);
subContainer.add(s1);
s1 = new SingleOne(21, 13);
subContainer.add(s1);
s1 = new SingleOne(39, 62);
subContainer.add(s1);
container.add(subContainer);
container.print();
}
}
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.