まとめ - 決済システム
CoddyのJavaジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 40/87。
チャレンジ
簡単この章で学んだ interface のすべてを組み合わせて、完全な支払い処理システムを構築しましょう。共通の interface を通じて、さまざまな payment method を一様に処理できる柔軟なシステムを作成します。
コードを5つのファイルに整理します。
Payable.java: すべての payment method が Implement する必要のある中核 interface を Define します。支払いアクションを説明する String を返す、単一の methodpay(double amount)を declare します。CreditCard.java: クレジットカードによる支払いを表す、Payableを Implement する class を Create します。CreditCard には、Last 4桁を保存するcardNumberfield(String)があります。これを initialize する constructor を含めます。paymethod は次を返す必要があります:Paid [amount] using Credit Card ending in [cardNumber]PayPal.java: PayPal による支払い用に、Payableを Implement する別の class を Create します。PayPal account にはemailfield(String)があります。これを initialize する constructor を含めます。paymethod は次を返す必要があります:Paid [amount] via PayPal account [email]PaymentProcessor.java: 任意のPayableobject を処理できる processor class を Create します。processPayment(Payable paymentMethod, double amount)という method を持たせ、payment method のpaymethod を呼び出して結果を返します。これは、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で支払いを処理し、結果を出力する
}
}
オブジェクト指向プログラミングのすべてのレッスン
4継承
継承の基本 (extends)super キーワードメソッドのオーバーライド (@Override)コンストラクタチェーンObject クラス単一継承と多段階継承なぜ多重継承ができないのかまとめ:従業員の階層構造6インターフェースと抽象クラス
インターフェース入門インターフェースの実装複数インターフェースの実装インターフェースのデフォルトと静的メソッド抽象クラス vs インターフェース関数型インターフェースまとめ - 決済システム自分で練習してみよう: Javaオンラインコンパイラ