Seminář 6 (Úkoly)
Se znalostmi, které jste doposud získali, naprogramujte pro Finanční úřad informační systém na evidenci daní. Protože jsme zatím v polovině semestru, návrh systému si mírně zjednodušímě.
- V systému bude existovat třída (nebo rozhraní)
TaxPayerpředstavující daňového poplatníka, která bude mít metoduint getIncomeTax(int income), která pro zadaný příjem daňového poplatníka vrátí výši jeho daně z příjmu. - Daňové poplatníky budou reprezentovat právě dvě třídy
Person, pro fyzické osoby, kde u každé osoby bude uvedeno (i) jméno, (ii) počet dětí a (iii) typ daňového poplatníka. Typem daňového poplatníka může být buďEMPLOYEE(zaměstnanec),STUDENT(student), neboSELF_EMPLOYED(OSVČ).Corporation, pro firmy (právnické osoby), kde u každé firmy bude uveden (i) název a (ii) typ společnosti, který může býtINCORPORATED(akciová společnost),LLC(společnost s ručením omezeným), neboNON_PROFIT(nezisková organizace).
- se spočítá základní daň podle vzorečku z prvního semináře,
- od které si student odečte 1000 a OSVČ 5000,
- za každé dítě se z daně odečte 1000.
- Pokud je daň záporná, bere se jako daň 0.
- akciové společnosti a společnosti s ručením omezeným zaplatí 20% svých příjmů
- a neziskové organizace 5% ze svých příjmů.
TaxStatement, která bude představovat daňové přiznání a bude obsahovat (i) informaci o daňovém poplatníkovi, (ii) rok podání daňového přiznání a (iii) výši příjmů.InternalRevenueSoftware, která bude obsahovat pole s daňovými přiznánimi a bude mít minimálně dvě metody.void printTaxes(TaxPayer taxPayer), která pro zadaného poplatníka vypíše jednotlivé roky a částky, kolik zaplatil na daních.int totalTaxIncomes(int year), která pro zadaný rok vrátí, kolik stát vybral na daních.