בי מאסטר (Bmaster)מאגר שאלות בגרותשאלות נפוצותמדריכיםארכיון בגרויות
תפריט

חומרי לימוד

מאגר שאלות בגרותשאלות נפוצותמדריכיםארכיון בגרויות
חזרה למאגר2016 קיץ מועד ב

ירושה ודריסת פעולות: המחלקות AA ו-BB

שאלה קודמת
שאלה 16מבני נתונים2016 קיץ מועד ב

ירושה ודריסת פעולות: המחלקות AA ו-BB

לפניכם המחלקות 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}

משימות

אמשימה אcode

הגדירו במחלקה AA פעולה בוליאנית הניתנת לדריסה, בשם IsLike (Object obj) המקבלת עצם obj מטיפוס Object. אם העצם obj הינו מטיפוס AA וגם תוכן המחרוזת st של obj זהה לתוכן המחרוזת st של העצם הנוכחי — הפעולה תחזיר true, אחרת — תחזיר false.

במשימה בcode

הגדירו במחלקה BB פעולה הדורסת את הפעולה שהגדרתם בסעיף א. אם העצם obj הינו מטיפוס BB וגם ערך התכונה num שלו זהה לערך התכונה num של העצם הנוכחי — הפעולה תחזיר true, אחרת — תחזיר false.

גמשימה גtext

לפניכם קטע מפעולה ראשית:

csharp
1AA a = new AA("excellent");
2BB b = new BB();
3a = b;
4if (a.IsLike(b)) Console.WriteLine(a);

האם קטע התכנית תקין? אם כן — מה יהיה פלט הקטע? רִשמו איזו גרסה של הפעולה IsLike תופעל — זו של AA או זו של BB. אם לא — הסבירו מהי השגיאה ומתי היא תתגלה: בזמן קומפילציה או בזמן ריצה.

דמשימה דtext

לפניכם קטע מפעולה ראשית:

csharp
1AA aa = new AA();
2BB bb = new BB(2, "excellent");
3bb = aa;
4if (bb.IsLike(aa)) Console.WriteLine(bb);

האם קטע התכנית תקין? אם כן — מה יהיה פלט הקטע? רִשמו איזו גרסה של הפעולה IsLike תופעל — זו של AA או זו של BB. אם לא — הסבירו מהי השגיאה ומתי היא תתגלה: בזמן קומפילציה או בזמן ריצה.

המשימה הcode

כתבו פעולה חיצונית בשם LongString המקבלת מערך של עצמים מטיפוס Object. הפעולה מחזירה מחרוזת המורכבת משרשור התכונה st של עצמים מטיפוס AA במערך, באופן הזה:

  • אם לעצם יש רק התכונה st — תשורשר המחרוזת שבתכונה st פעם אחת.
  • אם לעצם יש גם התכונה num — המחרוזת שבתכונה st תשורשר num פעמים.
  • אם אין במערך אף עצם מטיפוס AA — תוחזר מחרוזת ריקה.
שאלה 16מבני נתונים2016 קיץ מועד ב

ירושה ודריסת פעולות: המחלקות AA ו-BB

לפניכם המחלקות 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}

משימות

אמשימה אcode

הגדירו במחלקה AA פעולה בוליאנית הניתנת לדריסה, בשם IsLike (Object obj) המקבלת עצם obj מטיפוס Object. אם העצם obj הינו מטיפוס AA וגם תוכן המחרוזת st של obj זהה לתוכן המחרוזת st של העצם הנוכחי — הפעולה תחזיר true, אחרת — תחזיר false.

במשימה בcode

הגדירו במחלקה BB פעולה הדורסת את הפעולה שהגדרתם בסעיף א. אם העצם obj הינו מטיפוס BB וגם ערך התכונה num שלו זהה לערך התכונה num של העצם הנוכחי — הפעולה תחזיר true, אחרת — תחזיר false.

גמשימה גtext

לפניכם קטע מפעולה ראשית:

csharp
1AA a = new AA("excellent");
2BB b = new BB();
3a = b;
4if (a.IsLike(b)) Console.WriteLine(a);

האם קטע התכנית תקין? אם כן — מה יהיה פלט הקטע? רִשמו איזו גרסה של הפעולה IsLike תופעל — זו של AA או זו של BB. אם לא — הסבירו מהי השגיאה ומתי היא תתגלה: בזמן קומפילציה או בזמן ריצה.

דמשימה דtext

לפניכם קטע מפעולה ראשית:

csharp
1AA aa = new AA();
2BB bb = new BB(2, "excellent");
3bb = aa;
4if (bb.IsLike(aa)) Console.WriteLine(bb);

האם קטע התכנית תקין? אם כן — מה יהיה פלט הקטע? רִשמו איזו גרסה של הפעולה IsLike תופעל — זו של AA או זו של BB. אם לא — הסבירו מהי השגיאה ומתי היא תתגלה: בזמן קומפילציה או בזמן ריצה.

המשימה הcode

כתבו פעולה חיצונית בשם LongString המקבלת מערך של עצמים מטיפוס Object. הפעולה מחזירה מחרוזת המורכבת משרשור התכונה st של עצמים מטיפוס AA במערך, באופן הזה:

  • אם לעצם יש רק התכונה st — תשורשר המחרוזת שבתכונה st פעם אחת.
  • אם לעצם יש גם התכונה num — המחרוזת שבתכונה st תשורשר num פעמים.
  • אם אין במערך אף עצם מטיפוס AA — תוחזר מחרוזת ריקה.