Menu
Coddy logo textTech

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

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

challenge icon

Задание

Легко

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

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

  • bank_account.dart: Определите класс BankAccount, который управляет отдельными счетами и отслеживает общую статистику банка. Ваш класс должен включать:
    • Поле final String accountNumber, которое не может быть изменено после создания
    • Поле String holderName для имени владельца счета
    • Приватное поле double _balance, начинающееся с 0.0
    • Статическое поле static int totalAccounts, начинающееся с 0, для отслеживания количества существующих счетов
    • Статическое поле static double totalDeposits, начинающееся с 0.0, для отслеживания всех депозитов, сделанных в банке
    • Конструктор, который принимает accountNumber и holderName и увеличивает totalAccounts
    • Геттер balance, который возвращает текущий баланс
    • Метод deposit(double amount), который пополняет баланс только в том случае, если сумма положительна, а также увеличивает totalDeposits при успешном выполнении
    • Метод withdraw(double amount), который вычитает сумму из баланса только в том случае, если сумма положительна и не превышает текущий баланс
    • Метод displayInfo(), который выводит информацию о счете
    • Статический метод getBankStats(), который возвращает строку с общебанковской статистикой
  • main.dart: Импортируйте ваш класс банковского счета и продемонстрируйте работу системы:
    • Создайте счет с номером 'ACC001' для 'Alice'
    • Создайте счет с номером 'ACC002' для 'Bob'
    • Внесите 500.0 на счет Alice
    • Внесите 300.0 на счет Bob
    • Снимите 150.0 со счета Alice
    • Попробуйте снять 1000.0 со счета Bob (операция должна быть проигнорирована — недостаточно средств)
    • Попробуйте внести -50.0 на счет Alice (операция должна быть проигнорирована — отрицательная сумма)
    • Вызовите displayInfo() для счета Alice, затем для счета Bob
    • Выведите статистику банка, используя BankAccount.getBankStats()

Метод displayInfo() должен выводить данные в следующем формате:

Account [accountNumber] | Holder: [holderName] | Balance: $[balance]

Метод getBankStats() должен возвращать:

Bank Stats - Total Accounts: [totalAccounts] | Total Deposits: $[totalDeposits]

Ожидаемый вывод:

Account ACC001 | Holder: Alice | Balance: $350.0
Account ACC002 | Holder: Bob | Balance: $300.0
Bank Stats - Total Accounts: 2 | Total Deposits: $800.0

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

import 'bank_account.dart';

void main() {
  // TODO: Создать счет с номером 'ACC001' для 'Alice'
  
  // TODO: Создать счет с номером 'ACC002' для 'Bob'
  
  // TODO: Внести 500.0 на счет Alice
  
  // TODO: Внести 300.0 на счет Bob
  
  // TODO: Снять 150.0 со счета Alice
  
  // TODO: Попробовать снять 1000.0 со счета Bob (должно быть проигнорировано)
  
  // TODO: Попробовать внести -50.0 на счет Alice (должно быть проигнорировано)
  
  // TODO: Вызвать displayInfo() для счета Alice
  
  // TODO: Вызвать displayInfo() для счета Bob
  
  // TODO: Вывести статистику банка, используя BankAccount.getBankStats()
}

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