Ulohy ku predmetu Objektovo orientovane programovanie 3. prednaska 1. uloha --------- Vytvorte Triedu Pocitadlo reprezentujuce pocitadlo, ktoreho aktualnu hodnotu mozno - zvysovat o 1 - resetovat na nulu - zistovat (metoda vrati aktualnu hodnotu pocitadla) V konstruktore explicitne zabezpecte, aby po vytvoreni bola hodnota pocitadla nulova. V metode main vytvorte a otestujte instancie triedy Pocitadlo 2. uloha --------- Vytvorte triedu T a metodu main. V triede T definujte dve metody s rovnakym nazvom a jednym parametrom. Budu sa lisit iba typom parametra. Prva metoda bude mat parameter typu int, druha parameter typu double. Obidve metody budu pre kontrolu vypisovat typ a hodnotu svojho parametra (napr. "hodnota 2 typu int"). Metody mozu byt nestaticke (volane nad instanciami), alebo staticke (volane nad triedou). V metode main zavolajte obidve metody. 3. uloha --------- Nech je dana implementacia: //Trieda reprezentuje znamku v skole 1, 2, 3, 4, alebo 5 public class Znamka { private Date DATUM_PRIDELENIA; private int HODNOTA_ZNAMKY; //reprezentuje samotnu hodnotu znamky (jednu z moznosti 1, 2, 3, 4, 5) //opravte tak, aby sa hodnota premennej dala nastavit iba raz ..... int[] poctyZnamok; public Znamka(int hodnotaZnamky) { HODNOTA_ZNAMKY = hodnotaZnamky; DATUM_PRIDELENIA = new Date(); //nastavi cas vytvorenia znamky na aktualny na cas volania konstruktora } public int dajHodnotu() { return HODNOTA_ZNAMKY; } ..... int dajCelkovyPocetZnamokSHodnotou(int hodntaZnamky) { } } Upravte implementaciu triedy tak, aby metoda dajCelkovyPocetZnamokSHodnotou patrila triede, nie jej instanciam. Ak pri volani metody bude vstupnou hodnotou jedna z hodnot 1, 2, 3, 4, 5, tak vrati pocet vsetkych doteraz vytvorenych znamok so zadanou hodnotou. Ak pri volani metody bude vstupnou hodnotou ina hodnota ako 1, 2, 3, 4, 5, tak metoda vrati -1 (neskor sa naucime lepsi sposob osetrovana chyb). Premennu poctyZnamok inicializujte v statickom inicializacnom bloku. Priklad pouzitia: public class Program { public static void main(String[] args) { Znamka a = new Znamka(1); Znamka b = new Znamka(5); Znamka c = new Znamka(2); Znamka d = new Znamka(1); Znamka e = new Znamka(1); System.out.println(Znamka.dajCelkovyPocetZnamokSHodnotou(1)); //vytlaci 3 System.out.println(Znamka.dajCelkovyPocetZnamokSHodnotou(2)); //vytlaci 1 System.out.println(Znamka.dajCelkovyPocetZnamokSHodnotou(3)); //vytlaci 0 System.out.println(Znamka.dajCelkovyPocetZnamokSHodnotou(4)); //vytlaci 0 System.out.println(Znamka.dajCelkovyPocetZnamokSHodnotou(5)); //vytlaci 1 Znamka f = new Znamka(3); Znamka g = new Znamka(1); Znamka h = new Znamka(2); Znamka i = new Znamka(1); Znamka j = new Znamka(2); System.out.println(Znamka.dajCelkovyPocetZnamokSHodnotou(1)); //vytlaci 5 System.out.println(Znamka.dajCelkovyPocetZnamokSHodnotou(2)); //vytlaci 3 System.out.println(Znamka.dajCelkovyPocetZnamokSHodnotou(3)); //vytlaci 1 System.out.println(Znamka.dajCelkovyPocetZnamokSHodnotou(4)); //vytlaci 0 System.out.println(Znamka.dajCelkovyPocetZnamokSHodnotou(5)); //vytlaci 1 } } 4. uloha --------- Nech su definovane triedy (v 2 suboroch) public class T { public T() { } } public class Program { public static void main(String[] args) { } } Postupujte podla instrukcii: 1) V metode main vytvorte instanciu triedy T. 2) Zmente modifikator pristup konstruktora na private. 3) Kompilator vyhlasi chybu pri vytvarani instancie triedy T. Zakomentujte vytvorenie instancie triedy T v main-e. 4) Najdite miesto kde mozno vytvorit instanciu triedy T. 5) Vytvorte metodu, ktoru mozno zavolat v metode main triedy Program a zabezpeci vytvorenie novej instancie triedy T. 5. uloha --------- Nech su definovane triedy T a Program (v 2 suboroch) public class T { private T() { } } public class Program { public static void main(String[] args) { T t1 = T.dajInstanciu(); T t2 = T.dajInstanciu(); } } Vytvorte v triede T verejnu metodu dajInstanciu, ktora - zabezpeci aby v programe mohla byt vytvorena iba jedna instancia triedy T - ak neexistuje ziadna instancia triedy T, tak vytvori novu instanciu a vrati jej referenciu - ak uz existuje instancia triedy T, tak vrati referenciu na tuto instanciu Po vypracovani (v pripade problemov s vypracovanim pocas vypracovania) najdite na internete informacie o navrhovom vzore Singleton