לפניכם המחלקות AA ו-BB:
1public class AA {
2 private String st;
3
4 public AA() { this.st = "excellent"; }
5 public AA(String st) { this.st = st; }
6 public String getSt() { return this.st; }
7 public void setSt(String st) { this.st = st; }
8 public String toString() { return "st = " + this.st; }
9}
10
11public class BB extends AA {
12 private int num;
13
14 public BB() { super(); this.num = 1; }
15 public BB(int num, String st) { super(st); this.num = Math.abs(num); }
16 public int getNum() { return this.num; }
17 public void setNum(int num) { this.num = num; }
18 public String toString() { return super.toString() + " num = " + this.num; }
19}הגדירו במחלקה AA פעולה בוליאנית הניתנת לדריסה, בשם IsLike (Object obj) המקבלת עצם obj מטיפוס Object. אם העצם obj הינו מטיפוס AA וגם תוכן המחרוזת st של obj זהה לתוכן המחרוזת st של העצם הנוכחי — הפעולה תחזיר true, אחרת — תחזיר false.
הגדירו במחלקה BB פעולה הדורסת את הפעולה שהגדרתם בסעיף א. אם העצם obj הינו מטיפוס BB וגם ערך התכונה num שלו זהה לערך התכונה num של העצם הנוכחי — הפעולה תחזיר true, אחרת — תחזיר false.
לפניכם קטע מפעולה ראשית:
csharp1AA a = new AA("excellent"); 2BB b = new BB(); 3a = b; 4if (a.IsLike(b)) Console.WriteLine(a);
האם קטע התכנית תקין?
אם כן — מה יהיה פלט הקטע? רִשמו איזו גרסה של הפעולה IsLike תופעל — זו של AA או זו של BB.
אם לא — הסבירו מהי השגיאה ומתי היא תתגלה: בזמן קומפילציה או בזמן ריצה.
לפניכם קטע מפעולה ראשית:
csharp1AA aa = new AA(); 2BB bb = new BB(2, "excellent"); 3bb = aa; 4if (bb.IsLike(aa)) Console.WriteLine(bb);
האם קטע התכנית תקין?
אם כן — מה יהיה פלט הקטע? רִשמו איזו גרסה של הפעולה IsLike תופעל — זו של AA או זו של BB.
אם לא — הסבירו מהי השגיאה ומתי היא תתגלה: בזמן קומפילציה או בזמן ריצה.
כתבו פעולה חיצונית בשם LongString המקבלת מערך של עצמים מטיפוס Object. הפעולה מחזירה מחרוזת המורכבת משרשור התכונה st של עצמים מטיפוס AA במערך, באופן הזה:
st — תשורשר המחרוזת שבתכונה st פעם אחת.num — המחרוזת שבתכונה st תשורשר num פעמים.AA — תוחזר מחרוזת ריקה.לפניכם המחלקות AA ו-BB:
1public class AA {
2 private String st;
3
4 public AA() { this.st = "excellent"; }
5 public AA(String st) { this.st = st; }
6 public String getSt() { return this.st; }
7 public void setSt(String st) { this.st = st; }
8 public String toString() { return "st = " + this.st; }
9}
10
11public class BB extends AA {
12 private int num;
13
14 public BB() { super(); this.num = 1; }
15 public BB(int num, String st) { super(st); this.num = Math.abs(num); }
16 public int getNum() { return this.num; }
17 public void setNum(int num) { this.num = num; }
18 public String toString() { return super.toString() + " num = " + this.num; }
19}הגדירו במחלקה AA פעולה בוליאנית הניתנת לדריסה, בשם IsLike (Object obj) המקבלת עצם obj מטיפוס Object. אם העצם obj הינו מטיפוס AA וגם תוכן המחרוזת st של obj זהה לתוכן המחרוזת st של העצם הנוכחי — הפעולה תחזיר true, אחרת — תחזיר false.
הגדירו במחלקה BB פעולה הדורסת את הפעולה שהגדרתם בסעיף א. אם העצם obj הינו מטיפוס BB וגם ערך התכונה num שלו זהה לערך התכונה num של העצם הנוכחי — הפעולה תחזיר true, אחרת — תחזיר false.
לפניכם קטע מפעולה ראשית:
csharp1AA a = new AA("excellent"); 2BB b = new BB(); 3a = b; 4if (a.IsLike(b)) Console.WriteLine(a);
האם קטע התכנית תקין?
אם כן — מה יהיה פלט הקטע? רִשמו איזו גרסה של הפעולה IsLike תופעל — זו של AA או זו של BB.
אם לא — הסבירו מהי השגיאה ומתי היא תתגלה: בזמן קומפילציה או בזמן ריצה.
לפניכם קטע מפעולה ראשית:
csharp1AA aa = new AA(); 2BB bb = new BB(2, "excellent"); 3bb = aa; 4if (bb.IsLike(aa)) Console.WriteLine(bb);
האם קטע התכנית תקין?
אם כן — מה יהיה פלט הקטע? רִשמו איזו גרסה של הפעולה IsLike תופעל — זו של AA או זו של BB.
אם לא — הסבירו מהי השגיאה ומתי היא תתגלה: בזמן קומפילציה או בזמן ריצה.
כתבו פעולה חיצונית בשם LongString המקבלת מערך של עצמים מטיפוס Object. הפעולה מחזירה מחרוזת המורכבת משרשור התכונה st של עצמים מטיפוס AA במערך, באופן הזה:
st — תשורשר המחרוזת שבתכונה st פעם אחת.num — המחרוזת שבתכונה st תשורשר num פעמים.AA — תוחזר מחרוזת ריקה.