Menu
Coddy logo textTech

Resumen - Sistema de Pagos

Parte de la sección Programación Orientada a Objetos del Journey de Java de Coddy — lección 40 de 87.

challenge icon

Desafío

Fácil

Vamos a construir un sistema de procesamiento de pagos completo que reúna todo lo que has aprendido sobre interfaces en este capítulo. Crearás un sistema flexible donde diferentes métodos de pago pueden procesarse de manera uniforme a través de una interfaz común.

Organizarás tu código en cinco archivos:

  • Payable.java: Define la interfaz principal que todos los métodos de pago deben implementar. Debe declarar un único método pay(double amount) que devuelva un String describiendo la acción de pago.
  • CreditCard.java: Crea una clase que implemente Payable que represente pagos con tarjeta de crédito. Un CreditCard tiene un campo cardNumber (String) que almacena los últimos 4 dígitos. Incluye un constructor para inicializarlo. El método pay debe devolver: Paid [amount] using Credit Card ending in [cardNumber]
  • PayPal.java: Crea otra clase que implemente Payable para pagos de PayPal. Una cuenta de PayPal tiene un campo email (String). Incluye un constructor para inicializarlo. El método pay debe devolver: Paid [amount] via PayPal account [email]
  • PaymentProcessor.java: Crea una clase procesadora que pueda manejar cualquier objeto Payable. Debe tener un método processPayment(Payable paymentMethod, double amount) que llame al método pay del método de pago y devuelva el resultado. ¡Esto demuestra cómo las interfaces permiten el comportamiento polimórfico: el procesador no necesita conocer el tipo de pago específico!
  • Main.java: Reúne todo. Recibirás tres entradas: un número de tarjeta (últimos 4 dígitos), una dirección de correo electrónico y un monto de pago. Crea un PaymentProcessor, luego úsalo para procesar pagos tanto con una CreditCard como con una cuenta de PayPal para el monto dado. Imprime cada resultado en una línea separada.

Recibirás tres entradas: los últimos 4 dígitos del número de tarjeta (String), el correo electrónico de PayPal (String) y el monto del pago (double).

Formatea los montos con dos decimales en tu salida. ¡Observa cómo el mismo PaymentProcessor maneja tipos de pago completamente diferentes a través del poder de las interfaces!

Pruébalo tú mismo

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Leer entradas
        String cardNumber = scanner.nextLine();  // Últimos 4 dígitos
        String email = scanner.nextLine();       // Correo electrónico de PayPal
        double amount = scanner.nextDouble();    // Monto del pago
        
        // TODO: Crear un PaymentProcessor
        
        // TODO: Crear una CreditCard con el cardNumber
        
        // TODO: Crear una cuenta de PayPal con el email
        
        // TODO: Procesar el pago con CreditCard e imprimir el resultado
        
        // TODO: Procesar el pago con PayPal e imprimir el resultado
    }
}

Todas las lecciones de Programación Orientada a Objetos