Úkol 07 - Bankovní účty
Stáhněte si přepřipravený projekt s domácím úkolem zde: Ukol07.zip
Část 1
Vytvořte třídu BeznyUcet
podle následujícího schématu:
public class BeznyUcet
|
+-- private double zustatek
|
+-- public BeznyUcet(double pocatecniCastka)
|
+-- public double getZustatek()
|
+-- public boolean vyberPenize(double castka)
|
+-- public boolean vlozPenize(double castka)
Poznámky ke třídě:
BeznyUcet
má 1 vnitřní proměnnouzustatek
.-
Dále má 1 konstruktor (
public BeznyUcet(double pocatecniCastka)
), který přijímá počáteční hodnotu zůstatku. Tedy vlastně počáteční vklad. Metoda
getZustatek()
nám hodnotu zustatku dokáže vrátit.Pozor: Nevypisuje nic na obrazovku. (Viz rozdíl z lekce mezi výpisem na obrazovku a návratovou hodnotou z metody).
Metoda
vyberPenize(...)
odečte od zůstatku částku, která přijde jako vstupní parametr metody a vrátítrue
.Pokud by byla metod zavolána se zápornou částkou, vypište chybovou hlášku, neměňte zůstatek a vraťte
false
.V případě, že jen není dostatek peněz na účtu pro výběr, chybovou hlášku nevypisujte, ale zůstatek také neměňte a vraťte
false
.Metoda
vlozPenize(...)
k zůstatku peníze naopak přičte a vrátítrue
, což znamená, že se operace povedla.Ani tato metoda neakceptuje zápornou hodnotu částky. V případě záporné částky tedy vypište chybovou hlášku, zůstatek neměňte a vraťte
false
.
Abyste ověřili, že máte program správně,
odkomentujte ve třídě SpousteciTrida
volání první metody
tester1.testNormalAccount()
a celou třídu NormalAccountTest
.
V případě, že bude vše fungovat správně, vypíše se:
BeznyUcet: Vsechny testy jsou OK
Část 2
Rozšiřte třídu BeznyUcet
o funkcionalitu povoleného přečerpání účtu
(tzv. debet nebo kontokorent).
Se zůstatkem tedy bude možné jít do záporu, ale jen do určité výše.
Ta se dá nastavit v konstruktorupublic BeznyUcet(double pocatecniCastka, double limitCerpani)
,
konkrétně parametr limitCerpani
.
To znamená, že metoda getZustatek()
může vracet záporné hodnoty.
Např. kdybychom vytvořili objekt new BeznyUcet(1000.0, 5000.0)
,
pak by z něj šlo vybrat až 6000 korun a po výběru by byl zůstatek
-5000.
U účtů s povoleným přečerpáním je vhodné vědět i
použitelný zůstatek, což je součet zůstatku a limitu precerpani.
Pokud bychom např. vytvořili objekt new BeznyUcet(800.0, 6000.0)
,
pak metoda getZustatek()
by vracela 800 korun,
zatímco metoda getPouzitelnyZustatek()
by vracela 6800 korun.
Opravte samozřejmě metodu vyberPenize(...)
tak,
aby umožňovala jít "do záporu" až do výše povoleného limitu
přečerpání.
public class BeznyUcet
|
+-- private double zustatek
|
+-- private double limitPrecerpani
|
+-- public BeznyUcet(double pocatecniCastka)
|
+-- public BeznyUcet(double pocatecniCastka, double pocatecniLimitPrecerpani)
|
+-- public double getZustatek()
|
+-- public double getLimitPrecerpani()
|
+-- public double getPouzitelnyZustatek()
|
+-- public boolean vyberPenize(double castka)
|
+-- public boolean vlozPenize(double castka)
Abyste ověřili, že máte program správně,
odkomentujte ve třídě SpousteciTrida
volání druhé metody
tester2.testOverdraftAccount()
a celou třídu OverdraftAccountTest
.
V případě, že bude vše fungovat správně, vypíše se:
BeznyUcet + Precerpani: Vsechny testy jsou OK
Část 3 - Dobrovolná část
Tato část je dobrovolná. Pokud by pro vás byl úkol už příliš rozsáhlý, smíte ji vynechat. Nicmnéně je velmi doporučeno zpracovat i tuto část.
Vytvořte třídu SporiciUcet
,
která bude představovat sestarskou třídu k BeznyUcet
.
Nebude umožňovat jít do záporu (povolené přečerpání účtu),
ale naopak bude evidovat úrokovou míru (procenta) a umožní
jednou ročně bance vložit vypočtený úrok (peníze) na účet
pomocí metody vypocitejRocniUrokAVlozHoNaUcet()
.
Metoda si sama vypočítá
úrok (peníze) z úrokové míry (procent). Pro zjednodušení tak, že se vezme
aktuální zůstatek a z něj se vypočítá úrok podle aktuální úrokové míry.
Např. pokud vytvoříme objekt new SporiciUcet(1000.0, 0.05)
,
tedy s počátečním zůstatkem 1000 korun a úrokem 5%,
po zavolání metody vypocitejRocniUrokAVlozHoNaUcet()
bude zůstatek
roven 1050 korun.
Metoda vypocitejRocniUrokAVlozHoNaUcet()
musí pro účely připsání
úroku použít metodu vlozPenize(...)
.
public class SporiciUcet
|
+-- private double zustatek
|
+-- private double urokovaMira
|
+-- public SporiciUcet(double pocatecniCastka)
|
+-- public SporiciUcet(double pocatecniCastka, double pocatecniUrokovaMira)
|
+-- public double getZustatek()
|
+-- public double getUrokovaMira()
|
+-- public boolean vlozPenize(double castka)
|
+-- public boolean vyberPenize(double castka)
|
+-- public void vlozNaUcetRocniUrok()
Abyste ověřili, že máte program správně,
odkomentujte ve třídě SpousteciTrida
volání třetí metody
tester3.testSavingsAccount()
a celou třídu SavingsAccountTest
.
V případě, že bude vše fungovat správně, vypíše se:
SporiciUcet: Vsechny testy jsou OK
Testovací třídy
Metoda main(...)
hotového programu by tedy měla vypadat takto:
public static void main(String[] args) {
NormalAccountTest tester1 = new NormalAccountTest();
OverdraftAccountTest tester2 = new OverdraftAccountTest();
SavingsAccountTest tester3 = new SavingsAccountTest();
tester1.testNormalAccount();
tester2.testOverdraftAccount();
tester3.testSavingsAccount();
}
Pokud vám všechny testovací metody projdou,
a nakonec se alespoň 2x (lépe 3x) vypíše All tests are OK
,
máte vše správně a můžete úkol odevzdat.
Odevzdání domácího úkolu
Nejprve appku (60-Banka
)
zbavte přeložených spustitelných souborů.
Zařídíte to tak, že v IntelliJ IDEA vpravo zvolíte
Maven Projects -> Lifecycle -> Clean.
Úspěch se projeví tak, že v projektové složce zmizí
podsložka target.
Následně obě složky s projekty
zabalte pomocí 7-Zipu pod jménem Ukol07-Vase_Jmeno.7z
.
(Případně lze použít prostý zip, například na Macu).
Takto vytvořený archív nahrajte na
Google Drive do složky Ukol07
.
Pokud byste chtěli odevzdat revizi úkolu (např. po opravě),
zabalte ji a nahrajte ji na stejný Google Drive znovu,
jen tentokrát se jménem Ukol07-Vase_Jmeno-verze2.7z
.
Termín odevzdání je do úterý 27. 11. 2018 23:59. Pokud úkol nebo revizi odevzdáte později, prosím pošlete svému opravujícímu kouči/lektorovi email nebo zprávu přes FB.