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

2.3 KiB
Raw Blame History

Калькулятор налогов (03-taxes)

Формулировка задания

Написать класс для подсчета налогового вычета у 3 категорий граждан:

  • Физических лиц - 13%
  • Индивидуальных предпринимателей - 15%
  • Самозанятых - 6%

Класс должен предоставлять функцию calculateTax, которая принимает категорию налога и сумму, для которой требуется сделать вычисление.

Ожидаемый результат

Налог на 100000 для физлица = 13000
Налог на 1000000 для ИП = 150000
Налог на 10 для самозанятого = 0.6

Запуск через Gradle

gradle run --console=plain

Пояснение к прилагаемому решению

Для выбора категории налога в программе реализован паттерн "Стратегия":

Паттерн Стратегия предлагает определить семейство схожих алгоритмов, которые часто изменяются или расширяются, и вынести их в собственные классы, называемые стратегиями.

Вместо того, чтобы изначальный класс сам выполнял тот или иной алгоритм, он будет играть роль контекста, ссылаясь на одну из стратегий и делегируя ей выполнение работы. Чтобы сменить алгоритм, вам будет достаточно подставить в контекст другой объект-стратегию.

Важно, чтобы все стратегии имели общий интерфейс. Используя этот интерфейс, контекст будет независимым от конкретных классов стратегий. С другой стороны, вы сможете изменять и добавлять новые виды алгоритмов, не трогая код контекста.