Cvičenie 6 - Generické typy

Cieľom šiesteho cvičenia je precvičiť si prácu s generickými typmi. Názvy a typ premenných a metód sú zapísané v UML notácii.

Úlohy

Úloha 6.1

Upravte úlohu 5.9 tak, aby ste použili generické typy pre zoznam a množinu.

Úloha 6.2

Vytvorte triedu Program6_2 s metódou main. V metóde main vytvorte zoznam reťazcov do ktorého pridajte prvky tak aby sa niektoré hodnoty opakovali. Pomocou mapy spočítajte, koľko krát sa vyskytla v zozname každá hodnota. Zoznam a mapu definujte ako generický typ a využite automatické pretypovanie atomických hodnôt na objekty.

Úloha 6.3

Vytvorte generické rozhranie Instrukcia s dvoma parametrami V, S a jednou metódou spracuj(V vstup): S.

Úloha 6.4

Vytvorte triedy PlusJedna a MinusJedna, ktoré implementujú rozhranie Instrukcia pre číselný typ Integer a ktoré v metóde spracuj pripočítajú a odpočítajú hodnotu 1.

Úloha 6.5

Vytvorte generickú triedu Procesor s dvoma parametrami V, S. Do triedy pridajte členskú premennú vystupy: List typu S, verejnú metódu getVystupy(): List a verejnú metódu vypocitaj(program: List, vstupy: List): void. Argument program je zoznam inštrukcií vhodného typu (rozhranie Instrukcia z úlohy 6.3) a argument vstupy je zoznam vstupov typu V. Metóda vypocitaj postupne spracuje vstup zodpovedajúcou inštrukciou a výstup pridá do zoznamu výstupov.

Úloha 6.6

Vytvorte triedu Program s metódou main. V metóde main vytvorte premennú typu Procesor pre číselné vstupy a výstupy. Pre vstupy [1, 2, 3, 4] vypočítajte inštrukcie [+, -, +, -] kde '+' je inštrukcia typu PlusJedna a '-' inštrukcia typu MinusJedna.

Úloha 6.7

Vytvorte rozhranie Bod a triedy Bod2D a Bod3D implementujúce Bod. Vytvorte generické rozhranie GrafickyObjekt s parametrom T, ktorý udáva typ polohy objektu s metódou getPoloha(): T. Ohraničte parameter T iba na typ odvodený z rozhrania Bod.

Úloha 6.8

Vytvorte generickú triedu ZakladnyObjekt, ktorý implementuje rozhranie GrafickyObjekt.

Úloha 6.9

Vytvorte generickú triedu ZlozenyObjekt2D s parametrom T, generickou členskou premennou objekty: List<T> a metódou getObjekty(): List<T>. Parameter T ohraničte iba na dvojrozmerné základné objekty.

Úloha 6.10

Vytvorte triedu Program s metódou main v ktorej vytvorte jeden zložený objekt do ktorého pridajte tri základné.