Ep. 18 – OOP Part 2 (Trieda, Object, Inštancia)
Pokračujeme druhou častou v sérií OOP. V tejto epizóde si najprv zopakujeme, čo je to objekt. Potom prejdeme na to, čo je to trieda a inštancia. Neskôr budeme rozoberať rozdiely medzi triedou, objektom a inštanciou. Nevyhneme sa ani príkladom z reálneho života, aby sme si to vedeli lepšie predstaviť.
00:00 – 00:35 Úvod
00:36 – 02:22 Čo je to objekt (zopakovanie)
02:23 – 06:20 Čo je trieda?
06:21 – 09:05 Čo je inštancia?
11:06 – 11:07 Aký je rozdiel medzi objektom, triedou a inštanciou?
10:48 – 13:53 Príklad vytvorenia triedy Lampa
13:54 – 15:07 Záver
OBJEKT
Objekty sú všade okolo nás. Keď sa teraz obzriem okolo seba vidím klávesnicu, monitor, myš, mobil, sluchadlá a všetko možné. Toto všetko sú reálne objekty, ktoré vieme reprezentovať aj v softvérovom svete.
- Každý objekt má nejaké vlastnosti a chovania
TRIEDA
Keď vidíme na ceste 2 škodovky, tak vidíme vlastne 2 objekty. Tieto objekty sú dosť podobné, ale je nám jasné, že nie sú to tie isté objekty. Oba objekty sú škodovky a majú spoločné charakteristiky. V softvérovom svete by sme vedeli povedať, že oba objekty sú vytvorené z triedy Škodovka.
- Trieda je návrh/predloha, podľa ktorého sú jednotlivé objekty vytvárané
- Triede môžeme dať nejaké vlastnosti/properties a metódy, ktoré reprezentujú chovania
- Pomocou tried vytvárame objekty
- Trieda je koncept a nedá sa “chytiť”
INŠTANCIA
V OOP terminológií môžeme povedať, že inštancia je objekt vytvorený z nejakej trieday. Je to už teda konkretny vytvorený objekt, ktorý je v pamäti programu.
- Inštancia je vytvorený objekt, ktorý žije v pamäti softvéru
Termíny objekt a inštancia sú často zameniteľné a veľa ľudí vám povie, že medzi nimi nie je žiaden rozdiel. Vypočujte si v podcaste, ako sa vám napriek tomu posnažíme vysvetliť rozdiely.
Príklad – LAMPA
Lampa v reálnom svete má jednu vlastnosť (zjednodušene). Môže byť buď zapnutá alebo vypnutá.
Taktiež ma jedno chovanie, ktoré mení jej stav (pomocou vypínača/zapínača)
V softvérovom svete by sme si vytvorili triedu Lamp a dali by sme jej property boolean switched.
Následne 2 metódy, ktorými môžeme switched nastaviť na true alebo false.
class Lamp { boolean switched; public Lamp(boolean switched) { this.switched = switched; } public void switchOn() { this.switched = true; } public void switchOff() { this.switched = false; } }
Je to jednoduchá trieda, ktorá poskytuje návrh, ktorým môžeme vytvoriť hocikoľko lámp. A aj keby sme vytvorili 2 lampy a obe by mali switched nastavené na true, tak stále by to boli 2 rôzne objekty/inštancie, pretože by odkazovali na iné miesto v pamäti.
Záver
V ďalších epizodách si prejdeme základné pojmy z OOP – dedenie, abstraktná trieda, rozhranie a polymorfizmus. Sústredíme sa na to, prečo to prináša také výhody, že je to najviac rozšírená paradigma.
Užitočné odkazy
Jakubova hra, ktorá učí základné koncepty OOP
Stará dobrá Wiki
OOP pre 6 ročných