復習 - 銀行口座マネージャー
CoddyのPHPジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 20/91。
チャレンジ
簡単この章で学んだすべての class property の概念を組み合わせて、完全な bank account 管理システムを構築しましょう。account データを適切にカプセル化しながら、銀行全体の統計情報を追跡する BankAccount class を作成します。
コードを2つのファイルに整理します。
BankAccount.php:個々の account を管理し、銀行全体の統計情報を追跡するBankAccountclass を Define します。class には次の要素を含めます。100に設定された constantMINIMUM_BALANCE- 作成後に変更できない public readonly property
string $accountId - account holder の名前を格納する public property
$holderName - account の balance を保護する private property
$balance 0から始まる private static property$totalAccounts0から始まる private static property$totalDeposits
getBalance():current balance を返すdeposit($amount):balance に金額を加え、total deposits tracker を更新し、新しい balance を返すwithdraw($amount):残りの balance が minimum balance constant 以上になる場合にのみ balance から金額を引き、新しい balance を返す(withdrawal が allowed でない場合は変更されていない balance を返す)- static method
getTotalAccounts():作成された account の合計数を返す - static method
getTotalDeposits():すべての account で行われた deposits の合計を返す
main.php:BankAccount class ファイルを Include します。4つの inputs を受け取ります:first account ID、first holder name、second account ID、second holder name です。initial balance がどちらも500の2つの accounts を Create します。 first account では、200を deposit し、その後100を withdraw します。account ID、holder name、balance を次の形式で1行に Print します:"[accountId]: [holderName] - $[balance]"second account では、300を deposit し、その後800の withdraw を attempt します(minimum balance のため失敗します)。この account についても同じ形式で Print します。 最後に、total accounts と total deposits を別々の行に Print します。"Total Accounts: [count]""Total Deposits: $[amount]"
この challenge では、変更できない identifier のための readonly properties、protected data のための getter methods と private properties、固定ルールのための constants、そして銀行全体の統計情報のための static properties と static methods を組み合わせます。
自分で試してみよう
<?php
require_once 'BankAccount.php';
// 入力を読み取る
$firstAccountId = trim(fgets(STDIN));
$firstHolderName = trim(fgets(STDIN));
$secondAccountId = trim(fgets(STDIN));
$secondHolderName = trim(fgets(STDIN));
// TODO: 初期残高500で最初の口座を作成する
// TODO: 初期残高500で2番目の口座を作成する
// TODO: 最初の口座: 200を入金し、その後100を出金する
// TODO: 最初の口座情報を出力: "[accountId]: [holderName] - $[balance]"
// TODO: 2番目の口座: 300を入金し、その後800の出金を試みる
// TODO: 2番目の口座情報を出力: "[accountId]: [holderName] - $[balance]"
// TODO: Print "Total Accounts: [count]"
// TODO: Print "Total Deposits: $[amount]"
?>オブジェクト指向プログラミングのすべてのレッスン
3クラスプロパティ
インスタンスプロパティとStaticプロパティクラスの定数StaticメソッドとプロパティPrivateプロパティとProtectedプロパティReadonlyプロパティ(PHP 8.1)復習 - 銀行口座マネージャー自分で練習してみよう: PHPオンラインコンパイラ