טוען...
טוען...
במסעדת "הרמה" אפשר להזמין מקום עבור סועד אחד או יותר. בסוף הארוחה, כל אחד מן הסועדים משלם בנפרד על מה שאכל. כל סועד יכול לבחור אם לשלם במזומן או באמצעות אפליקציה או בכרטיס אשראי. למשלמים בכרטיס אשראי יש אפשרות לפצל את החשבון לכמה תשלומים שווים.
כדי לנהל מערכת תשלומים, מפתחים עבור המסעדה פרויקט ובו הממשק (Interface) IPayment, והמחלקות Restaurant, Reservation, Credit, App, Cash, כמפורט להלן:
IPayment — תשלום: בממשק קיימת הפעולה: double getPrice()Cash — תשלום במזומן. תכונות המחלקה:
sumCash – הסכום לתשלום במזומן, מטיפוס ממשי.name – שם הלקוח, מטיפוס מחרוזת.App — תשלום באמצעות אפליקציה. תכונות המחלקה:
sumApp – הסכום לתשלום באפליקציה, מטיפוס ממשי.phoneNumber – מספר טלפון, מטיפוס מחרוזת.Credit — תשלום בכרטיס אשראי. תכונות המחלקה:
num – מספר התשלומים, מטיפוס שלם.part – הסכום בכל תשלום, מטיפוס ממשי.creditNumber – מספר כרטיס האשראי, מטיפוס מחרוזת.Reservation — הזמנה. תכונות המחלקה:
date – תאריך ההזמנה, מטיפוס מחרוזת.total – החשבון סך הכול של כל הסועדים יחד באותה הזמנה, מטיפוס ממשי.payments – מערך השומר את התשלום ששילם כל אחד מן הסועדים באותה הזמנה, מטיפוס IPayment (המערך ללא ערכי null).Restaurant — המסעדה. תכונות המחלקה:
array – מערך בגודל 10,000, מטיפוס Reservation.current – כמות ההזמנות השמורות, מטיפוס שלם.הניחו שההזמנות נשמרות ברצף במערך ואין ביניהן ערכי null.
הערה
הניחו שבכל מחלקה הוגדרו פעולות
getו־setופעולות בונות.
סרטטו תרשים הייררכייה המתאר את הקשרים של המחלקות והממשק של הפרויקט.
המסעדה עושה הנחות לסועדים בהתאם לצורת התשלום:
| צורת התשלום | ההנחה |
|---|---|
| מזומן | הסכום לתשלום הוא מעל 200 שקלים — 10% הנחה |
| אפליקציה | תמיד 5% הנחה |
| כרטיס אשראי | מחיר מלא |
פעולת הממשק getPrice מחזירה את סך התשלום שכל סועד משלם לאחר שקלול ההנחה (כאשר אין הנחה, הפעולה מחזירה מחיר מלא). ממשו את פעולת הממשק getPrice בכל אחת מן המחלקות הנדרשות.
כתבו במחלקה Reservation פעולה ששמה cashTotal. הפעולה מחזירה את סכום הכסף המזומן שהתקבל בהזמנה (לאחר שקלול ההנחה).
לפניכם פעולה במחלקה Reservation:
java1public void printDetails () {
2 for (int i = 0; i < payments.length; i ++) {
3 System.out.println (payments[i].getDetails());
4 }
5}
הפעולה מדפיסה עבור כל סועד פרטים מסוימים על פי הקריטריונים שלהלן:
הוסיפו את הפעולות הנחוצות לפרויקט כדי שהפעולה תבצע את הנדרש. ציינו עבור כל פעולה שהוספתם לאיזו מחלקה או לאיזה ממשק היא שייכת.
⚠ הערה — אילוץ מחייב
אין לשנות את הפעולה
printDetails.
במסעדת "הרמה" אפשר להזמין מקום עבור סועד אחד או יותר. בסוף הארוחה, כל אחד מן הסועדים משלם בנפרד על מה שאכל. כל סועד יכול לבחור אם לשלם במזומן או באמצעות אפליקציה או בכרטיס אשראי. למשלמים בכרטיס אשראי יש אפשרות לפצל את החשבון לכמה תשלומים שווים.
כדי לנהל מערכת תשלומים, מפתחים עבור המסעדה פרויקט ובו הממשק (Interface) IPayment, והמחלקות Restaurant, Reservation, Credit, App, Cash, כמפורט להלן:
IPayment — תשלום: בממשק קיימת הפעולה: double getPrice()Cash — תשלום במזומן. תכונות המחלקה:
sumCash – הסכום לתשלום במזומן, מטיפוס ממשי.name – שם הלקוח, מטיפוס מחרוזת.App — תשלום באמצעות אפליקציה. תכונות המחלקה:
sumApp – הסכום לתשלום באפליקציה, מטיפוס ממשי.phoneNumber – מספר טלפון, מטיפוס מחרוזת.Credit — תשלום בכרטיס אשראי. תכונות המחלקה:
num – מספר התשלומים, מטיפוס שלם.part – הסכום בכל תשלום, מטיפוס ממשי.creditNumber – מספר כרטיס האשראי, מטיפוס מחרוזת.Reservation — הזמנה. תכונות המחלקה:
date – תאריך ההזמנה, מטיפוס מחרוזת.total – החשבון סך הכול של כל הסועדים יחד באותה הזמנה, מטיפוס ממשי.payments – מערך השומר את התשלום ששילם כל אחד מן הסועדים באותה הזמנה, מטיפוס IPayment (המערך ללא ערכי null).Restaurant — המסעדה. תכונות המחלקה:
array – מערך בגודל 10,000, מטיפוס Reservation.current – כמות ההזמנות השמורות, מטיפוס שלם.הניחו שההזמנות נשמרות ברצף במערך ואין ביניהן ערכי null.
הערה
הניחו שבכל מחלקה הוגדרו פעולות
getו־setופעולות בונות.
סרטטו תרשים הייררכייה המתאר את הקשרים של המחלקות והממשק של הפרויקט.
המסעדה עושה הנחות לסועדים בהתאם לצורת התשלום:
| צורת התשלום | ההנחה |
|---|---|
| מזומן | הסכום לתשלום הוא מעל 200 שקלים — 10% הנחה |
| אפליקציה | תמיד 5% הנחה |
| כרטיס אשראי | מחיר מלא |
פעולת הממשק getPrice מחזירה את סך התשלום שכל סועד משלם לאחר שקלול ההנחה (כאשר אין הנחה, הפעולה מחזירה מחיר מלא). ממשו את פעולת הממשק getPrice בכל אחת מן המחלקות הנדרשות.
כתבו במחלקה Reservation פעולה ששמה cashTotal. הפעולה מחזירה את סכום הכסף המזומן שהתקבל בהזמנה (לאחר שקלול ההנחה).
לפניכם פעולה במחלקה Reservation:
java1public void printDetails () {
2 for (int i = 0; i < payments.length; i ++) {
3 System.out.println (payments[i].getDetails());
4 }
5}
הפעולה מדפיסה עבור כל סועד פרטים מסוימים על פי הקריטריונים שלהלן:
הוסיפו את הפעולות הנחוצות לפרויקט כדי שהפעולה תבצע את הנדרש. ציינו עבור כל פעולה שהוספתם לאיזו מחלקה או לאיזה ממשק היא שייכת.
⚠ הערה — אילוץ מחייב
אין לשנות את הפעולה
printDetails.