مراجعة - نظام الدفع
جزء من قسم Object Oriented Programming في رحلة Java على Coddy — الدرس 40 من 87.
التحدي
سهلدعنا نبني نظاماً كاملاً لمعالجة المدفوعات يجمع كل ما تعلمته عن الواجهات (interfaces) في هذا الفصل. ستقوم بإنشاء نظام مرن حيث يمكن معالجة طرق دفع مختلفة بشكل موحد من خلال واجهة مشتركة.
ستقوم بتنظيم الكود الخاص بك عبر خمسة ملفات:
Payable.java: قم بتعريف الواجهة الأساسية التي يجب أن تنفذها جميع طرق الدفع. يجب أن تصرح عن ميثود واحدةpay(double amount)تعيد String يصف عملية الدفع.CreditCard.java: أنشئ كلاس ينفذPayableيمثل مدفوعات البطاقات الائتمانية. تحتوي الـ CreditCard على حقلcardNumber(String) يخزن آخر 4 أرقام. قم بتضمين constructor لتهيئته. يجب أن تعيد الميثودpayالنص التالي:Paid [amount] using Credit Card ending in [cardNumber]PayPal.java: أنشئ كلاس آخر ينفذPayableلمدفوعات PayPal. يحتوي حساب PayPal على حقلemail(String). قم بتضمين constructor لتهيئته. يجب أن تعيد الميثودpayالنص التالي:Paid [amount] via PayPal account [email]PaymentProcessor.java: أنشئ كلاس معالج يمكنه التعامل مع أي كائن من نوعPayable. يجب أن يحتوي على ميثودprocessPayment(Payable paymentMethod, double amount)تستدعي الميثودpayالخاصة بطريقة الدفع وتعيد النتيجة. يوضح هذا كيف تمكن الواجهات السلوك متعدد الأشكال (polymorphic behavior) — فالمعالج لا يحتاج إلى معرفة نوع الدفع المحدد!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 وطباعة النتيجة
}
}
جميع دروس Object Oriented Programming
1أساسيات الـ OOP
الملفات الخارجيةمقدمة في الـ OOPالفئات (Classes) مقابل الكائنات (Objects)الكلمة المفتاحية thisالدوال (Methods)الحقول (Attributes)دالة البناء (Constructor)تعدد أشكال دالة البناء (Constructor Overloading)مراجعة - آلة حاسبة بسيطة4الوراثة
الوراثة الأساسية (extends)الكلمة المفتاحية superإعادة تعريف الدوال (@Override)تسلسل المنشئات (Constructor Chaining)كلاس Objectالوراثة الأحادية ومتعددة المستوياتلماذا لا توجد وراثة متعددة للكلاساتمراجعة - هيكلية الموظفين7الدوال الخاصة وفئة Object
دالة toString()equals() و hashCode()دالة clone()compareTo() و Comparableواجهة Comparatorمراجعة - الترتيب المخصص2محددات الوصول والتغليف
نظرة عامة على مستويات الوصولدوال Getter و Setterإخفاء البياناتالكلمة المفتاحية finalمراجعة - مدير الحساب البنكي5تعدد الأشكال (Polymorphism)
أساسيات الـ Method Overloadingالـ Method Overriding (في وقت التشغيل)الـ Upcasting والـ Downcastingمعامل الـ instanceofالفئات والدوال المجردة (Abstract)مراجعة - حاسبة الأشكال8مفاهيم OOP المتقدمة
الـ Composition مقابل الـ Inheritanceالـ Aggregation مقابل الـ Compositionالفئات الداخلية والمتداخلة والمجهولة (Inner, Nested & Anonymous)الـ Enums ودوالهاالـ Records (Java 16+)الـ Sealed Classes (Java 17+)11أنماط التصميم - الجزء الأول
مقدمة في أنماط التصميمنمط Singletonنمط Factoryنمط Builderنمط Observerنمط Strategy3خصائص الفئة والعضو الساكن
المتغيرات الخاصة بالكائن مقابل المتغيرات الساكنةالدوال الساكنةالكتل البرمجية الساكنةالثوابت (static final)ملخص - العداد والأدوات المساعدة6الواجهات (Interfaces) والأصناف المجردة (Abstract Classes)
مقدمة في الواجهات (Interfaces)تنفيذ الواجهات (Interfaces)تنفيذ واجهات متعددةالـ Default و Static في الواجهاتالأصناف المجردة مقابل الواجهاتالواجهات الوظيفية (Functional Interfaces)مراجعة - نظام الدفع9الأنواع العامة (Generics)
مقدمة في الأنواع العامةالأصناف العامة (Generic Classes)الدوال العامة (Generic Methods)معاملات الأنواع المقيدةالرموز البديلة (?, extends, super)مراجعة - الحاويات العامة12أنماط التصميم - الجزء الثاني
نمط الأمرنمط المحولنمط المزيننمط طريقة القالبنمط الحالةنمط التركيبنمط المكرر