Menu
Coddy logo textTech

Итоги — Менеджер банковского счета

Часть раздела Объектно-ориентированное программирование путешествия по PHP на Coddy — урок 20 из 91.

challenge icon

Задание

Легко

Давайте создадим полноценную систему управления банковскими счетами, которая объединит все концепции свойств классов, изученные вами в этой главе. Вы создадите класс BankAccount, который должным образом инкапсулирует данные счета и одновременно отслеживает статистику по всему банку.

Вы организуете свой код в двух файлах:

  • BankAccount.php — Определите класс BankAccount, который управляет отдельными счетами и отслеживает общую статистику банка. Класс должен включать:
    • Константу MINIMUM_BALANCE, установленную в 100
    • Публичное свойство только для чтения string $accountId, которое не может быть изменено после создания
    • Публичное свойство $holderName для имени владельца счета
    • Приватное свойство $balance для защиты баланса счета
    • Приватное статическое свойство $totalAccounts, начинающееся с 0
    • Приватное статическое свойство $totalDeposits, начинающееся с 0
    Конструктор должен принимать ID счета, имя владельца и начальный баланс. Он должен устанавливать все свойства экземпляра и увеличивать счетчик общего количества счетов. Включите следующие методы:
    • getBalance() — возвращает текущий баланс
    • deposit($amount) — добавляет сумму к балансу и обновляет трекер общих депозитов, возвращает новый баланс
    • withdraw($amount) — вычитает сумму из баланса только в том случае, если остаток на балансе остается равным или превышает константу минимального баланса, возвращает новый баланс (или неизмененный баланс, если снятие средств запрещено)
    • Статический метод getTotalAccounts() — возвращает общее количество созданных счетов
    • Статический метод getTotalDeposits() — возвращает сумму всех депозитов, сделанных на всех счетах
  • main.php — Подключите файл класса BankAccount. Вы получите четыре входных значения: ID первого счета, имя первого владельца, ID второго счета и имя второго владельца. Создайте два счета, оба с начальным балансом 500. Для первого счета: внесите депозит 200, затем снимите 100. Выведите ID счета, имя владельца и баланс в одной строке в формате: "[accountId]: [holderName] - $[balance]" Для второго счета: внесите депозит 300, затем попытайтесь снять 800 (это должно не удастся из-за минимального баланса). Выведите информацию об этом счете в том же формате. Наконец, выведите общее количество счетов и общую сумму депозитов на отдельных строках:
    • "Total Accounts: [count]"
    • "Total Deposits: $[amount]"

Эта задача сочетает в себе свойства readonly для неизменяемых идентификаторов, приватные свойства с методами-геттерами для защищенных данных, константы для фиксированных правил и статические свойства со статическими методами для статистики по всему банку.

Попробуйте сами

<?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

// TODO: Первый аккаунт: внести 200, затем снять 100

// TODO: Вывести информацию о первом аккаунте: "[accountId]: [holderName] - $[balance]"

// TODO: Второй аккаунт: внести 300, затем попытаться снять 800

// TODO: Вывести информацию о втором аккаунте: "[accountId]: [holderName] - $[balance]"

// TODO: Вывести "Total Accounts: [count]"

// TODO: Вывести "Total Deposits: $[amount]"

?>

Все уроки раздела Объектно-ориентированное программирование