まとめ:銀行口座マネージャー
CoddyのPHPジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 20/91。
チャレンジ
簡単この章で学んだすべてのクラスプロパティの概念を統合した、完全な銀行口座管理システムを構築しましょう。口座データを適切にカプセル化しながら、銀行全体の統計を追跡する BankAccount クラスを作成します。
コードは2つのファイルに分けて構成します:
BankAccount.php— 個々の口座を管理し、銀行全体の統計を追跡するBankAccountクラスを定義します。クラスには以下を含める必要があります:100に設定された定数MINIMUM_BALANCE- 作成後に変更できないパブリックな読み取り専用プロパティ
string $accountId - 口座名義人のためのパブリックプロパティ
$holderName - 口座残高を保護するためのプライベートプロパティ
$balance 0から始まるプライベートな静的プロパティ$totalAccounts0から始まるプライベートな静的プロパティ$totalDeposits
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]" を表示する
?>オブジェクト指向プログラミングのすべてのレッスン
3クラスのプロパティ
インスタンスプロパティと静的プロパティクラス定数静的メソッドとプロパティPrivate と Protected プロパティReadonly プロパティ (PHP 8.1)まとめ:銀行口座マネージャー