• ,

task.task26.task2613 Задание 8

CashMachine (8)

Пора привести в порядок наш main, уж очень там всего много, чего не должно быть.

1. Перенеси логику из main в DepositCommand и InfoCommand.

Проверим, что там стало с main? Цикл, в котором спрашиваем операцию у пользователя, а потом вызываем метод у CommandExecutor.

И так до бесконечности… надо бы придумать условие выхода из цикла.

Исправь цикл, чтоб он стал do-while. Условие выхода — операция EXIT.

2. Давай запустим прогу и пополним счет на EUR 100 2 и USD 20 6, и посмотрим на INFO.

Ничего не понятно, т.к. создались 2 манипулятора: первый для EUR, второй для USD.

Давай улучшим логику InfoCommand. Надо вывести баланс по каждому манипулятору.

2.1. В классе CurrencyManipulatorFactory создай статический метод getAllCurrencyManipulators(), который вернет Collection всех манипуляторов.

У тебя все манипуляторы хранятся в карте, не так ли? Если нет, то отрефактори.

2.2. В InfoCommand в цикле выведите [код валюты — общая сумма денег для выбранной валюты].

Запустим прогу и пополним счет на EUR 100 2 и USD 20 6, и посмотрим на INFO.

Все работает правильно?

EUR — 200

USD — 120

Отлично!

3. Запустим прогу и сразу первой операцией попросим INFO. Ничего не вывело? Непорядок.

Добавь в манипулятор метод boolean hasMoney(), который будет показывать, добавлены ли какие-то банкноты или нет.

4. В InfoCommand используй метод п.3. и выведите фразу «No money available.«, если нет денег в банкомате.