Система имеет 3 типа счетов:
- Обычный - доступно пополнение и снятие без комиссии
- Дебетовый - доступно пополнение и снятие с комиссией
- Депозитный - доступно пополнение и снятие не менее чем через месяц после последнего пополнения
Со всеми счетами можно производить следующие операции:
- Пополнять
- Снимать средства
- Получать баланс счёта
Этот список будет дополняться по мере разработки
Система реализована на языке программирования PHP, выполняется в консольной среде.
Программа разделена на компоненты:
index.php
- основной скрипт работы программы, собирающий все компоненты воедино и содержащий бизнес-логикуFiniteStateMachine
- машина состояний, используется для различных действий для одной и той же команды при разных состояниях программы. Также включает хранилище данных, используемое в момент выполнения программы для общения между компонентамиDispatcher
- регистрирует различные обработчики, выполняет ту команду из зарегистрированных, которая подходит под все фильтры и совпадает с введенноё пользователемCommand
- хранит исходный текст, введённый пользователем и разбитую его версию, для передачи в функции логикиBankAccountFactory
- создаёт необходимый счёт исходя из зарегистрированных вариантов и ввода пользователяexceptions
- хранит все исключения, которые могут возникнуть при работе с программойaccounts
- хранит все реализованные типы счетов, наследуемые отBankAccount