Главная » C# » Реализация базового налогового счета приложения для вычисления налогов Visual C# (Sharp)

0

Интерфейс  iTaxAccount также можно реализовать как функциональность базового класса. Соответствующий код будет выглядеть так:

abstract class BaseTaxAccount : ITaxAccount { ITaxDeduction[] _deductions;

ITaxIncome[] _incomes;

public BaseTaxAccount() {

_deductions = new ITaxDeduction[100];

_incomes = new ITaxIncome[100];

}

public void AddDeduction(ITaxDeduction deduction) { for (int cl = 0; cl < 100; cl ++) {

if (_deductions[cl] == null) {

_deductions[cl] = deduction; break;

}

}

}

public void Addlncome(ITaxIncome income) { for (int cl = 0; cl < 100; cl ++) {

if (_incomes[cl] == null) {

_incomes[cl] = income; break;

}

}

}

public ITaxDeduction[] Deductions { get {

return _deductions;

}

}

public ITaxIncome[] Income { get {

return _incomes;

}

}   •

public abstract double GetTaxRate(double income);

}

Посмотрим, что мы сделали на данном этапе, и решим, предоставляет ли базовую функциональность наш движок для вычисления налогов. Итак:

•    были определены идеи для всего движка для вычисления налогов;

•    были реализованы в виде базовых классов некоторые интерфейсы;

•    некоторые интерфейсы были реализованы в виде стандартных реализаций с облтью видимости sealed.

Мы может считать движок для вычисления налогов завершенным, т. к. в аспекте базовой функциональности все интерфейсы были определены и приняты во внимие либо как базовые классы, либо как стандартные реализации. Это не означает, что интерфейсы всегда будут реализованы. Иногда некоторые интерфейсы  не бут иметь базовой функциональности или базовых классов.

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

ПРИМЕЧАНИЕ

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

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

Использование базовой функциональности движка для вычисления налогов

Мы используем базовую функциональность движка для вычисления налогов в Каде. Я выбрал канадскую налоговую систему, потому что знаю и понимаю  ее; кроме этого, для нее имеется большой объем документации в Интернете.

ВВОДНАЯ      ИНФОРМАЦИЯ       О      КАНАДСКИХ     НАЛОГАХ

Самое первое, что я могу сказать о канадской налоговой  системе, —  это  то,  что  кадцы платят много налогов, слишко м много налогов. Некоторым утешение м  этому является  простота  их  вычисления,  т.  к.  налогоплательщикам  не   предоставляется слишко м много налоговых вычетов, что возвращает нас обратно к первому обстоельству — канадцы платят слишком много налогов.  (Налогоплательщики  в  других странах,  скорее  всего,  придерживаютс я точно  такого  же  мнения.)

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

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

Налоговая ставка на капитальные доходы составляет 50%. Иными словами, если вы поручили 200 канадских долларов капитального дохода, то вам нужно платить налог только на 100 из них.

Источник: Гросс  К. С# 2008:  Пер. с англ. — СПб.:  БХВ-Петербург, 2009. — 576 е.:  ил. — (Самоучитель)

По теме:

  • Комментарии