במסעדת "הרמה" אפשר להזמין מקום עבור סועד אחד או יותר. בסוף הארוחה כל אחד מן הסועדים משלם בנפרד על מה שאכל. כל סועד יכול לבחור לשלם במזומן, באמצעות אפליקציה, או בכרטיס אשראי. למשלמים בכרטיס אשראי יש אפשרות לפצל את החשבון לכמה תשלומים שווים.
כדי לנהל את מערכת התשלומים פותחו עבור המסעדה הממשק 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 תבצע את הנדרש, וציינו עבור כל פעולה שהוספתם לאיזו מחלקה או לאיזה ממשק היא שייכת. אין לשנות את הפעולה printDetails.
במסעדת "הרמה" אפשר להזמין מקום עבור סועד אחד או יותר. בסוף הארוחה כל אחד מן הסועדים משלם בנפרד על מה שאכל. כל סועד יכול לבחור לשלם במזומן, באמצעות אפליקציה, או בכרטיס אשראי. למשלמים בכרטיס אשראי יש אפשרות לפצל את החשבון לכמה תשלומים שווים.
כדי לנהל את מערכת התשלומים פותחו עבור המסעדה הממשק 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 תבצע את הנדרש, וציינו עבור כל פעולה שהוספתם לאיזו מחלקה או לאיזה ממשק היא שייכת. אין לשנות את הפעולה printDetails.