Menu
Coddy logo textTech

まとめ - 決済システム

CoddyのJavaジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 40/87。

challenge icon

チャレンジ

簡単

この章で学んだ interface のすべてを組み合わせて、完全な支払い処理システムを構築しましょう。共通の interface を通じて、さまざまな payment method を一様に処理できる柔軟なシステムを作成します。

コードを5つのファイルに整理します。

  • Payable.java: すべての payment method が Implement する必要のある中核 interface を Define します。支払いアクションを説明する String を返す、単一の method pay(double amount) を declare します。
  • CreditCard.java: クレジットカードによる支払いを表す、Payable を Implement する class を Create します。CreditCard には、Last 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 を持たせ、payment method の pay method を呼び出して結果を返します。これは、interface によって polymorphic behavior が可能になることを示しています。processor は具体的な payment type を知る必要がありません。
  • Main.java: すべてを組み合わせます。3つの inputs、つまり card number(Last 4桁)、email address、payment amount を受け取ります。PaymentProcessor を Create し、それを使って、指定された amount に対する CreditCard と PayPal account の両方の payment を処理します。それぞれの結果を別々の行に出力します。

3つの inputs、つまり card number の last 4桁(String)、PayPal email(String)、および payment amount(double)を受け取ります。

出力では amount を小数点以下2桁で format します。同じ PaymentProcessor が、interface の力によってまったく異なる payment type を処理している点に注目してください。

自分で試してみよう

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オンラインコンパイラ