סיכום — מעבד תשלומים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Dart של Coddy. שיעור 62 מתוך 110.
אתגר
קלבוא נבנה מערכת לעיבוד תשלומים שמדגימה את העוצמה של פולימורפיזם! תיצור מחלקת שיטת תשלום מופשטת וכמה מימושים קונקרטיים, ואז תעבד אוסף של סוגי תשלום שונים באמצעות ממשק אחיד.
תארגן את הקוד שלך בשני קבצים:
payments.dart: הגדר כאן את היררכיית התשלומים שלך:- מחלקה מופשטת
PaymentMethodעם מאפייןString accountHolder, בנאי ומתודה מופשטתprocessPayment(double amount) - מחלקה
CreditCardשיורשת מ-PaymentMethodעם מאפיין נוסףString cardNumber(4 הספרות האחרונות בלבד). המתודה שלהprocessPaymentצריכה להדפיסProcessing $[amount] via Credit Card ****[cardNumber] for [accountHolder] - מחלקה
PayPalשיורשת מ-PaymentMethodעם מאפיין נוסףString email. המתודה שלהprocessPaymentצריכה להדפיסProcessing $[amount] via PayPal ([email]) for [accountHolder] - מחלקה
BankTransferשיורשת מ-PaymentMethodעם מאפיין נוסףString bankName. המתודה שלהprocessPaymentצריכה להדפיסProcessing $[amount] via Bank Transfer from [bankName] for [accountHolder]
processAllPayments(List<PaymentMethod> methods, double amount)ש:- מדפיסה
Processing [count] payments of $[amount] each:כאשר count הוא מספר שיטות התשלום - עוברת על כל שיטת תשלום וקוראת ל-
processPayment(amount) - לאחר עיבוד כל התשלומים, סופרת כמה מהם הם מסוג
CreditCardבאמצעות האופרטורisומדפיסהCredit card payments: [count]
- מחלקה מופשטת
main.dart: ייבא את קובץ התשלומים שלך והדגם את מעבד התשלומים:- צור
List<PaymentMethod>שמכיל:CreditCardעבור'Alice Smith'עם מספר כרטיס'1234'PayPalעבור'Bob Jones'עם כתובת דוא"ל'bob@email.com'BankTransferעבור'Carol White'עם בנק'National Bank'CreditCardעבור'David Brown'עם מספר כרטיס'5678'
- קרא ל-
processAllPaymentsעם הרשימה הזאת והסכום99.99
- צור
שים לב שפונקציית processAllPayments פועלת עם הסוג המופשט PaymentMethod, ובכל זאת כל תשלום מעובד בהתאם למימוש הספציפי שלו. בדיקת הסוגים בסוף מדגימה איך עדיין אפשר לזהות סוגים מסוימים כשצריך.
הפלט הצפוי:
Processing 4 payments of $99.99 each:
Processing $99.99 via Credit Card ****1234 for Alice Smith
Processing $99.99 via PayPal (bob@email.com) for Bob Jones
Processing $99.99 via Bank Transfer from National Bank for Carol White
Processing $99.99 via Credit Card ****5678 for David Brown
Credit card payments: 2נסו בעצמכם
import 'payments.dart';
void main() {
// TODO: צרו List<PaymentMethod> שמכילה:
// - CreditCard עבור 'Alice Smith' עם מספר כרטיס '1234'
// - PayPal עבור 'Bob Jones' עם כתובת אימייל 'bob@email.com'
// - BankTransfer עבור 'Carol White' עם בנק 'National Bank'
// - CreditCard עבור 'David Brown' עם מספר כרטיס '5678'
// TODO: קראו ל-processAllPayments עם הרשימה והסכום 99.99
}
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםספריות וייבואמבוא לתכנות מונחה עצמיםמחלקות לעומת אובייקטיםמילת המפתח thisמתודותמשתני מופעיסודות הבנאיחזרה: מחשבון פשוט4בטיחות מפני ערכי null
מבוא לבטיחות מפני ערכי nullניתן להקצאה ל-null לעומת לא ניתן להקצאה ל-nullהאופרטורים ? ו-!מילת המפתח Late ובטיחות מפני ערכי nullאופרטורים מודעי nullבטיחות מפני ערכי null במחלקותסיכום – מערכת פרופילי משתמשים7מחלקות מופשטות וממשקים
מחלקות מופשטותמתודות מופשטותממשקים ב-Dartממשקים משתמעיםמימוש לעומת הורשהממשקים מרוביםחזרה – מחשבון צורות10אוספים וגנריות
סקירה כללית של List, Set ו-Mapאוספים בטוחים מבחינת טיפוסיםמחלקות גנריותמתודות גנריותאילוצים גנרייםIterable ו-Iteratorסיכום – אחסון גנרי13מושגי OOP מתקדמים
הרכבה לעומת הורשהמתודות הרחבהמחלקות קריאותמחלקות אטומות (Dart 3)רשומות (Dart 3)תבניות והתאמה (3.0)טיפוסים מונים עם מתודות16פרויקט: ניהול ספרייה
סקירת הפרויקטמחלקות ספר ומשתמש2בנאים ב-Dart
בנאי ברירת מחדלבנאים בעלי שםרשימות אתחולבנאים קבועיםבנאי Factoryבנאים מפניםסיכום - בונה צורות5כימוס
חברים ציבוריים לעומת פרטייםמוסכמת הקידומת _פרטיות ברמת הספרייההעמקה ב-getters וב-settersהסתרת מידעסיכום – רשומות תלמידים8מיקסינים
מבוא למיקסיניםיצירת מיקסיניםשימוש במספר מיקסיניםמילת המפתח on במיקסיניםמיקסינים לעומת ירושהמיקסינים לעומת ממשקסיכום – מערכת בעלי החיים3מאפייני מחלקה
איברי מופע לעומת איברים סטטייםשדות final ו-constמשתני lateמתודות ושדות סטטייםGetters ו-Settersסיכום – מנהל חשבונות בנק6ירושה
ירושה בסיסיתמילת המפתח superדריסת מתודותהאנוטציה @overrideמילת המפתח final למחלקהבנאים וירושהסיכום – היררכיית עובדים9פולימורפיזם
יסודות הפולימורפיזםפולימורפיזם באמצעות ממשקיםבדיקת טיפוסים בזמן ריצההאופרטורים is ו-asמילת המפתח קווריאנטיסיכום — מעבד תשלומים12תכנות מונחה עצמים אסינכרוני
Future-ים ו-async/awaitיסודות ה-Streamsבקרי Streamsבנאים אסינכרונייםאסינכרוניות במתודות של מחלקהסיכום - אחזור נתוניםתרגלו בעצמכם: קומפיילר Dart אונליין