Menu
Coddy logo textTech

復習 - 銀行口座マネージャー

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

challenge icon

チャレンジ

簡単

この章で学んだすべての class property の概念を組み合わせて、完全な bank account 管理システムを構築しましょう。account データを適切にカプセル化しながら、銀行全体の統計情報を追跡する BankAccount class を作成します。

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

  • BankAccount.php:個々の account を管理し、銀行全体の統計情報を追跡する BankAccount class を Define します。class には次の要素を含めます。
    • 100 に設定された constant MINIMUM_BALANCE
    • 作成後に変更できない public readonly property string $accountId
    • account holder の名前を格納する public property $holderName
    • account の balance を保護する private property $balance
    • 0 から始まる private static property $totalAccounts
    • 0 から始まる private static property $totalDeposits
    constructor は account ID、holder name、initial balance を受け取る必要があります。すべての instance properties を設定し、total accounts の count を increment します。 次の methods を含めます。
    • 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]"

?>

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

自分で練習してみよう: PHPオンラインコンパイラ