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

חומרי לימוד

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

ניתוח פולימורפיזם בהוראות ופלטים

שאלה קודמתשאלה הבאה
שאלה 15מבני נתונים2021 קיץ מועד ב

ניתוח פולימורפיזם בהוראות ופלטים

בשאלה זו שני סעיפים, א-ב, שאין קשר ביניהם. עליכם לענות על שניהם.

משימות

א(1)משימה א(1)text

נתונות המחלקות האלה:

java
1public class C {
2    public void dolt(D d) { System.out.println("a"); }
3}
4
5public class D extends C {
6    public void dolt(D d) { System.out.println("b"); }
7    public void dolt(C c) { System.out.println("x"); }
8}
9
10public class CDTest {
11    public void main(String[] args) {
12        C cd = new D();
13        D dd = (D) cd;
14        ****
15    }
16}

בעבור כל אחת מן ההוראות 1-3 שלפניכם, ציינו אם ההוראה תקינה אם היא תחליף את השורה **** בפעולה main. אם כן — רִשמו את הפלט, ואם לא — נמקו מדוע ההוראה אינה תקינה.

  1. dd.dolt(cd);
  2. cd.dolt(dd);
  3. cd.dolt(cd);
א(2)משימה א(2)text

למחלקה C שבסעיף א(1) נוספה הפעולה שלפניכם:

java
1public void dolt (Object o) {
2    System.out.println("o");
3}

בעבור כל אחת מן ההוראות 1-3 שלפניכם, ציינו אם ההוראה תקינה אם היא תחליף את השורה **** בפעולה main. אם כן — רִשמו את הפלט, ואם לא — נמקו מדוע ההוראה אינה תקינה.

  1. dd.dolt(cd);
  2. cd.dolt(dd);
  3. cd.dolt(cd);
במשימה בtext

נתונות המחלקות AA, BB והמחלקה Run:

java
1public class AA {
2    public AA() { System.out.println("In AA"); }
3    public AA(int n) {
4        this();
5        System.out.println("In AA");
6        System.out.println(n * 2);
7    }
8}
9
10public class BB extends AA {
11    public BB() { System.out.println("In BB"); }
12    public BB(double k) {
13        System.out.println("In BB" + (int)k);
14    }
15    public BB(int k) {
16        super(k * 2);
17        for (int i = 1; i < k; i++)
18            System.out.println("In BB");
19    }
20}
21
22public class Run {
23    public static void main(String[] args) {
24        ****
25    }
26}

במחלקה Run בפעולה הראשית main המקום המסומן ב-**** מייצג שורת קוד כלשהי. לפניכם שלושה פלטים שאין קשר ביניהם. בעבור כל פלט כתבו את שורת הקוד שמפיקה אותו.

(1)

In AA
In BB

(2)

In AA
In BB7

(3)

In AA
In AA
12
In BB
In BB

הערה: עליכם להתבסס על הפעולות הבונות המוגדרות במחלקות AA ו-BB. אין להוסיף פעולות והדפסות.

שאלה 15מבני נתונים2021 קיץ מועד ב

ניתוח פולימורפיזם בהוראות ופלטים

בשאלה זו שני סעיפים, א-ב, שאין קשר ביניהם. עליכם לענות על שניהם.

משימות

א(1)משימה א(1)text

נתונות המחלקות האלה:

java
1public class C {
2    public void dolt(D d) { System.out.println("a"); }
3}
4
5public class D extends C {
6    public void dolt(D d) { System.out.println("b"); }
7    public void dolt(C c) { System.out.println("x"); }
8}
9
10public class CDTest {
11    public void main(String[] args) {
12        C cd = new D();
13        D dd = (D) cd;
14        ****
15    }
16}

בעבור כל אחת מן ההוראות 1-3 שלפניכם, ציינו אם ההוראה תקינה אם היא תחליף את השורה **** בפעולה main. אם כן — רִשמו את הפלט, ואם לא — נמקו מדוע ההוראה אינה תקינה.

  1. dd.dolt(cd);
  2. cd.dolt(dd);
  3. cd.dolt(cd);
א(2)משימה א(2)text

למחלקה C שבסעיף א(1) נוספה הפעולה שלפניכם:

java
1public void dolt (Object o) {
2    System.out.println("o");
3}

בעבור כל אחת מן ההוראות 1-3 שלפניכם, ציינו אם ההוראה תקינה אם היא תחליף את השורה **** בפעולה main. אם כן — רִשמו את הפלט, ואם לא — נמקו מדוע ההוראה אינה תקינה.

  1. dd.dolt(cd);
  2. cd.dolt(dd);
  3. cd.dolt(cd);
במשימה בtext

נתונות המחלקות AA, BB והמחלקה Run:

java
1public class AA {
2    public AA() { System.out.println("In AA"); }
3    public AA(int n) {
4        this();
5        System.out.println("In AA");
6        System.out.println(n * 2);
7    }
8}
9
10public class BB extends AA {
11    public BB() { System.out.println("In BB"); }
12    public BB(double k) {
13        System.out.println("In BB" + (int)k);
14    }
15    public BB(int k) {
16        super(k * 2);
17        for (int i = 1; i < k; i++)
18            System.out.println("In BB");
19    }
20}
21
22public class Run {
23    public static void main(String[] args) {
24        ****
25    }
26}

במחלקה Run בפעולה הראשית main המקום המסומן ב-**** מייצג שורת קוד כלשהי. לפניכם שלושה פלטים שאין קשר ביניהם. בעבור כל פלט כתבו את שורת הקוד שמפיקה אותו.

(1)

In AA
In BB

(2)

In AA
In BB7

(3)

In AA
In AA
12
In BB
In BB

הערה: עליכם להתבסס על הפעולות הבונות המוגדרות במחלקות AA ו-BB. אין להוסיף פעולות והדפסות.