Лабораторный практикум №2
Проект AutomataDemo
Разработать класс Automata (автомат), являющийся упрощённой моделью автомата по продаже горячих напитков.
- Изучить принцип использования автомата по продаже горячих напитков (чай, кофе, молоко и т.д.) и описать его работу в виде диаграммы состояний.
- Создать перечислимый тип STATES для задания состояний автомата
- Создать класс Automata, включить в него переменные:
- cash - для хранения текущей суммы;
- menu - строки с названиями напитков (может подгружаться из файла);
- prices - цены напитков (соответствует массиву menu);
- state - текущее состояние автомата;
В качестве основной структуры хранения данных в автомате лучше использовать ArrayList.
Включить в класс Automata следующие методы:
- конструктор
- on() - включение автомата;
- off() - выключение автомата;
- coin() - занесение денег на счёт пользователем;
- getMenu() - отображение меню с напитками и ценами для пользователя;
- getState() - отображение текущего состояния для пользователя;
- choice() - выбор напитка пользователем;
- check() - проверка наличия необходимой суммы;
- cancel() - отмена сеанса обслуживания пользователем;
- cook() - имитация процесса приготовления напитка;
- finish() - завершение обслуживания пользователя.
Список методов может быть изменён по желанию разработчика.
Работа автомата должна предполагать отсутствие привязки к устройству ввода/вывода, то есть внутри класса не должно быть обращения к System.out.
Работа каждого метода должна начинаться с проверки текущего состояния автомата. Если состояние подходит, то выполняется предусмотренный алгоритм. Если состояние не подходит, то автомат игнорирует действие.
Предлагается следующая диаграмма состояний (state diagram), отражающая смену состояний и вызовы методов класса
Написать демонстрационную программу работы автомата в виде сценария
Демонстрационный сценарий предполагает имитацию сеанса с пользователем. Например, это могут быть следующие шаги:
- включение автомата
- занесение некоторой суммы на счет
- выбор пункта меню
- изучение состояния автомата после приготовления/отмены