まとめ - 決済システム
CoddyのJavaジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 40/87。
チャレンジ
簡単この章で学んだインターフェースに関するすべての知識を統合した、完全な決済処理システムを構築しましょう。共通のインターフェースを通じて、異なる決済方法を一律に処理できる柔軟なシステムを作成します。
コードは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を作成し、それを使用して、指定された金額に対してCreditCardとPayPalアカウントの両方で決済を処理します。各結果を個別の行に出力してください。
入力として、カード番号の下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 で支払いを処理し、結果を表示する
}
}
オブジェクト指向プログラミングのすべてのレッスン
4継承
継承の基本 (extends)super キーワードメソッドのオーバーライド (@Override)コンストラクタチェーンObject クラス単一継承と多段階継承なぜ多重継承ができないのかまとめ:従業員の階層構造6インターフェースと抽象クラス
インターフェース入門インターフェースの実装複数インターフェースの実装インターフェースのデフォルトと静的メソッド抽象クラス vs インターフェース関数型インターフェースまとめ - 決済システム