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

במערכת לניהול מסעדה יש כמה מחלקות:

לקוח Client המאופיין בשם (String name) ומספר סועדים (int diners), שולחן Table המאופיין במספר שולחן (int num), מספר מקומות בשולחן (int places) ומספר מקומות פנויים (int free). מספר המקומות בשולחן (גודל השולחן) הוא אחד משלוש אפשרויות: 2 (שולחנות קטנים), 4 (שולחנות בינוניים) ו-8 (שולחנות גדולים). בשתי המחלקות קיימות הפעולות הבונות המקבלות את ערכי התכונות ופעולות Get/Set לכל תכונה. המחלקה Restaurant מאופיינת בתור של לקוחות וברשימה מקושרת של שולחנות.

class Restaurant
{
    private Queue<Client> clients;
    private Node<Table> tables;
    ….
}
סעיף א

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

public Restaurant(int small, int medium, int large)
סעיף ב

כתבו פעולה במחלקה Restaurant המקבלת מספר סועדים ומחזירה את מספר השולחן שיש בו מספיק מקומות הפנויים. אם אין שולחן כזה, הפעולה תחזיר ערך (-1). כותרת הפעולה:

public int findAvailableTable(int numOfDiners)
סעיף ג

כתבו פעולה במחלקה Restaurant המטפלת בהושבת לקוח בשולחן. הפעולה תושיב לקוח אחד מתוך הלקוחות הממתינים בתור, בשולחן שבו יש מספיק מקומות פנויים, תוך שמירה על סדר התור – לקוח מתאים שהגיע קודם, יטופל קודם. אם יימצא שולחן מתאים, יש להוציא את הלקוח מהתור, לעדכן את מספר מקומות הפנויים בשולחן ולהחזיר true. אם הפעולה לא תצליח להושיב אף לקוח מהלקוחות בתור, הפעולה תחזיר false. כותרת הפעולה:

public boolean seatNextClient()
שאלות ותגובות על השאלה

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

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

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