בחניון קיימות מספר קומות (Floor), ובכל קומה יש אזורים (Area) המזוהים לפי צבע, כל אזור עם מספר מקומות פנויים ורשימת מספרי רישוי של המכוניות שחונות בו. Parking מחזיקה מערך Floor[].
בחניון קיימות מספר קומות (Floor), ובכל קומה יש אזורים (Area) המזוהים לפי צבע, כל אזור עם מספר מקומות פנויים ורשימת מספרי רישוי של המכוניות שחונות בו. Parking מחזיקה מערך Floor[].
class Parking
{
private Floor[] floors;
}
כתבו מחלקות עבור הטיפוסים: אזור — Area, וקומה — Floor. לכל מחלקה כתבו כותרת מחלקה ותכונות לפי התיאור. לייצוג אוסף אפשר להשתמש במחלקות Stack, Queue, Node. אפשר להוסיף תכונות נוספות. חובה לתעד את התכונות.
class Area { private String color; private int freeSpots; private Queue<String> plates; } class Floor { private int floorNumber; private Queue<Area> areas; }
כתבו פעולה פנימית במחלקה Floor המקבלת מספר רישוי של מכונית ובודקת אם יש בקומה מקום חניה עבורה. אם כן, המכונית "תשובץ" לחניה באחד האזורים בקומה והפעולה תחזיר את צבע האזור. אם לא, המכונית לא תשובץ והפעולה תחזיר מחרוזת "no room".
public String tryPark(String plate)
כתבו פעולה המקבלת תור של מספרי רישוי של מכוניות שממתינות בכניסה. הפעולה תשבץ את המכוניות הממתינות בתור. מכוניות שלא נמצא עבורן מקום, תשארנה בתור ההמתנה. עבור כל מכונית שנכנסה לחניון יודפסו מספר קומה וצבע אזור. הפעולה תסיים את עבודתה כאשר לא תשארנה מכוניות ב"תור המתנה" או כאשר לא יישאר מקום פנוי בחניון. בסיום העבודה הפעולה תדפיס הודעה: "ALL" אם כל המכוניות שובצו, או "NOT ALL" אם לא כולן שובצו.
public void processQueue(Queue<String> waiting)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.