Menu
Coddy logo textTech

복습 - 결제 시스템

Coddy Java 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 87개 중 40번째.

challenge icon

챌린지

쉬움

이 장에서 인터페이스에 대해 배운 모든 내용을 하나로 묶는 완전한 결제 처리 시스템을 구축해 보겠습니다. 공통 인터페이스를 통해 서로 다른 결제 수단을 일관되게 처리할 수 있는 유연한 시스템을 만들 것입니다.

코드는 다음 다섯 개의 파일로 구성됩니다:

  • Payable.java: 모든 결제 수단이 반드시 구현해야 하는 핵심 인터페이스를 정의합니다. 결제 동작을 설명하는 String을 반환하는 단일 메서드 pay(double amount)를 선언해야 합니다.
  • CreditCard.java: 신용카드 결제를 나타내며 Payable을 구현하는 클래스를 생성합니다. CreditCard는 마지막 4자리를 저장하는 cardNumber 필드(String)를 가집니다. 이를 초기화하는 생성자를 포함하세요. pay 메서드는 "Paid %.2f using Credit Card ending in %s" 형식의 문자열을 반환해야 합니다.
  • PayPal.java: PayPal 결제를 위해 Payable을 구현하는 또 다른 클래스를 생성합니다. PayPal 계정은 email 필드(String)를 가집니다. 이를 초기화하는 생성자를 포함하세요. pay 메서드는 "Paid %.2f via PayPal account %s" 형식의 문자열을 반환해야 합니다.
  • PaymentProcessor.java: 모든 Payable 객체를 처리할 수 있는 프로세서 클래스를 생성합니다. 이 클래스는 결제 수단의 pay 메서드를 호출하고 그 결과를 반환하는 processPayment(Payable paymentMethod, double amount) 메서드를 가져야 합니다. 이는 인터페이스가 어떻게 다형성 동작을 가능하게 하는지 보여줍니다. 프로세서는 구체적인 결제 유형을 알 필요가 없습니다!
  • Main.java: 모든 것을 하나로 합칩니다. 카드 번호(마지막 4자리), 이메일 주소, 결제 금액이라는 세 가지 입력을 받게 됩니다. PaymentProcessor를 생성한 다음, 주어진 금액에 대해 CreditCardPayPal 계정 모두로 결제를 처리하는 데 사용하세요. 각 결과를 별도의 줄에 출력합니다.

카드 번호의 마지막 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: cardNumber를 사용하여 CreditCard 생성
        
        // TODO: email을 사용하여 PayPal 계정 생성
        
        // TODO: CreditCard로 결제를 처리하고 결과 출력
        
        // TODO: PayPal로 결제를 처리하고 결과 출력
    }
}

객체 지향 프로그래밍의 모든 레슨