Этот проект я создала, чтобы разобраться с интерфейсами, абстрактными классами и сортировкой объектов в Java на примере системы заказов.
Проект моделирует систему заказов с двумя типами:
- Online — онлайн-заказ (реализует интерфейс
Discountable. дает скидку) - Offline — офлайн-заказ
Основные возможности:
- Создание заказов с id, именем клиента и суммой
- Сортировка заказов по сумме (
Comparable) - Проверка на дубликаты по id (
equals/hashCode) - Вывод информации о заказе с указанием типа
| Тема | Что поняла |
|---|---|
| Абстрактный класс | Order — нельзя создать напрямую, только через наследников |
| Интерфейс | Discountable — контракт, который обязывает реализовать метод getDiscount() |
| Comparable | Реализация compareTo() для сортировки объектов |
| equals / hashCode | Переопределение для сравнения объектов по id |
| Наследование | OrderOnline и OrderOffline расширяют Order |
| Полиморфизм | Объекты разных типов в одном списке |
(100.0, 150.0, 200.0)
3 [Online]: Charlie | 100.0
1 [Online]: Alice | 150.0
1 [Online]: Alice | 150.0
2 [Offline]: Bob | 200.0
Порядок сортировки — по возрастанию суммы (100 → 150 → 200).
| Файл | Роль |
|---|---|
Order.java |
Абстрактный класс + интерфейс Discountable + точка входа main |
OrderOnline.java |
Онлайн-заказ, реализует Discountable |
OrderOffline.java |
Офлайн-заказ, без скидки |
compareTo()— сортирует заказы по суммеequals()— сравнивает заказы только по idsuper.toString()— вызывает метод из родительского классаgetDiscount()уOrderOnlineвозвращает всю сумму как скидку (пример логики)
⭐ Проект помогает мне понять, как работают интерфейсы, наследование и сортировка в Java.