018 オブジェクト指向の深化(インターフェイスと抽象クラスの利用) 003 解答例

// PaymentProcessor クラス(抽象クラス)
abstract class PaymentProcessor {
    // 支払いを処理する抽象メソッド
    abstract void processPayment(double amount);
}

// CreditCardPaymentProcessor クラス(具象クラス)
class CreditCardPaymentProcessor extends PaymentProcessor {
    // クレジットカードを認証するメソッド
    void authorizeCreditCard() {
        // クレジットカード認証の具体的な処理
    }

    // 支払いを処理するメソッドの実装
    @Override
    void processPayment(double amount) {
        authorizeCreditCard();
        // クレジットカード支払いの処理
        System.out.println("Processing credit card payment of $" + amount);
    }
}

// PayPalPaymentProcessor クラス(具象クラス)
class PayPalPaymentProcessor extends PaymentProcessor {
    // PayPal アカウントを確認するメソッド
    void verifyPayPalAccount() {
        // PayPal アカウント確認の具体的な処理
    }

    // 支払いを処理するメソッドの実装
    @Override
    void processPayment(double amount) {
        verifyPayPalAccount();
        // PayPal 支払いの処理
        System.out.println("Processing PayPal payment of $" + amount);
    }
}

この解答例では、PaymentProcessor クラスが抽象クラスであり、支払いの処理を行うための抽象メソッド processPayment を提供しています。具象クラスとして CreditCardPaymentProcessorPayPalPaymentProcessor があり、それぞれクレジットカード支払いと PayPal 支払いに特有のメソッドを提供しています。各具象クラスは抽象クラスの processPayment メソッドを実装しています。これにより、共通の支払い処理が PaymentProcessor クラスで定義され、具象クラスで特有の処理が追加されています。

「018 オブジェクト指向の深化」問題集リスト