Menu
Coddy logo textTech

まとめ - 決済システム

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

challenge icon

チャレンジ

簡単

この章で学んだインターフェースに関するすべての知識を統合した、完全な決済処理システムを構築しましょう。共通のインターフェースを通じて、異なる決済方法を一律に処理できる柔軟なシステムを作成します。

コードは5つのファイルに分けて構成します:

  • Payable.java: すべての決済方法が実装しなければならないコアインターフェースを定義します。決済アクションを説明する文字列を返す、単一のメソッド pay(double amount) を宣言する必要があります。
  • CreditCard.java: クレジットカード決済を表す、Payable を実装したクラスを作成します。CreditCard は、下4桁を保存する cardNumber フィールド(String)を持ちます。これを初期化するためのコンストラクタを含めてください。pay メソッドは、Paid [amount] using Credit Card ending in [cardNumber] を返す必要があります。
  • PayPal.java: PayPal決済用の、Payable を実装した別のクラスを作成します。PayPalアカウントは email フィールド(String)を持ちます。これを初期化するためのコンストラクタを含めてください。pay メソッドは、Paid [amount] via PayPal account [email] を返す必要があります。
  • PaymentProcessor.java: 任意の Payable オブジェクトを処理できるプロッサークラスを作成します。このクラスは、決済メソッドの pay メソッドを呼び出してその結果を返す processPayment(Payable paymentMethod, double amount) メソッドを持つ必要があります。これは、インターフェースがいかにポリモーフィックな振る舞いを可能にするかを示しています。プロッサーは具体的な決済タイプを知る必要はありません!
  • Main.java: すべてを統合します。カード番号(下4桁)、メールアドレス、および決済金額の3つの入力を受け取ります。PaymentProcessor を作成し、それを使用して、指定された金額に対して CreditCardPayPal アカウントの両方で決済を処理します。各結果を個別の行に出力してください。

入力として、カード番号の下4桁(String)、PayPalのメールアドレス(String)、および決済金額(double)の3つを受け取ります。

出力では、金額を小数点以下2桁でフォーマットしてください。インターフェースの力によって、同じ 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 で支払いを処理し、結果を表示する
    }
}

オブジェクト指向プログラミングのすべてのレッスン