חברת "דן" מעוניינת למחשב את שירותי המודיעין שלה עבור קווי האוטובוס בעיר. לצורך כך הוגדרו שלוש מחלקות: Time, BusRoute ו-CityTransport.
המחלקה Time מייצגת נקודת זמן לפי מספר שעות ומספר דקות.
public class Time{
private int hour;
private int minute;
במחלקה הוגדרו שתי פעולות בונות:
// הפעולה מקבלת מספר דקות totalMin שעברו מחצות
public Time(int totalMin){
this.hour = totalMin / 60;
this.minute = totalMin % 60;
}
לדוגמה: אם עברו 210 דקות נקודת הזמן הנוכחית היא 3:30.
// הפעולה מקבלת שעה h ודקה m
public Time(int h, int m){
this.hour = h;
this.minute = m;
}
במחלקה Time הוגדרו פעולות get וגם פעולה minFromMidnight המחזירה את מספר הדקות שעברו מחצות (0:00). אין צורך לממש אותן!
(א)כתבו במחלקה Time את הפעולה add המקבלת את המספר השלם החיובי minToAdd. הפעולה תחזיר אובייקט חדש מסוג Time המייצג את נקודת הזמן לאחר הוספת minToAdd דקות לזמן הנוכחי.
כותרת הפעולה:
`public Time add(int minToAdd)`
לדוגמה, אם האובייקט הנוכחי הוא 8:30 והפעולה קיבלה 45, יוחזר אובייקט חדש המייצג את נקודת הזמן 9:15.
כותרת הפעולה:
`public Time add(int minToAdd)`
לדוגמה, אם האובייקט הנוכחי הוא 8:30 והפעולה קיבלה 45, יוחזר אובייקט חדש המייצג את נקודת הזמן 9:15.
(ב)המחלקה BusRoute מייצגת מסלול של קו אוטובוס. תכונות המחלקה:
- `lineNo` – מספר קו (למשל: "61") – מטיפוס מחרוזת, String;
- `stops` – מערך השמות של תחנות העצירה, מסלול – מטיפוס מערך מחרוזות, String[];
- `durations` – מערך מספרים שלמים – int[]. הערך k במערך מציין את מספר הדקות הדרושות לאוטובוס כדי להגיע מתחנה k לתחנה k+1.
לדוגמה:
מערך התחנות `stops`:
| k | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| stops[k] | עמידר | קניון איילון | בורסה | מיניסטור לונדון | כרמלית |
מערך משכי הנסיעה `durations`:
| k | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| durations[k] | 12 | 15 | 10 | 8 |
האוטובוס נוסע 12 דקות מעמידר לקניון איילון, 15 דקות מקניון איילון לבורסה, 10 דקות מהבורסה למיניסטור לונדון, 8 דקות ממיניסטור לונדון לכרמלית.
במחלקה BusRoute הוגדרו פעולות get. אין צורך לממש אותן!
כתבו במחלקה BusRoute את שתי הפעולות הבאות:
1. פעולה בוליאנית המקבלת שמות של שתי תחנות st1 ו-st2 ובודקת האם ניתן להגיע מ-st1 ל-st2 באמצעות קו זה (כלומר, ששתיהן קיימות במערך תחנות ו-st2 מופיעה אחרי st1).
כותרת הפעולה:
`public boolean isRoutePossible(String st1, String st2)`
2. פעולה המקבלת שם של תחנת יעד stopName וזמן יציאה למסלול startTime. הפעולה תחזיר את זמן ההגעה לתחנה זו. אפשר להניח שהתחנה stopName קיימת במסלול.
כותרת הפעולה:
`public Time getArrivalTime(Time startTime, String stopName)`
- `lineNo` – מספר קו (למשל: "61") – מטיפוס מחרוזת, String;
- `stops` – מערך השמות של תחנות העצירה, מסלול – מטיפוס מערך מחרוזות, String[];
- `durations` – מערך מספרים שלמים – int[]. הערך k במערך מציין את מספר הדקות הדרושות לאוטובוס כדי להגיע מתחנה k לתחנה k+1.
לדוגמה:
מערך התחנות `stops`:
| k | 0 | 1 | 2 | 3 | 4 |
|---|---|---|---|---|---|
| stops[k] | עמידר | קניון איילון | בורסה | מיניסטור לונדון | כרמלית |
מערך משכי הנסיעה `durations`:
| k | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| durations[k] | 12 | 15 | 10 | 8 |
האוטובוס נוסע 12 דקות מעמידר לקניון איילון, 15 דקות מקניון איילון לבורסה, 10 דקות מהבורסה למיניסטור לונדון, 8 דקות ממיניסטור לונדון לכרמלית.
במחלקה BusRoute הוגדרו פעולות get. אין צורך לממש אותן!
כתבו במחלקה BusRoute את שתי הפעולות הבאות:
1. פעולה בוליאנית המקבלת שמות של שתי תחנות st1 ו-st2 ובודקת האם ניתן להגיע מ-st1 ל-st2 באמצעות קו זה (כלומר, ששתיהן קיימות במערך תחנות ו-st2 מופיעה אחרי st1).
כותרת הפעולה:
`public boolean isRoutePossible(String st1, String st2)`
2. פעולה המקבלת שם של תחנת יעד stopName וזמן יציאה למסלול startTime. הפעולה תחזיר את זמן ההגעה לתחנה זו. אפשר להניח שהתחנה stopName קיימת במסלול.
כותרת הפעולה:
`public Time getArrivalTime(Time startTime, String stopName)`
(ג)המחלקה CityTransport מייצגת מערכת הקווים העירונית. למחלקה תכונה אחת:
- `BusRoute[] routes` – מערך של עצמים מסוג קו אוטובוס
כתבו במחלקה CityTransport את הפעולה המקבלת תחנת מוצא ותחנת יעד. הפעולה תדפיס מספרי הקווים (lineNo) המאפשרים נסיעה מתחנת מוצא לתחנת יעד.
כותרת הפעולה:
`public void printRelevantLines(String origin, String destination)`
- `BusRoute[] routes` – מערך של עצמים מסוג קו אוטובוס
כתבו במחלקה CityTransport את הפעולה המקבלת תחנת מוצא ותחנת יעד. הפעולה תדפיס מספרי הקווים (lineNo) המאפשרים נסיעה מתחנת מוצא לתחנת יעד.
כותרת הפעולה:
`public void printRelevantLines(String origin, String destination)`
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה בטיחות
שאלו כאן — ותקבלו מענה מוסמך.
רוצים לתרגל אלפי שאלות נוספות?
המשיכו לתרגול מלא עם משוב אישי ←מבחני מה"ט אמיתיים · משוב מיידי · וידאו לכל נושא · מעקב התקדמות