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

התור בדואר

מאתגר Java

המשימה

בדואר ישראל יש תור לקבלת שירות בדלפק. על פי החוק, אזרחים בני 80 ומעלה
פטורים מהתור ומקבלים שירות לפני כולם. כל השאר עומדים לפי סדר הגעתם.

בנו שתי מחלקות:

**Customer** — לקוח, עם חמשת יסודות המחלקה:
• name — שם
• age — גיל

**PostOffice** — מנהלת את התור. חשבו בעצמכם על התכונות.
• addCustomer(c) — מוסיפה לקוח לתור, לפי כלל הקדימות.
• callCustomer() — מדפיסה את שם הלקוח הבא ומסירה אותו מהתור.
  אם אין לקוחות — מדפיסה "אין לקוחות בתור".

בפעולה הראשית, הכניסו לפי סדר הגעה: אזרח בן 23, אזרח בן 82, אזרח בן 34.
אחר כך בצעו קריאה ללקוח **ארבע** פעמים.

הפלט הצפוי:
  דוד      (בן 82 — פטור מהתור)
  אבי      (בן 23 — הראשון מבין הרגילים)
  רונית    (בן 34)
  אין לקוחות בתור

הנחיות:
• רמז לתכונות: תור אחד לא מספיק כדי לתת קדימות בלי לשבור את סדר
  ההגעה של השאר.
• 80 בדיוק כלול בפטור.

ממשק מבני הנתונים כבר מצורף למשימה.

```ds:table
{"title":"סדר ההגעה מול סדר השירות","rows":[["סדר הגעה","שם","גיל","פטור?","סדר שירות"],["1","אבי","23","לא","2"],["2","דוד","82","כן","1"],["3","רונית","34","לא","3"]]}
```

```ds:queue
{"title":"תור הפטורים אחרי שלוש ההוספות","items":["דוד"]}
```

```ds:queue
{"title":"תור הרגילים אחרי שלוש ההוספות","items":["אבי","רונית"]}
```

קוד הפתיחה

class Customer {
    private String name;
    private int age;

    public Customer(String name, int age) {
        // אתחל את התכונות
    }

    public String getName() { return ""; }
    public int    getAge()  { return 0; }
    public void   setName(String name) { }
    public void   setAge(int age)      { }

    public String toString() { return ""; }
}

class PostOffice {
    // הגדר כאן את התכונות

    public PostOffice() {
        // אתחל את התכונות
    }

    /** מוסיפה לקוח לתור, לפי כלל הקדימות. */
    public void addCustomer(Customer c) {
        // כתוב את הפתרון כאן
    }

    /** מדפיסה את שם הלקוח הבא ומסירה אותו. אם אין — "אין לקוחות בתור". */
    public void callCustomer() {
        // כתוב את הפתרון כאן
    }
}

public class Main {
    public static void main(String[] args) {
        PostOffice po = new PostOffice();

        po.addCustomer(new Customer("אבי", 23));
        po.addCustomer(new Customer("דוד", 82));
        po.addCustomer(new Customer("רונית", 34));

        po.callCustomer();   // דוד
        po.callCustomer();   // אבי
        po.callCustomer();   // רונית
        po.callCustomer();   // אין לקוחות בתור
    }
}

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

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