Menu
Coddy logo textTech

סיכום — מעבד תשלומים

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Dart של Coddy. שיעור 62 מתוך 110.

challenge icon

אתגר

קל

בוא נבנה מערכת לעיבוד תשלומים שמדגימה את העוצמה של פולימורפיזם! תיצור מחלקת שיטת תשלום מופשטת וכמה מימושים קונקרטיים, ואז תעבד אוסף של סוגי תשלום שונים באמצעות ממשק אחיד.

תארגן את הקוד שלך בשני קבצים:

  • 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
}

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר Dart אונליין