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