Menu
Coddy logo textTech

まとめ - 決済プロセッサ

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

challenge icon

チャレンジ

簡単

ポリモーフィズムの力を実証する支払い処理システムを構築しましょう!抽象的な支払い方法クラスといくつかの具体的な実装を作成し、統一されたインターフェースを通じて異なる支払いタイプのコレクションを処理します。

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

  • payments.dart: ここで支払いの階層を定義します:
    • String accountHolder プロパティ、コンストラクタ、および抽象メソッド processPayment(double amount) を持つ抽象クラス PaymentMethod
    • PaymentMethod を継承し、追加の String cardNumber プロパティ(下4桁のみ)を持つ CreditCard クラス。その processPaymentProcessing $[amount] via Credit Card ****[cardNumber] for [accountHolder] と出力する必要があります
    • PaymentMethod を継承し、追加の String email プロパティを持つ PayPal クラス。その processPaymentProcessing $[amount] via PayPal ([email]) for [accountHolder] と出力する必要があります
    • PaymentMethod を継承し、追加の String bankName プロパティを持つ BankTransfer クラス。その processPaymentProcessing $[amount] via Bank Transfer from [bankName] for [accountHolder] と出力する必要があります
    また、以下の処理を行う関数 processAllPayments(List<PaymentMethod> methods, double amount) を作成してください:
    • Processing [count] payments of $[amount] each: と出力します(count は支払い方法の数)
    • 各支払い方法をループで処理し、processPayment(amount) を呼び出します
    • すべての支払いを処理した後、is 演算子を使用して CreditCard タイプの数をカウントし、Credit card payments: [count] と出力します
  • main.dart: 支払いファイルをインポートし、支払いプロセッサを実演します:
    • 以下を含む List<PaymentMethod> を作成します:
      • 'Alice Smith'CreditCard、カード番号は '1234'
      • 'Bob Jones'PayPal、メールは 'bob@email.com'
      • 'Carol White'BankTransfer、銀行名は 'National Bank'
      • 'David Brown'CreditCard、カード番号は '5678'
    • このリストと金額 99.99 を指定して processAllPayments を呼び出します

processAllPayments 関数が抽象的な PaymentMethod 型をどのように扱っているか、そして各支払いがその具体的な実装に従ってどのように処理されるかに注目してください。最後の型チェックは、必要に応じて特定の型を識別する方法を示しています。

期待される出力:

Processing 4 payments of $99.99 each:
Processing $99.99 via Credit Card ****1234 for Alice Smith
Processing $99.99 via PayPal (bob@email.com) for Bob Jones
Processing $99.99 via Bank Transfer from National Bank for Carol White
Processing $99.99 via Credit Card ****5678 for David Brown
Credit card payments: 2

自分で試してみよう

import 'payments.dart';

void main() {
  // TODO: 以下の内容を含む List<PaymentMethod> を作成してください:
  // - 'Alice Smith' の CreditCard、カード番号 '1234'
  // - 'Bob Jones' の PayPal、メールアドレス 'bob@email.com'
  // - 'Carol White' の BankTransfer、銀行名 'National Bank'
  // - 'David Brown' の CreditCard、カード番号 '5678'
  
  // TODO: 作成したリストと金額 99.99 を指定して processAllPayments を呼び出してください
}

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