ملخص - معالج الدفع
جزء من قسم Object Oriented Programming في رحلة Dart على Coddy — الدرس 62 من 110.
التحدي
سهللنقم ببناء نظام معالجة مدفوعات يوضح قوة تعدد الأشكال (polymorphism)! ستقوم بإنشاء فئة مجردة (abstract class) لطريقة الدفع وعدة تطبيقات ملموسة (concrete implementations)، ثم معالجة مجموعة من أنواع الدفع المختلفة من خلال واجهة موحدة.
ستقوم بتنظيم الكود الخاص بك في ملفين:
payments.dart: حدد التسلسل الهرمي للمدفوعات هنا:- فئة مجردة
PaymentMethodتحتوي على خاصيةString accountHolder، ومنشئ (constructor)، ودالة مجردة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
}
جميع دروس Object Oriented Programming
1أساسيات الـ OOP
الملفات الخارجيةالمكتبات والـ Importsمقدمة في الـ OOPالـ Classes مقابل الـ Objectsالكلمة المفتاحية thisالـ Methodsمتغيرات الـ Instanceأساسيات الـ Constructorمراجعة - آلة حاسبة بسيطة4أمان الـ Null
مقدمة في أمان الـ NullNullable مقابل Non-Nullableعاملا الـ ? و !الكلمة المفتاحية Late وأمان الـ Nullالعوامل المدركة للـ Nullأمان الـ Null في الـ Classesمراجعة - نظام ملف تعريف المستخدم7الفئات المجردة والواجهات
الفئات المجردةالدوال المجردةالواجهات في Dartالواجهات الضمنيةالتنفيذ مقابل التوسيعالواجهات المتعددةمراجعة - حاسبة الأشكال10المجموعات والأنماط العامة
نظرة عامة على List و Set و Mapالمجموعات آمنة النوعالفئات العامةالدوال العامةقيود الأنماط العامةIterable و Iteratorملخص - التخزين العام13مفاهيم OOP المتقدمة
التركيب مقابل الوراثة (Composition vs Inheritance)دوال التوسعة (Extension Methods)الأصناف القابلة للاستدعاء (Callable Classes)الأصناف المختومة (Sealed Classes - Dart 3)السجلات (Records - Dart 3)الأنماط والمطابقة (Patterns & Matching - 3.0)التعدادات مع الدوال (Enums with Methods)2المنشئات في Dart
المنشئ الافتراضيالمنشئات المسماةقوائم التهيئةالمنشئات الثابتةالمنشئات المصنعيةالمنشئات الموجهةملخص - بناء الأشكال5التغليف (Encapsulation)
الأعضاء العامة مقابل الخاصةاتفاقية البادئة _الخصوصية على مستوى المكتبةتعمق في Getters و Settersإخفاء المعلوماتمراجعة - سجلات الطلاب8Mixins
مقدمة إلى Mixinsإنشاء Mixinsاستخدام Mixins متعددةالكلمة المفتاحية on في MixinsMixin مقابل الوراثة (Inheritance)Mixin مقابل الواجهة (Interface)مراجعة - نظام الحيوانات (Animal System)3خصائص الـ Class
أعضاء الـ Instance مقابل الـ Staticحقول Final و Constمتغيرات Lateالـ Static Methods والحقولدوال الـ Getters والـ Settersمراجعة - مدير الحساب البنكي6الوراثة
أساسيات الوراثةالكلمة المفتاحية superإعادة تعريف الدوال (Method Overriding)الوسم @overrideالكلمة المفتاحية final Classالدوال البانية والوراثةمراجعة - هيكلية الموظفين9تعدد الأشكال
أساسيات تعدد الأشكالتعدد الأشكال عبر الـ Interfacesالتحقق من النوع أثناء التشغيلالمعاملات is و asالكلمة المفتاحية Covariantملخص - معالج الدفع12البرمجة الكائنية غير المتزامنة (Async OOP)
Futures و async/awaitأساسيات الـ Streamsمتحكمات الـ Streamsالـ Constructors غير المتزامنةالعمليات غير المتزامنة في دوال الكلاسمراجعة - جالب البيانات (Data Fetcher)15أنماط التصميم - الجزء الثاني
نمط الأمرنمط المحولنمط المزيننمط طريقة القالبنمط الحالةنمط التركيبنمط المستودع