תרגול מדעי המחשב

הורשה ראשונה

בינוני Java

המשימה

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

בנה מחלקה בשם Student **שיורשת** מ-Person ומוסיפה תכונה אחת: ציון.

המחלקה Student תכלול:
• בנאי שמקבל שם וציון, ומעביר את השם לבנאי של האב.
• פעולה מאחזרת לציון.
• דריסה של הפעולה describe: היא תחזיר את השם, רווח, ואז את הציון
  בסוגריים.

דוגמאות:
  Person בשם Dana        →  describe מחזיר  Dana
  Student בשם Yossi, 95  →  describe מחזיר  Yossi (95)

הנחיות:
• השם שמור בתכונה **פרטית** של האב, ולכן Student אינו יכול לגשת אליו
  ישירות. הוא ניגש אליו דרך הפעולה המאחזרת שהאב מספק. זו הנקודה
  המרכזית בתרגיל.
• הקריאה לבנאי האב חייבת להיות השורה הראשונה בבנאי של הבן.
• אל תשכפל את התכונה name לתוך Student. אם עשית זאת — ההורשה לא
  נוצלה, ויש שני שמות שונים באותו עצם.

```ds:table
{"title":"הפלט הצפוי","rows":[["עצם","describe"],["Person(\"Dana\")","Dana"],["Student(\"Yossi\", 95)","Yossi (95)"],["Student(\"Noa\", 100)","Noa (100)"]]}
```

קוד הפתיחה

class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public String describe() {
        return this.name;
    }
}

class Student extends Person {
    // הוסף כאן את התכונה grade — ורק אותה

    public Student(String name, int grade) {
        // קרא לבנאי של האב, ואז אתחל את grade
        super(name);
    }

    public int getGrade() {
        return 0;
    }

    @Override
    public String describe() {
        // החזר "שם (ציון)" — היעזר ב-getName
        return "";
    }
}

public class Main {
    public static void main(String[] args) {
        Person p = new Person("Dana");
        Student s = new Student("Yossi", 95);

        System.out.println(p.describe());   // Dana
        System.out.println(s.describe());   // Yossi (95)
        System.out.println(s.getName());    // Yossi
        System.out.println(s.getGrade());   // 95

        Person[] all = { p, s, new Student("Noa", 100) };
        for (int i = 0; i < all.length; i++) {
            System.out.println(all[i].describe());   // Dana / Yossi (95) / Noa (100)
        }
    }
}

כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.

התרגיל הבא קריאה לפעולת האב
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון — כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות בדיקה חיצוני.