המשימה
המחלקה Hour נתונה לך **מוכנה** — אל תשנה אותה. יש לה שעה, דקות,
ופעולה toMinutes שמחזירה כמה דקות עברו מתחילת היממה.
בנה מחלקה בשם Parking שמייצגת חנייה אחת:
• תכונה פרטית id (מחרוזת — מספר הרכב).
• שתי תכונות פרטיות מטיפוס **Hour**: שעת כניסה ושעת יציאה.
• בנאי שמקבל id ושתי שעות.
• פעולות מאחזרות ל-id ולשעת הכניסה.
• פעולה totalMinutes שמחזירה כמה דקות ארכה החנייה.
ובנוסף, **פעולה חיצונית** (סטטית) שמקבלת מערך חניות ומחזירה את
החנייה הארוכה ביותר.
דוגמה: כניסה 08:30, יציאה 10:00 → 90 דקות.
הנחיות:
• תכונה יכולה להיות עצם, לא רק מספר או מחרוזת. זו הנקודה של התרגיל.
• אל תשכפל את החישוב של Hour בתוך Parking — קרא ל-toMinutes.
אורך החנייה הוא הפרש שתי התוצאות.
• הנח שהיציאה מאוחרת מהכניסה, באותה יממה.
• הפעולה החיצונית מחזירה את **העצם** Parking, לא את מספר הדקות.
```ds:table
{"title":"החניות שבדוגמה","rows":[["רכב","כניסה","יציאה","דקות"],["11-111-11","08:30","10:00","90"],["22-222-22","09:00","09:45","45"],["33-333-33","06:00","12:00","360"]]}
```
קוד הפתיחה
// ── נתון, אל תשנה ─────────────────────────────────────────────
class Hour {
private int hour;
private int minutes;
public Hour(int hour, int minutes) {
this.hour = hour;
this.minutes = minutes;
}
public int getHour() { return this.hour; }
public int getMinutes() { return this.minutes; }
/** כמה דקות עברו מתחילת היממה. */
public int toMinutes() { return this.hour * 60 + this.minutes; }
}
// ──────────────────────────────────────────────────────────────
class Parking {
// הגדר כאן את התכונות — id, ושתי שעות
public Parking(String id, Hour in, Hour out) {
// אתחל את התכונות
}
public String getId() {
return "";
}
public Hour getIn() {
return null;
}
/** כמה דקות ארכה החנייה. */
public int totalMinutes() {
// כתוב את הפתרון כאן — היעזר ב-toMinutes
return 0;
}
}
public class Main {
/** מחזירה את החנייה הארוכה ביותר במערך. */
public static Parking longest(Parking[] arr) {
// כתוב את הפתרון כאן
return arr[0]; // מציב זמני
}
public static void main(String[] args) {
Parking[] lot = {
new Parking("11-111-11", new Hour(8, 30), new Hour(10, 0)),
new Parking("22-222-22", new Hour(9, 0), new Hour(9, 45)),
new Parking("33-333-33", new Hour(6, 0), new Hour(12, 0))
};
System.out.println(lot[0].totalMinutes()); // 90
System.out.println(lot[1].totalMinutes()); // 45
System.out.println(longest(lot).getId()); // 33-333-33
Hour in = longest(lot).getIn();
System.out.println(in == null ? "null" : "" + in.getHour()); // 6
Parking zero = new Parking("00-000-00", new Hour(7, 0), new Hour(7, 0));
System.out.println(zero.totalMinutes()); // 0
}
}
כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון —
כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות
בדיקה חיצוני.