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í) TaxPayer představující daňového poplatníka, která bude mít metodu int 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), nebo SELF_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ýt INCORPORATED (akciová společnost), LLC (společnost s ručením omezeným), nebo NON_PROFIT (nezisková organizace).
  • Daň pro fyzické osoby se určí tak, že
    1. se spočítá základní daň podle vzorečku z prvního semináře,
    2. od které si student odečte 1000 a OSVČ 5000,
    3. za každé dítě se z daně odečte 1000.
    4. Pokud je daň záporná, bere se jako daň 0.
  • Pro právnické osoby se daň určí tak, že
    1. akciové společnosti a společnosti s ručením omezeným zaplatí 20% svých příjmů
    2. a neziskové organizace 5% ze svých příjmů.
  • Vytvořte třídu 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ů.
  • Vytvořte třídu InternalRevenueSoftware, která bude obsahovat pole s daňovými přiznánimi a bude mít minimálně dvě metody.
    1. void printTaxes(TaxPayer taxPayer), která pro zadaného poplatníka vypíše jednotlivé roky a částky, kolik zaplatil na daních.
    2. int totalTaxIncomes(int year), která pro zadaný rok vrátí, kolik stát vybral na daních.
  • Vhodně použijte výčtové typy, třídy typu Record, abstraktní třídy nebo rozhraní.

Last update on 3. 11. 2025 18:22
Powered by Schemik.

© Petr Krajča, 2010, 2012
petr.krajca (at) upol.cz