Реалізація базового податкового рахунку додатки для обчислення податків Visual C # (Sharp)

Інтерфейс 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 &lt 100 cl ++) {

if (_deductions[cl] == null) {

_deductions[cl] = deduction break

}

}

}

public void Addlncome(ITaxIncome income) { for (int cl = 0 cl &lt 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 е: ил – (Самовчитель)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*