סיכום – מערכת תשלומים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Java של Coddy. שיעור 40 מתוך 87.
אתגר
קלבואו נבנה מערכת שלמה לעיבוד תשלומים, שתשלב את כל מה שלמדת על ממשקים בפרק הזה. תיצור מערכת גמישה שבה ניתן לעבד שיטות תשלום שונות באופן אחיד באמצעות ממשק משותף.
תארגן את הקוד שלך בחמישה קבצים:
Payable.java: הגדר את ממשק הליבה שכל שיטות התשלום חייבות לממש. עליו להצהיר על מתודה יחידהpay(double amount)שמחזירה String המתאר את פעולת התשלום.CreditCard.java: צור מחלקה שמממשת אתPayableומייצגת תשלומים בכרטיס אשראי. למחלקת CreditCard יש שדהcardNumberמסוג String ששומר את 4 הספרות האחרונות. כלול בנאי לאתחול שלו. המתודהpayצריכה להחזיר:Paid [amount] using Credit Card ending in [cardNumber]PayPal.java: צור מחלקה נוספת שמממשת אתPayableעבור תשלומים באמצעות PayPal. לחשבון PayPal יש שדהemailמסוג String. כלול בנאי לאתחול שלו. המתודהpayצריכה להחזיר:Paid [amount] via PayPal account [email]PaymentProcessor.java: צור מחלקת מעבד שיכולה לטפל בכל אובייקט מסוגPayable. צריכה להיות בה מתודהprocessPayment(Payable paymentMethod, double amount)שקוראת למתודהpayשל שיטת התשלום ומחזירה את התוצאה. כך מודגם כיצד ממשקים מאפשרים התנהגות פולימורפית: המעבד לא צריך לדעת מהו סוג התשלום המסוים!Main.java: חבר הכול יחד. תקבל שלוש קלטים: מספר כרטיס (4 הספרות האחרונות), כתובת דוא"ל וסכום לתשלום. צורPaymentProcessor, ואז השתמש בו כדי לעבד תשלומים בסכום הנתון באמצעות חשבוןCreditCardוגם באמצעות חשבוןPayPal. הדפס כל תוצאה בשורה נפרדת.
תקבל שלושה קלטים: 4 הספרות האחרונות של מספר הכרטיס (String), כתובת הדוא"ל של PayPal (String) וסכום התשלום (double).
עצב את הסכומים בפלט עם שתי ספרות אחרי הנקודה העשרונית. שים לב כיצד אותו PaymentProcessor מטפל בסוגי תשלום שונים לחלוטין באמצעות הכוח של ממשקים!
נסו בעצמכם
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// קרא את נתוני הקלט
String cardNumber = scanner.nextLine(); // 4 הספרות האחרונות
String email = scanner.nextLine(); // כתובת אימייל של PayPal
double amount = scanner.nextDouble(); // סכום התשלום
// TODO: צור PaymentProcessor
// TODO: צור CreditCard עם cardNumber
// TODO: צור חשבון PayPal עם email
// TODO: בצע תשלום באמצעות CreditCard והדפס את התוצאה
// TODO: בצע תשלום באמצעות PayPal והדפס את התוצאה
}
}
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםמבוא לתכנות מונחה עצמיםמחלקות לעומת אובייקטיםמילת המפתח thisמתודותשדות (מאפיינים)מתודת הבנאיהעמסת בנאיםחזרה – מחשבון פשוט4ירושה
ירושה בסיסית (extends)מילת המפתח superדריסת מתודות (@Override)שרשור בנאיםהמחלקה Objectירושה יחידה ורב־רמתיתלמה אין ירושה מרובה של מחלקותסיכום – היררכיית עובדים7מתודות מיוחדות ומחלקת Object
מתודת toString()equals() ו-hashCode()מתודת clone()compareTo() ו-Comparableהממשק Comparatorסיכום – מיון מותאם אישית2מצייני גישה ואנקפסולציה
סקירה של רמות הגישהמתודות Getter ו-Setterהסתרת מידעמילת המפתח finalסיכום – מנהל חשבון בנק5פולימורפיזם
יסודות העמסת מתודותדריסת מתודות (בזמן ריצה)המרה כלפי מעלה וכלפי מטההאופרטור instanceofמחלקות ומתודות מופשטותסיכום – מחשבון צורות8מושגי OOP מתקדמים
הרכבה מול ירושהאגרגציה מול הרכבהמחלקות פנימיות, מקוננות ואנונימיותEnums ומתודות של EnumRecords (Java 16+)מחלקות חתומות (Java 17+)3מאפייני מחלקה וחברים סטטיים
משתני מופע לעומת משתנים סטטייםמתודות סטטיותבלוקים סטטייםקבועים (static final)סיכום — מונה ומחלקת עזר6ממשקים ומחלקות מופשטות
מבוא לממשקיםמימוש ממשקיםמימוש של כמה ממשקיםמתודות ברירת מחדל וסטטיות בממשקמחלקות מופשטות לעומת ממשקיםממשקים פונקציונלייםסיכום – מערכת תשלומיםתרגלו בעצמכם: קומפיילר Java אונליין