Skip to content

Latest commit

 

History

History
25 lines (15 loc) · 2.92 KB

README.md

File metadata and controls

25 lines (15 loc) · 2.92 KB

Task_3-TelephoneExchange-Description

Разработать набор классов для моделирования работы автоматический телефонной станции (АТС) и простейшей биллинговой системы.

Компания-оператор АТС заключает договора с клиентами, присваивает им абонентские номера, предоставляет порты для подключения абонентских терминалов и выдаёт каждому абоненту терминал (телефон).

Каждый терминал соответствует только одному номеру. Абонент может самостоятельно отключать/подключать телефон к порту станции (станция умеет отслеживать изменения состояния порта – отключен, подключен, звонок, и т.п.).

Абоненты могут звонить друг другу только пределах станции. Звонки платные, существует несколько тарифных планов для тарификации звонков, абонент может изменить тарифный план один раз в месяц.

Способ оплаты - кредитный (т.е. абоненты оплачивают разговоры предыдущего месяца до N-ного числа текущего).

Абонент может просмотреть детализированный отчет по звонкам (продолжительность/стоимость/абонент) как минимум за предыдущий месяц, выполнять фильтрацию по дате звонка, сумме, абоненту.

Что должно присутствовать:

  • ООП (объектная модель для всех сущностей c разумной декомпозицией)

  • работа с событиями (подписка, отписка, взаимодействие терминалов со станцией на основе событийной модели)

  • разработка UI не требуется

  • достаточно консольного приложения, которое должно демонстрировать типичные сценарии использования объектов чтобы моделировать деятельность АТС и биллинговой системы (соединение абонентов с учетом состояния порта, заключение договора, подключение/отключение терминала, смена тарифного плана, вывод истории звонков для каждого абонента)