Menu
Coddy logo textTech

まとめ:銀行口座マネージャー

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

challenge icon

チャレンジ

簡単

この章で学んだすべてのクラスプロパティの概念を統合した、完全な銀行口座管理システムを構築しましょう。口座データを適切にカプセル化しながら、銀行全体の統計を追跡する BankAccount クラスを作成します。

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

  • BankAccount.php — 個々の口座を管理し、銀行全体の統計を追跡する BankAccount クラスを定義します。クラスには以下を含める必要があります:
    • 100 に設定された定数 MINIMUM_BALANCE
    • 作成後に変更できないパブリックな読み取り専用プロパティ string $accountId
    • 口座名義人のためのパブリックプロパティ $holderName
    • 口座残高を保護するためのプライベートプロパティ $balance
    • 0 から始まるプライベートな静的プロパティ $totalAccounts
    • 0 から始まるプライベートな静的プロパティ $totalDeposits
    コンストラクタは、口座ID、名義人名、および初期残高を受け取る必要があります。すべてのインスタンスプロパティを設定し、総口座数をインクリメントします。 以下のメソッドを含めてください:
    • getBalance() — 現在の残高を返します
    • deposit($amount) — 残高に加算し、総預金トラッカーを更新して、新しい残高を返します
    • withdraw($amount) — 残りの残高が最小残高定数以上に保たれる場合にのみ残高から減算し、新しい残高(または引き出しが許可されない場合は変更されていない残高)を返します
    • 静的メソッド getTotalAccounts() — 作成された口座の総数を返します
    • 静的メソッド getTotalDeposits() — すべての口座で行われた預金の合計額を返します
  • main.php — BankAccount クラスファイルをインクルードします。4つの入力を受け取ります:1つ目の口座ID、1つ目の名義人名、2つ目の口座ID、2つ目の名義人名です。両方の口座を初期残高 500 で作成します。 1つ目の口座:200 を預け入れ、次に 100 を引き出します。口座ID、名義人名、残高を "[accountId]: [holderName] - $[balance]" の形式で1行に出力します。 2つ目の口座:300 を預け入れ、次に 800 の引き出しを試みます(これは最小残高の制限により失敗するはずです)。この口座についても同じ形式で出力します。 最後に、総口座数と総預金額を別々の行に出力します:
    • "Total Accounts: [count]"
    • "Total Deposits: $[amount]"

このチャレンジでは、不変の識別子のための読み取り専用プロパティ、保護されたデータのためのゲッターメソッドを持つプライベートプロパティ、固定ルールのための定数、そして銀行全体の統計のための静的プロパティと静的メソッドを組み合わせています。

自分で試してみよう

<?php

require_once 'BankAccount.php';

// 入力を読み込む
$firstAccountId = trim(fgets(STDIN));
$firstHolderName = trim(fgets(STDIN));
$secondAccountId = trim(fgets(STDIN));
$secondHolderName = trim(fgets(STDIN));

// TODO: 初期残高500で1つ目の口座を作成する

// TODO: 初期残高500で2つ目の口座を作成する

// TODO: 1つ目の口座: 200を入金し、その後100を出金する

// TODO: 1つ目の口座情報を表示する: "[accountId]: [holderName] - $[balance]"

// TODO: 2つ目の口座: 300を入金し、その後800の出金を試みる

// TODO: 2つ目の口座情報を表示する: "[accountId]: [holderName] - $[balance]"

// TODO: "Total Accounts: [count]" を表示する

// TODO: "Total Deposits: $[amount]" を表示する

?>

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