Vaším úkolem bude naprogramovat "simulátor" peněženky. Peněženka slouží k uchovávání peněz. Do naší peněženky lze ukládat bankovky a mince. Vytvoříte tedy třídu Wallet, která bude mít pět atributů reprezentujících: - počet mincí v peněžence; - počet bankovek v peněžence; - celkovou hodnotu peněz; - maximální počet mincí - naplňovaný z parametru kostruktoru; - maximální počet bankovek - naplňovaný z parametru kostruktoru. Třída Wallet bude obsahovat metody insert_banknotes a insert_coins s proměnným počtem parametrů typu int. Tyto metody vloží příslušný počet bankovek nebo mincí do peněženky, například: insert_coins (5, 10, 20) vloží do peněženky tři mince a zvýší hodnotu peněz v peněžence o 35. V případě, že počet vkládaných mincí nebo bankovek překročí maximální počet mincí (bankovek) vyvolá se vyjímka WalletFullException. Tato vyjímka si v sobě uchová informaci, o kolik mincí (bankovek) byla překročena kapacita peněženky. Třída Wallet dále bude obsahovat metodu pay (int price, int number_of_coins, int number_of_banknotes), která sníží hodnotu peněz v peněžence o příslušný obnos a sníží také aktuální počet mincí a bankovek. V případě, že v peněžence není dostatek mincí nebo bankovek nebo je aktuální celková hodnota nižší než požadovaná vyvolá se vyjímka WalletEmptyException. Shrnutí: -------- Všechny třídy budou uloženy v balíku cz.muni.fi.login.wallet. Kostra třídy Wallet tedy bude vypadat takto: public class Wallet { // vhodné atributy; public Wallet (int max_coins, int max_banknotes) { } public void insert_banknotes (int b1_value, int... values) throws WalletFullException { } public void insert_coins (int c1_value, int... values) throws WalletFullException { } public void pay (int price, int number_of_coins, int number_of_banknotes) throws WalletEmptyException{ } public void info() { // vypíše informaci o počtech bankovek a mincí a o celkové // hodnotě peněz v peněžence } } Dále úloha obsahuje vyjímkové třídy WalletFullException a WalletEmptyException. Třída WalletFullException si v sobě pamatuje počet mincí nebo bakovek, o který byla překročena kapacita peněženky. Vytvořte dále třídu Main obsahující spouštěcí metodu main, ve které: - Vytvoříte peněženku, do které lze vložit 5 mincí a 5 bankovek. - Vložíte do peněženky mince 1, 1, 2, 5. - Vložíte do peněženky mince 5, 5. - Zachytíte vyjímku při překročení kapacity a vypíšete informaci o kolik byl překročen počet vkládaných mincí. - Vložíte do peněženky bankovky 10, 20, 20, 100. - Vložíte do peněženky bankovky 200, 500. - Zachytíte vyjímku při překročení kapacity a vypíšete informaci o kolik byl překročen počet vkládaných bankovek. - Výsledkem by měla být celková hodnota 1+1+2+5+5 + 10+20+20+100+200=364. - Vypíšete informaci o aktuálním počtu mincí, bankovek a celkovou hodnotu. - Zaplatíte pomocí metody pay hodnotu 300 pomocí 4 bankovek a 4 micí. - Zaplatíte pomocí metody pay hodnotu 100 pomocí 2 bankovek a 1 mince. - Zachytíte vyjímku při nedostatečném množství bankovek (mincí) nebo celkové hodnoty a vypíšete informaci o tom, že se platba nezdařila. - Vypíšete informaci o aktuálním počtu mincí, bankovek a celkovou hodnotu.