Menu
Coddy logo textTech

복습 - 결제 시스템

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

challenge icon

챌린지

쉬움

이 장에서 인터페이스에 대해 배운 모든 내용을 한데 모아 완전한 결제 처리 시스템을 만들어 보겠습니다. 공통 인터페이스를 통해 다양한 결제 수단을 일관되게 처리할 수 있는 유연한 시스템을 만들게 됩니다.

코드를 다섯 개의 파일로 구성합니다:

  • Payable.java: 모든 결제 수단이 Implement해야 하는 핵심 interface를 Define합니다. 결제 동작을 설명하는 String을 반환하는 단일 method pay(double amount)를 Declare해야 합니다.
  • CreditCard.java: 신용 카드 결제를 나타내며 Payable을 Implement하는 class를 Create합니다. CreditCard에는 마지막 4자리 숫자를 저장하는 cardNumber field(String)이 있습니다. 이를 initialize하는 constructor를 포함하세요. pay method는 다음을 반환해야 합니다: Paid [amount] using Credit Card ending in [cardNumber]
  • PayPal.java: PayPal 결제를 위한 Payable을 Implement하는 또 다른 class를 Create합니다. PayPal account에는 email field(String)이 있습니다. 이를 initialize하는 constructor를 포함하세요. pay method는 다음을 반환해야 합니다: Paid [amount] via PayPal account [email]
  • PaymentProcessor.java: 어떤 Payable object든 처리할 수 있는 processor class를 Create합니다. processPayment(Payable paymentMethod, double amount) method를 포함해야 하며, 이 method는 payment method의 pay method를 호출하고 그 결과를 반환합니다. 이는 interface가 polymorphic behavior를 가능하게 하는 방식을 보여 줍니다. processor는 구체적인 결제 유형을 알 필요가 없습니다!
  • Main.java: 모든 내용을 한데 모읍니다. 세 가지 입력, 즉 카드 번호(마지막 4자리), email 주소, 결제 금액을 받습니다. PaymentProcessor를 Create한 다음 이를 사용하여 주어진 금액으로 CreditCardPayPal account를 사용한 결제를 모두 처리합니다. 각 결과를 별도의 줄에 출력하세요.

세 가지 입력을 받습니다: 카드 번호의 마지막 4자리(String), PayPal email(String), 결제 금액(double)입니다.

출력에서 금액을 소수점 이하 두 자리로 format하세요. 동일한 PaymentProcessor가 interface의 힘을 통해 완전히 다른 결제 유형을 처리하는 방식을 확인해 보세요!

직접 해보기

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로 결제 처리하고 결과 출력
    }
}

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

직접 연습해 보세요: 온라인 Java 컴파일러