ברשות הדואר החליטו למחשב את המערך לקבלת דברי הדואר. לצורך כך הוגדרו שלוש מחלקות שונות: MailItem, Letter ו-Package.
ברשות הדואר החליטו למחשב את המערך לקבלת דברי הדואר. לצורך כך הוגדרו שלוש מחלקות שונות: MailItem, Letter ו-Package.
letterFieldsHebrew:
- שם שולח המכתב, מטיפוס [String/string], מחרוזת.
- מען המכתב (כתובת), מטיפוס [String/string], מחרוזת.
- דואר רשום, מטיפוס [boolean/bool]: true – עבור דואר רשום, false – עבור דואר רגיל.
- גודל המכתב, טיפוס תו (char) – 'S' עבור מכתב קטן, 'B' עבור מכתב בגודל סטנדרטי, 'L' עבור מכתב בגודל גדול.
- מחיר בסיסי למשלוח מכתב בגודל סטנדרטי, מטיפוס מספר ממשי double.
- מחיר משלוח מכתב תלוי בגודלו ובסוגו: עבור מכתב בדואר רשום יש להוסיף 10 ₪, עבור מכתב קטן יש הנחה של שני שקלים, עבור מכתב גדול יש תוספת של 3 ₪.
packageFieldsHebrew:
- שם שולח החבילה, מטיפוס [String/string], מחרוזת.
- מען החבילה (כתובת), מטיפוס [String/string], מחרוזת.
- משקל החבילה בקילוגרמים, מטיפוס int.
- האם שביר?: true – אם תוכן החבילה שביר, false – אם לא שביר.
- מחיר בסיסי למשלוח חבילה, מטיפוס מספר ממשי double.
- מחיר משלוח חבילה תלוי במשקלה ובסוגה: בעבור משקל פחות מ-5 קילוגרמים יש לשלם מחיר בסיסי. מעל 5 קילוגרמים יש לשלם לכל 5 קילוגרמים תוספת של 3 ₪. אם התוכן שביר יש להוסיף עוד 15 ₪.
hierarchyNote: MailItem היא מחלקת האב למחלקות Letter ו-Package (UML: MailItem <- Letter, Package).
כתבו כותרות ותכונות של כל אחת מהמחלקות MailItem, Letter ו-Package.
public double getRealPrice()
כתבו פעולה. הפעולה תחשב ותחזיר מחיר סופי של משלוח. יש לציין באיזה מחלקה/מחלקות צריך להוסיף את הפעולה בהתאם לעקרונות תכנות מונחה עצמים.
public static String bigSender(MailItem[] args)
כתבו פעולה. הפעולה מקבלת מערך של משלוחים ומחזירה את שם השולח של המשלוח שמחיר המשלוח שלו הוא הגבוה ביותר. אם אין אף משלוח במערך, הפעולה תחזיר ערך null. אפשר להניח שיש רק משלוח אחד כזה. אפשר להניח שקיימות פעולות set/get בכל מחלקה.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.