Хелпикс

Главная

Контакты

Случайная статья





Задание на практическую работу №29



Задание на практическую работу №29

В процессе написания тестовых заданий ознакомьтесь с принципами создания динамических структур в Java, механизмом исключений и концепцией интерфейсов.

Замечание: в процессе выполнения задания НЕЛЬЗЯ пользоваться утилитными классами Java (за исключением java.util.HashMap).

1.Создайте класс Drink – напитка. Класс описывает сущность – напиток и характеризуется следующими свойствами - стоимостью, названием и описанием. Класс должен быть определен как неизменяемый (Immutable class). Создайте класс Dish , описывает напитки
2. Создайте интерфейс Item – для работы с позициями заказа. Интерфейс определяет 3 метода: возвращает стоимость, возвращает название., возвращает описание позиции. Классы Drink и Dish, которые должны реализовывать этот интерфейс.                                                         3. Создайте класс InternetOrder, который моделирует сущность интернет заказ в ресторане или кафе. Класс основан на циклическом двусвязном списке с выделенной головой и может хранить как блюда, так и напитки. Внимание: список реализуется самостоятельно!
Конструкторы: не принимающий параметров (для списка создается только головной элемент, сам список пуст), принимающий массив позиций заказа (создаем список из N позиций). Класс InternetOrder моделирует сущность ""нтернет-заказ"" в ресторане или кафе. Класс основан на циклическом двусвязном списке с выделенной головой и может хранить как блюда, так и напитки. Внимание: список вы реализуется самостоятельно!
Класс Dish сделайте неизменяемым (аналогично Drink). Класс Order должен хранить (удалять и добавлять) не только экземпляры класса Dish, но и Drink (для этого разработайте классы Order и TablesOrderManager). Методы:
−добавляющий позицию в заказ (принимает ссылку типа Item). Пока этот метод возвращает истину после выполнения операции добавления элемента.

4. Переименуйте класс Order из предыдущего задания в RestaurantOrder. Создайте интерфейс Order – позиции заказа.
Интерфейс должен определять следующие методы:
−добавления позиции в заказ (принимает ссылку типа Item), при этом возвращает логическое значение.
−удаляет позицию из заказа по его названию (принимает название блюда или напитка в качестве параметра). Возвращает логическое значение.
−удаляет все позиции с заданным именем (принимает название в качестве параметра). Возвращает число удаленных элементов.
−возвращает общее число позиций заказа в заказе.
−возвращает массив позиций заказа.
−возвращает общую стоимость заказа.
−возвращает число заказанных блюд или напитков (принимает название в качестве параметра).
−возвращает массив названий заказанных блюд и напитков (без повторов).
−возвращает массив позиций заказа, отсортированный по убыванию цены.
Замечание: Классы InternetOrder и RestaurantOrder должны реализовывать интерфейс Order.
5. Переименуйте класс TablesOrderManager в OrderManager. Добавьте ему еще одно поле типа java.util.HasMap<String, Order>, которое содержит пары адрес-заказ, и методы (работающие с этим полем):
Методы класса:
−перегрузка метода добавления заказа. В качестве параметров принимает строку – адрес и ссылку на заказ.
−перегрузка метода получения заказа. В качестве параметра принимает строку – адрес.
−перегрузка метода удаления заказа. В качестве параметра принимает строку – адрес заказа. −перегрузка метода добавления позиции к заказу. В качестве параметра принимает адрес и Item.
−возвращающий массив имеющихся на данный момент интернет-заказов.
−возвращающий суммарную сумму имеющихся на данный момент интернет-заказов.
−возвращающий общее среди всех интернет-заказов количество заказанных порций заданного блюда по его имени. Принимает имя блюда в качестве параметра. Методы должны работать с интерфейсными ссылками Order и Item.
6.Создайте пользовательское исключение OrderAlreadyAddedException, выбрасываемое при попытке добавить заказ столику или по адресу, если со столиком или адресатом уже связан такой заказ.
Конструктор классов Drink и Dish должен выбрасывать исключение java.lang.IllegalArgumentException при попытке создать блюдо или напиток со стоимостью меньше 0, без имени или описания (если параметры имя и описание - пустые строки).
Создайте не объявляемое исключение IllegalTableNumber, выбрасываемое в методах, принимающих номер столика в качестве параметра, если столика с таким номером не существует.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.