אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2023 · קיץ מועד ב · שאלה 8כל שאלות המבחן ←
תכנות מונחה עצמים›פולימורפיזם ומחלקות מופשטות

public class A { private static int countA = 0; protected int x; public A()

{ countA++; this.x = 0; } public A(int x) { countA++; this.x = x; } public String toString() { return "A:"+this.x; } public int doIt(int z) {
return this.x * z; } public static int getCount(){ return countA; } }// end of class A

public class B extends A { protected int y; private static int countB = 0; public B(int y) { this.y = y; countB++; } public B(int x, int y) { super(x); countB++; this.y = y; } public String toString() { return "B:"+super.toString()+":"+this.y; } public static int getCount(){return countB;} public int doIt(int z) { return super.doIt(z) + this.y; } } //end of class B public class C extends B { private A myA; private static int countC = 0; public C(int x, int y) { super(x, y); this.myA = new A(x+y); countC++; } public static int getCount(){return countC;} public String toString() { return "C:"+super.toString()+" ["+this.myA+"]"; } }// end of class C

סעיף א

ציירו תרשים UML שמייצג את הקשרים בין המחלקות A, B, C. יש לסמן ירושה באמצעות החץ (▷—) והכלה באמצעות הסימן (◆—).

סעיף ב

נתון קטע קוד בפעולה הראשית במחלקה אחרת: A[] arr = new A[5]; arr[0] = new A(13); arr[1] = new B(5, 10); arr[2] = new C(2, 7); arr[3] = new C(3, 3); arr[4] = new B(5); עקבו אחרי ביצוע קטע קוד. יש לצייר את כל העצמים שנוצרו ולציין ערכי התכונות שלהם.

סעיף ג

לקוד של סעיף ב' התווסף קוד הבא: System.out.println("A objects: " + A.getCount()); System.out.println("B objects: " + B.getCount()); System.out.println("C objects: " + C.getCount()); רשמו מה יהיה הפלט.

סעיף ד

לקוד של סעיף ב' התווסף קוד הבא: for (int k=0; k <arr.length; k++) System.out.println(arr[k]); רשמו מה יהיה הפלט.

סעיף ה

לקוד של סעיף ב' התווסף קוד הבא: for (int k=0; k <arr.length; k++) if(arr[k] instanceof B) System.out.println(arr[k].doIt(k+1)); רשמו מה יהיה הפלט.

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי