Cvičenie 3 - Dedičnosť, Zapúzdrenie, Polymorfizmus a Abstraktné triedy

Cieľom tretieho cvičenia je precvičiť si vytváranie hierarchie tried, zapúzdrenie členských premenných a predefinovanie metód v podtriedach. Názvy a typ premenných a metód je zapísaný v UML notácii.

Úlohy

Úloha 3.1

Vytvorte balík projekt v ktorom vytvorte triedu ClenTimu s chránenou premennou meno: String a konštruktorom ClenTimu(meno: String), ktorý nastaví meno podľa zadaného parametra.

Úloha 3.2

V balíku projekt vytvorte triedu ProjektovyTim s chránenými členskými premennými nazov: String a clenovia: ClenTimu[]. Do triedy pridajte verejný konštruktor ProjektovyTim(nazov: String), ktorý nastaví názov tímu a zoznam členov na prázdne pole.

Úloha 3.3

Do triedy ClenTimu pridajte chránenú premennú tim: ProjektovyTim a konštruktor ClenTimu(meno: String, tim: ProjektovyTim), ktorý nastaví meno a tím člena. Pôvodný konštruktor ClenTimu(meno: String) upravte tak aby volal dvojparametrový konštruktor a nastavil tím na null.

Úloha 3.4

Do triedy ProjektovyTim pridajte metódu pridajClena(clen: ClenTimu): void, ktorá pridá nového člena do poľa clenovia.

Pre pridanie nového prvku musíte vytvoriť nové pole a skopírovať existujúce prvky.

Úloha 3.5

Vytvorte triedu Program (bez balíka) s metódou main v ktorej vytvorte 3 členov tímu a jeden tím. Členov pridajte do tímu metódou pridajClena.

Úloha 3.6

Upravte metódu pridajClena tak, že nastaví premennú tim pridávaného člena na samotný objekt tímu. Samotný objekt je v metódach prístupný pomocou kľúčového slova this.

Úloha 3.7

V triede ClenTimu predefinujte metódu toString(): String zdedenú z triedy Object. Metóda by mala vrátiť reťazec "[meno] : [názov tímu]", resp. iba "[meno]" ak člen nie je zaradený do žiadneho tímu. V metóde main triedy Program vypíšte v cykle všetkých členov tímu, pričom využite predefinovanú metódu toString.

Úloha 3.8

Vytvorte balík projekt.clenovia a v ňom triedy Tester, Programator a Manazer odvodené od triedy ClenTimu. Upravte metódu main tak aby sa vytvoril tím s 2 testermi, 2 programátormi a 1 manažérom.

Úloha 3.9

Do triedy ClenTimu pridajte abstraktnú metódu spracujUlohu(uloha: String):void. Do jej podtried pridajte implementácie, ktoré vypíšu správu "[rola] [meno]: [úloha]" kde rola je "tester", "programátor", alebo "manažér" podľa typu podtriedy.

Úloha 3.10

Do triedy ProjektovyTim pridajte metódu programuj(uloha: String): void, ktorá v cykle zavolá metódu spracujUlohu pre každého programátora v tíme. Typ člena otestujte operátorom instanceof.