Задача нужно правильное решение

Кофемашина.

Написать программную реализацию кофемашины.

Устройство машины состоит из 3 частей: бак для воды, бак для кофе и панель навигации (меню).

Вам необходимо создать общий (абстрактный) класс для кофемашины, от которого будут

пронаследованы все классы-экземпляры кофемашины (каждая кофемашина должна быть

описана в виде отдельного класса, пронаследованного от общего класса).

Весь функционал машины необходимо описать в виде интерфейса.

При старте программы, пользователю необходимо выбрать марку кофемашины.

В зависимости от выбранной марки, машина будет отличаться производителем, максимальной

вместимостью баков для воды и кофе.

После выбора марки, должно отобразиться меню выбранного устройства. Оно включает в себя

следующие функции:

1. Показать текущий объем воды и кофе

2. Приготовить “Американо”

3. Приготовить “Эспрессо”

4. Приготовить “Двойной эспрессо”

5. Заполнить бак с водой

6. Заполнить бак с кофе

7. Информация

8. Выключить кофемашину

При выборе первого пункта, пользователю должно отобразиться текущее количество воды и

кофе в соответствующих баках.

При выборе 2-4 пункта меню, должно “приготовиться” кофе. Рецепт кадого напитка вы можете

придумать сами. После успешного приготовления, пользователю должна отобразиться надпись

“Кофе готов”. Если ингридиентов для данного рецепта не хватает, необходимо вывести надпись

“Заполните бак с водой” - в случае нехватки воды, “Заполните бак с кофе” - в случае нехватки

кофе. Если обоих ингридиентов не хватает, вывести обе надписи.

5-6 пункт должны иммитировать полное заполнение бака с водой и кофе. Если один из баков уже

заполнен “до краев”, сообщите об этом пользователю надписью “Бак уже заполнен”.

7 пункт служит для отображения информации о производителе и объемах баков данной машины.

При выборе последнего пункта кофемашина должна “выключиться” (программа должна

завершиться).

Вывод меню организовать в циклическом режиме, т.е. программа не должна завершаться до тех

пор, пока пользователь не выберет соответствующий пункт меню.

При старте программы оба бака должны быть заполнены.