חברת "דן" מעוניינת למחשב את שירותי המודיעין שלה עבור קווי האוטובוס בעיר. לצורך כך הוגדרו שלוש מחלקות: Time, BusRoute ו-CityTransport.
חברת "דן" מעוניינת למחשב את שירותי המודיעין שלה עבור קווי האוטובוס בעיר. לצורך כך הוגדרו שלוש מחלקות: Time, BusRoute ו-CityTransport.
המחלקה Time מייצגת נקודת זמן לפי מספר שעות ומספר דקות. במחלקה הוגדרה הפעולה הבונה הבאה:
class Time:
def __init__(self, h, m):
self.hour = h
self.minute = m
במחלקה Time הוגדרה פונקציה min_from_midnight המחזירה את מספר הדקות שעברו מחצות (0:00). אין צורך לממש אותה!
כתבו במחלקה Time את הפונקציה add המקבלת את המספר השלם החיובי min_to_add. הפונקציה תחזיר אובייקט חדש מסוג Time המייצג את נקודת הזמן לאחר הוספת min_to_add דקות לזמן הנוכחי. כותרת הפונקציה: def add(self, min_to_add) לדוגמה, אם האובייקט הנוכחי הוא 8:30 והפונקציה קיבלה 45, יוחזר אובייקט חדש המייצג את נקודת הזמן 9:15.
המחלקה BusRoute מייצגת מסלול של קו אוטובוס. תכונות המחלקה:
- line_no – מספר קו (למשל: "61") – מטיפוס מחרוזת str;
- stops – רשימת שמות של תחנות העצירה במסלול – מטיפוס רשימת מחרוזות list של str;
- durations – רשימה של מספרים שלמים, list של int. הערך k ברשימה מציין את מספר הדקות הדרושות לאוטובוס כדי להגיע מתחנה k לתחנה k+1.
כתבו במחלקה BusRoute את שתי הפונקציות הבאות:
- פונקציה בוליאנית המקבלת שמות של שתי תחנות st1 ו-st2 ובודקת האם ניתן להגיע מ-st1 ל-st2 באמצעות קו זה (כלומר, ששתיהן קיימות ברשימת תחנות ו-st2 מופיעה אחרי st1). כותרת הפונקציה: def is_route_possible(self, st1, st2)
- פונקציה המקבלת שם של תחנת יעד stop_name וזמן יציאה למסלול start_time. הפונקציה תחזיר את זמן ההגעה לתחנה זו. אפשר להניח שהתחנה stop_name קיימת במסלול. כותרת הפונקציה: def get_arrival_time(self, start_time, stop_name)
המחלקה CityTransport מייצגת מערכת הקווים העירונית. למחלקה תכונה אחת:
- routes – רשימת קווי אוטובוס (רשימה של אובייקטים מסוג BusRoute).
כתבו במחלקה CityTransport את הפונקציה המקבלת תחנת מוצא ותחנת יעד. הפונקציה תדפיס (מספרי הקווים line_no) המאפשרים נסיעה מתחנת מוצא לתחנת יעד. כותרת הפונקציה: def print_relevant_lines(self, origin, destination)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.