אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2024 · אביב מועד ב · שאלה 10כל שאלות המבחן ←
תכנות מונחה עצמים›ירושה

לפניכם הכותרות של מחלקות Two, One והתכונות שלהן והמחלקה Test הכוללת פעולה ראשית.

public class One
{
 protected int val;
 ....
}
public class Two extends One
{
  private String s;
  private One p;
  ...
}
public class Test
{
  public static void main(String[] args)
  {
     One [] arr = new One [5];
     arr[0] = new One (25);
     arr[1] = new One ();
     arr[2] = new Two ();
     arr[3] = new Two (15, arr[0]);
     arr[4] = new Two (2, "CCC", arr[1]);
  }
}
סעיף א

הרצת הפעולה יוצרת את העצמים הבאים (memory diagram): idx0=One{val=25}, idx1=One{val=10}, idx2=Two{val=10,s="AAA",p=null}, idx3=Two{val=15,s="CCC",p=•}, idx4=Two{val=2,s="CCC",p=•}. כתבו במחלקות One ו-Two את הפעולות הבונות (constructors) הנדרשות לשם הרצת הפעולה הראשית כך שיתקבלו העצמים המתוארים. אין להניח שקיימות פעולות בונות אחרות פעולות או להוסיף פעולות נוספות!

idx0: מחלקה: One

val: 25

idx1: מחלקה: One

val: 10

idx2: מחלקה: Two

s: AAA

idx3: מחלקה: Two

val: 15

s: CCC

p: -> idx0 (One{val=25})

idx4: מחלקה: Two

val: 2

p: -> (חץ בתרשים)

עצם העזר שבתרשים: One{val=25}

סעיף ב

כתבו פעולה המקבלת מערך arr של עצמים מסוג One ומחזירה מערך חדש הכולל עצמים מסוג Two אשר נמצאים ב-arr. אם במערך arr אין עצמים מסוג Two, הפעולה תחזיר null.

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

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

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

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