— Привет, Амиго!

— Здравия желаю, капитан Бобров.

— Хорошо учишься. Молодец, боец!

У тебя сегодня новая секретная миссия — осваивать финансы.

— Ура!!! Я уже придумал, на что я их потрачу!!!

— Так, не расслабляться! Осваивать финансы – это писать новую секретную
программу «Банкомат».

Большая задача: Пишем ПО банкомата - 1

Отправляйся к нашему секретному агенту Intellij IDEA, там получишь все инструкции.

— Будет сделано, товарищ капитан!

10
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (1)
Давай напишем эмулятор работы банкомата. Операции, которые будем поддерживать, следующие: поместить деньги, снять деньги, показать состояние банкомата. Также будем поддерживать мультивалютность. Купюрами будем оперировать теми, которые поместим в банкомат. Если для снятия требуемой суммы будет недос
10
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (2)
1. Создай в ConsoleHelper два статических метода: 1.1 writeMessage(String message), который будет писать в консоль наше сообщение. 1.2 String readString(), который будет считывать с консоли строку и возвращать ее. Если возникнет какое-то исключение при работе с консолью, то перехватим его и не будем
20
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (3)
1. Создай класс CurrencyManipulator, который будет хранить всю информацию про выбранную валюту. Класс должен содержать: 1.1 String currencyCode - код валюты, например, USD. Состоит из трех букв. 1.2 Map<Integer, Integer> denominations - это Map<номинал, количество>. Чтобы можно было посмотреть, к ка
40
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (4)
1. Выберем операцию, с которой мы сможем начать. Подумаем. В банкомате еще денег нет, поэтому INFO и WITHDRAW протестить не получится. Начнем с операции DEPOSIT - поместить деньги. Считаем с консоли код валюты, потом считаем номинал и количество банкнот, а потом добавим их в манипулятор. 2. Чтобы с
20
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (5)
1.В предыдущем таске мы реализовали основную логику операции DEPOSIT. Но посмотреть результат так и не удалось. Поэтому создай в манипуляторе метод int getTotalAmount(), который посчитает общую сумму денег для выбранной валюты. 2. Добавь вызов метода getTotalAmount() в метод main. Всё работает верн
20
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (6)
Чтобы отрефакторить код в соответствии с паттерном Command, нужно выделить в коде несколько логических блоков кода. У нас пока два таких блока: 1) код операции DEPOSIT, 2) код операции INFO. Они захардкожены в методе main. Нужно от этого избавиться. Нужно сделать так, чтобы пользователь сам выбирал,
20
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (7)
Возвращаемся к паттерну Command. 1. Создай пакет command, в нем будут все классы, относящиеся к этой логике. Подумай над модификатором доступа для всех классов в этом пакете. 2. Создай интерфейс Command с методом void execute(). 3. Для каждой операции создай класс-команду, удовлетворяющую паттерн
40
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (8)
Пора привести в порядок наш main, уж очень там всего много, чего не должно быть. 1. Перенеси логику из main в DepositCommand и InfoCommand. Проверим, что там стало с main? Цикл, в котором спрашиваем операцию у пользователя, а потом вызываем метод у CommandExecutor. И так до бесконечности... надо бы
40
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (9)
Сегодня мы займемся командой ExitCommand. 1. Реализуй следующую логику в команде ExitCommand: 1.1. Спросить, действительно ли пользователь хочет выйти - варианты <y,n>. 1.2. Если пользователь подтвердит свои намерения, то попрощаться с ним. 1.3. Если пользователь не подтвердит свои намерения, то не
40
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (10)
Сегодня мы займемся командой WithdrawCommand - это самая сложная операция. 1. Реализуй следующий алгоритм для команды WithdrawCommand: 1.1. Считать код валюты (метод уже есть). 1.2. Получить манипулятор для этой валюты. 1.3. Пока пользователь не введет корректные данные выполнять: 1.3.1. Попросить
40
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (11)
Поздравляю, ты реализовал WithdrawCommand! Основной функционал завершен. Дальше можно допиливать и наводить красоту. Реализуем одну плюшку. Можно и без нее, но с ней - красивее. Это верификация кредитной карты пользователя. Нет, никакого API сторонних либ не будет. Только консольная обработка. Итак
40
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (12)
В задании 11 мы захардкодили номер кредитной карточки с пином, с которыми разрешим работать нашему банкомату. Но юзеров может быть много. Не будем же мы их всех хардкодить! Если понадобится добавить еще одного пользователя, то придется передеплоить наше приложение. Есть решение этой проблемы. Смотр
40
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (13)
Ты уже разобрался с ResourceBundle - это круто. Теперь мы сможем прикрутить локализацию, т.е. поддержку нескольких языков. 1. В DepositCommand, ExitCommand, InfoCommand добавь поле private ResourceBundle res, которое инициализируй соответствующим ресурсом. Для DepositCommand ресурс deposit_en.prope
40
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (14)
1. В LoginCommand, WithdrawCommand добавь поле private ResourceBundle res, которое инициализируй соответствующим ресурсом. Для LoginCommand ресурс login_en.properties. Для WithdrawCommand ресурс withdraw_en.properties. 2. Для ресурса common_en.properties замени все строки в ConsoleHelper. Для этого
10
Задача
Java Collections, 9 уровень, 15 лекция
Недоступна
CashMachine (15)
1. В CashMachine создай константу - путь к ресурсам. public static final String RESOURCE_PATH; Отрефакторь загрузку всех ResourceBundle с учетом RESOURCE_PATH. 2. В классе CashMachine не должно быть инициализации ResourceBundle. Вынеси из CashMachine сообщение о выходе в ConsoleHelper, назови метод