undefined

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

Java Collections
9 уровень , 15 лекция
Открыта

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

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

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

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

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

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

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

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

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

undefined
10
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (1)
Давай напишем эмулятор работы банкомата. Операции, которые будем поддерживать, следующие: поместить деньги, снять деньги, показать состояние банкомата. Также будем поддерживать мультивалютность. Купюрами будем оперировать теми, которые поместим в банкомат. Если для снятия требуемой суммы будет недос
undefined
10
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (2)
1. Создай в ConsoleHelper два статических метода: 1.1 writeMessage(String message), который будет писать в консоль наше сообщение. 1.2 String readString(), который будет считывать с консоли строку и возвращать ее. Если возникнет какое-то исключение при работе с консолью, то перехватим его и не будем
undefined
20
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (3)
1. Создай класс CurrencyManipulator, который будет хранить всю информацию про выбранную валюту. Класс должен содержать: 1.1 String currencyCode - код валюты, например, USD. Состоит из трех букв. 1.2 Map<Integer, Integer> denominations - это Map<номинал, количество>. Чтобы можно было посмотреть, к ка
undefined
40
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (4)
1. Выберем операцию, с которой мы сможем начать. Подумаем. В банкомате еще денег нет, поэтому INFO и WITHDRAW протестить не получится. Начнем с операции DEPOSIT - поместить деньги. Считаем с консоли код валюты, потом считаем номинал и количество банкнот, а потом добавим их в манипулятор. 2. Чтобы с
undefined
20
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (5)
1.В предыдущем таске мы реализовали основную логику операции DEPOSIT. Но посмотреть результат так и не удалось. Поэтому создай в манипуляторе метод int getTotalAmount(), который посчитает общую сумму денег для выбранной валюты. 2. Добавь вызов метода getTotalAmount() в метод main. Всё работает верн
undefined
20
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (6)
Чтобы отрефакторить код в соответствии с паттерном Command, нужно выделить в коде несколько логических блоков кода. У нас пока два таких блока: 1) код операции DEPOSIT, 2) код операции INFO. Они захардкожены в методе main. Нужно от этого избавиться. Нужно сделать так, чтобы пользователь сам выбирал,
undefined
20
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (7)
Возвращаемся к паттерну Command. 1. Создай пакет command, в нем будут все классы, относящиеся к этой логике. Подумай над модификатором доступа для всех классов в этом пакете. 2. Создай интерфейс Command с методом void execute(). 3. Для каждой операции создай класс-команду, удовлетворяющую паттерн
undefined
40
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (8)
Пора привести в порядок наш main, уж очень там всего много, чего не должно быть. 1. Перенеси логику из main в DepositCommand и InfoCommand. Проверим, что там стало с main? Цикл, в котором спрашиваем операцию у пользователя, а потом вызываем метод у CommandExecutor. И так до бесконечности... надо бы
undefined
40
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (9)
Сегодня мы займемся командой ExitCommand. 1. Реализуй следующую логику в команде ExitCommand: 1.1. Спросить, действительно ли пользователь хочет выйти - варианты <y,n>. 1.2. Если пользователь подтвердит свои намерения, то попрощаться с ним. 1.3. Если пользователь не подтвердит свои намерения, то не
undefined
40
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (10)
Сегодня мы займемся командой WithdrawCommand - это самая сложная операция. 1. Реализуй следующий алгоритм для команды WithdrawCommand: 1.1. Считать код валюты (метод уже есть). 1.2. Получить манипулятор для этой валюты. 1.3. Пока пользователь не введет корректные данные выполнять: 1.3.1. Попросить
undefined
40
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (11)
Поздравляю, ты реализовал WithdrawCommand! Основной функционал завершен. Дальше можно допиливать и наводить красоту. Реализуем одну плюшку. Можно и без нее, но с ней - красивее. Это верификация кредитной карты пользователя. Нет, никакого API сторонних либ не будет. Только консольная обработка. Итак
undefined
40
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (12)
В задании 11 мы захардкодили номер кредитной карточки с пином, с которыми разрешим работать нашему банкомату. Но юзеров может быть много. Не будем же мы их всех хардкодить! Если понадобится добавить еще одного пользователя, то придется передеплоить наше приложение. Есть решение этой проблемы. Смотр
undefined
40
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (13)
Ты уже разобрался с ResourceBundle - это круто. Теперь мы сможем прикрутить локализацию, т.е. поддержку нескольких языков. 1. В DepositCommand, ExitCommand, InfoCommand добавь поле private ResourceBundle res, которое инициализируй соответствующим ресурсом. Для DepositCommand ресурс deposit_en.prope
undefined
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. Для этого
undefined
10
Задача
Java Collections,  9 уровень,  15 лекция
Недоступна
CashMachine (15)
1. В CashMachine создай константу - путь к ресурсам. public static final String RESOURCE_PATH; Отрефакторь загрузку всех ResourceBundle с учетом RESOURCE_PATH. 2. В классе CashMachine не должно быть инициализации ResourceBundle. Вынеси из CashMachine сообщение о выходе в ConsoleHelper, назови метод
Комментарии (52)
Чтобы просмотреть все комментарии или оставить свой,
перейдите в полную версию
Afac 36 уровень, Москва
12 февраля 2021
2436 Отличная задача. Спасибо! Побольше бы таких. Сага о потерянных ресурсах: Все ресурсы подгружаются в папку с неправильным названием. Их нужно скопипастить в resourses. Папку с неправильным названием удаляем.
wan-derer.ru 40 уровень, Москва
8 февраля 2021
Часть 12. В приложении пакета, а значит и файла с ресурсами не появилось. Кто-нибудь, выложите этот файл чтобы была понятна его структура!
Sergey Ponomarev 41 уровень, Краснодар
8 января 2021
2392й
Михаил Евреинов 41 уровень, Ольденбург
18 декабря 2020
2370й
Vlad 41 уровень, Львов
16 декабря 2020
За выполнение всех заданий можно получить 430 ЧМ
Хорс 41 уровень, Харьков
15 октября 2020
Делал без жадного алгоритма и без рекурсий. Не знаю, то ли ребята допилили валика, то ли мне повезло, но сдавал всё без проблем, последние 5 задач вообще удавалось с 1-го раза и без подсказок.
Владислав 41 уровень, Санкт-Петербург
5 августа 2020
Задача - топ! Дам один небольшой совет. Если просят что-то сделать, то надо это и сделать, а не городить что-то другое по той причине, что другие источники будут говорить о том, что так не делается. Это к теме о 10 задаче.
Евгений 41 уровень, Нижний Новгород Expert
31 июля 2020
В принципе не особо сложная задачка. Но жадный алгоритм как-то подмочил интерес к ней (я там накосячил и очень долго его решал).
Роман Тарнакин 35 уровень, Москва
30 июля 2020
1234 5678 9123 4567 8912 3648 3453 5353 3656 4674 4672 2589 2934 2234 8239 245345 345345 353 345 345345 345
Koval 37 уровень, Брест
23 июля 2020
14 задача убила все хорошее в этой задаче