An open API service indexing awesome lists of open source software.

https://github.com/alinkaqa/class-hierarchy

Создай иерархию классов с продуктами, которые можно положить в корзину.
https://github.com/alinkaqa/class-hierarchy

java java-11

Last synced: 27 days ago
JSON representation

Создай иерархию классов с продуктами, которые можно положить в корзину.

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. Выводит в консоль:
- Общую сумму товаров без скидки
- Общую сумму товаров со скидкой
- Общую сумму вегетарианских товаров без скидки

## Примечания
- Все переменные класса должны быть недоступны извне, если не указано иное
- Доступ к ним через геттеры и сеттеры, если они необходимы