Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - نظام الدفع

جزء من قسم Object Oriented Programming في رحلة Java على Coddy — الدرس 40 من 87.

challenge icon

التحدي

سهل

دعنا نبني نظاماً كاملاً لمعالجة المدفوعات يجمع كل ما تعلمته عن الواجهات (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