This repository has been archived on 2025-02-05. You can view files and clone it, but cannot push or open issues or pull requests.
Files
JavaOOP3Sem/labs/03-tax-calculator/README.md
2024-11-07 11:39:05 +03:00

37 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Калькулятор налогов (`03-taxes`)
## Формулировка задания
Написать класс для подсчета налогового вычета у 3 категорий граждан:
- Физических лиц - `13%`
- Индивидуальных предпринимателей - `15%`
- Самозанятых - `6%`
Класс должен предоставлять функцию `calculateTax`, которая принимает категорию налога и сумму, для которой требуется сделать вычисление.
## Ожидаемый результат
```
Налог на 100000 для физлица = 13000
Налог на 1000000 для ИП = 150000
Налог на 10 для самозанятого = 0.6
```
## Запуск через Gradle
```sh
gradle run --console=plain
```
## Пояснение к прилагаемому решению
Для выбора категории налога в программе реализован паттерн "Стратегия":
> Паттерн Стратегия предлагает определить семейство схожих алгоритмов, которые часто изменяются или расширяются, и вынести их в собственные классы, называемые стратегиями.
>
> Вместо того, чтобы изначальный класс сам выполнял тот или иной алгоритм, он будет играть роль контекста, ссылаясь на одну из стратегий и делегируя ей выполнение работы. Чтобы сменить алгоритм, вам будет достаточно подставить в контекст другой объект-стратегию.
>
> Важно, чтобы все стратегии имели общий интерфейс. Используя этот интерфейс, контекст будет независимым от конкретных классов стратегий. С другой стороны, вы сможете изменять и добавлять новые виды алгоритмов, не трогая код контекста.