בבית החולים, לכל רופא מתמחה הוצמד רופא ותיק מנוסה. כדי לנהל את תהליך ההתמחות פותחו המחלקות האלה: Doctor, Intern, Test.

המחלקה Doctor מתארת רופא:

public class Doctor {
    protected String name;// שם
    protected String specialization;// התמחות
    protected int numOfPatients; // מספר חולים
    public Doctor(String name, String spec) {
        this.name = name;
        this.specialization = spec;
        this.numOfPatients = 0;
    }
    public Doctor(String name, String spec, int num) {
        this.name = name;
        this.specialization = spec;
        this.numOfPatients = num;
    }
    public Doctor(Doctor other) {
        this.name = other.name;
        this.specialization = other.specialization;
        this.numOfPatients = other.numOfPatients;
    }
    public void addPatients(int num)
    {
        if(numOfPatients + num >=0)
            this.numOfPatients += num;
    }
    public String toString(){
        return "Doctor:" + name + ", " + specialization+ ","
            +numOfPatients;
    }
}

במחלקה הוגדרו גם פעולות set/Get לכל התכונות.

המחלקה Intern מתארת מתמחה:

public class Intern extends Doctor {
    private Doctor mentor;
    public Intern(String name, String spec, Doctor mentor){
        super(name, spec);
        this.mentor = mentor;
        this.numOfPatients = mentor.numOfPatients/2;
    }
    public Doctor getMentor(){return mentor;}
    public String toString() {
        return "Intern: " + name + ", " + specialization +
               ", Mentor: " + mentor.name +", " +
               mentor.numOfPatients +"," + numOfPatients;
    }
}

הפעולה הראשית main (במחלקה Test):

public static void main(String[] args) {
    Doctor[] d = new Doctor[9];
    d[0] = new Doctor("Dr. Cohen", "Cardiology",12);
    d[1] = new Doctor("Dr. Levy", "Neurology");
    d[2] = new Doctor("Dr. Sharon", "Pediatrics",8);
    d[3] = new Intern("Dani", "Cardiology", new Doctor(d[0]));
    d[4] = new Intern("Yael", "Surgery", d[0]);
    d[5] = new Intern("Avi", "Pediatrics", new Doctor(d[2]));
    d[6] = new Intern("Ruth", "Oncology", d[2]);
    d[7] = new Intern("Noam", "Cardiology", new Doctor(d[1]));
    d[8] = new Intern("Maya", "Neurology", new Doctor(d[0]));
    for (int i=0; i<d.length; i++) {
        System.out.println(d[i]);
    }
    d[0] = new Doctor("Dr. Goldman","Neurology",20);
    d[2].setName("Dr. Galper");
    d[2].addPatients(100);
    d[3].addPatients(200);
    d[5].addPatients(100);
    System.out.println("After change:");
    for (int i=0; i<d.length; i++) {
        System.out.println(d[i]);
    }
}
(א)עקבו אחרי הביצוע של הפעולה main ורשמו מה יהיו ערכי התכונות של כל עצם שנוצר במהלך הביצוע.
(ב)מהו הפלט של הפעולה main?
(ג)כתבו פעולה חיצונית המקבלת מערך רופאים ומדפיסה את שמותיהם של כל המתמחים אשר ההתמחות שלהם שונה מההתמחות של המנחים שלהם.

כותרת הפעולה:
```java
public static void printNotSameSpec(Doctor[] d)
```

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

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

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

רוצים לתרגל אלפי שאלות נוספות?

המשיכו לתרגול מלא עם משוב אישי ←

מבחני מה"ט אמיתיים · משוב מיידי · וידאו לכל נושא · מעקב התקדמות

המשיכו לתרגול מלא ←