https://github.com/alinkaqa/class-hierarchy
Создай иерархию классов с продуктами, которые можно положить в корзину.
https://github.com/alinkaqa/class-hierarchy
java java-11
Last synced: 27 days ago
JSON representation
Создай иерархию классов с продуктами, которые можно положить в корзину.
- Host: GitHub
- URL: https://github.com/alinkaqa/class-hierarchy
- Owner: AlinkaQA
- Created: 2025-02-24T19:53:59.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-24T20:01:31.000Z (over 1 year ago)
- Last Synced: 2025-02-24T20:34:48.583Z (over 1 year ago)
- Topics: java, java-11
- Language: Java
- Homepage:
- Size: 0 Bytes
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Иерархия классов
## Описание задачи
Создать иерархию классов с продуктами, которые можно положить в корзину. Классы должны быть расположены в отдельных пакетах.
## Структура пакетов
```
model
├── constants
│ ├── Discount.java
│ ├── Colour.java
│
├── Food.java
├── Meat.java
├── Apple.java
│
service
├── ShoppingCart.java
│
Main.java
```
## Описание классов и интерфейсов
### Пакет `model`
#### Абстрактный класс `Food`
- Поля:
- `amount` — количество продукта в килограммах (целое число)
- `price` — цена за единицу (вещественное число)
- `isVegetarian` — флаг, который показывает, вегетарианский ли продукт
- Поля доступны только из классов-потомков
#### Интерфейс `Discountable`
- Метод `getDiscount()` — возвращает размер скидки (вещественное число)
- Все классы, реализующие этот интерфейс, возвращают `0`, если не указано иное
#### Класс `Meat` (наследник `Food`)
- Конструктор принимает два параметра:
- `amount`
- `price`
- Устанавливает `isVegetarian` в `false`
#### Класс `Apple` (наследник `Food`, реализует `Discountable`)
- Дополнительное поле `colour` (цвет яблок)
- Конструктор принимает три параметра:
- `amount`
- `price`
- `colour`
- Устанавливает `isVegetarian` в `true`
- Если `colour == "red"`, то `getDiscount()` возвращает `60`
### Подпакет `model.constants`
#### Класс `Discount`
- Значения скидок
#### Класс `Colour`
- Константы цветов: `public static final String RED = "red";`, `public static final String GREEN = "green";`
### Пакет `service`
#### Класс `ShoppingCart`
- Поле: массив `Food[] items`
- Конструктор принимает массив продуктов
- Методы:
- `getTotalPrice()` — общая сумма товаров без скидки
- `getTotalPriceWithDiscount()` — общая сумма товаров со скидкой
- `getTotalVegetarianPrice()` — общая сумма вегетарианских продуктов без скидки
### Класс `Main`
- Метод `main()`:
1. Создаёт объекты:
- `Meat(5, 100)`
- `Apple(10, 50, Colour.RED)`
- `Apple(8, 60, Colour.GREEN)`
2. Создаёт массив продуктов и инициализирует корзину
3. Выводит в консоль:
- Общую сумму товаров без скидки
- Общую сумму товаров со скидкой
- Общую сумму вегетарианских товаров без скидки
## Примечания
- Все переменные класса должны быть недоступны извне, если не указано иное
- Доступ к ним через геттеры и сеттеры, если они необходимы