Trieda (programovanie)

Trieda je základným stavebným prvkom v objektovo orientovanom programovaní. Logicky spája dve časti, ktoré boli predtým chápané osamote: údaje a operácie nad nimi do jedného celku. Trieda vychádza z pozorovaní reálneho sveta, v ktorom existujú skupiny objektov s určitými vlastnosťami, pričom tieto vlastnosti menia práve tieto objekty.

Trieda je teda balíček, ktorý pozostáva z metadát popisujúcich chovanie triedy vo výpočtovom prostredí. Tieto metadáta predstavujú návod na vytvorenie inštancie – jedného exemplára triedy. Ak použijeme prirovnanie z reálneho sveta, tak trieda predstavuje architektonický plán budovy (popisuje rozmery, tvar, použitý materiál atď) a inštancia je jedna konkrétna budova, postavená podľa tohto plánu.

Tieto popisné metadáta sú len formálnym vyjadrením toho, čo trieda predstavuje (napríklad vo forme zdrojového kódu). Po preložení prekladačom, resp. interpreterom jazyka sa z týchto informácií vytvára údajový typ – popis triedy v rámci výpočtového prostredia.

Základným prvkom triedy sú údaje, s ktorými pracuje – niekedy sa označujú ako stavové údaje, pretože jednoznačne určujú stav objektu v každom čase jeho existencie. Druhým prvkom sú operácie nad týmito údajmi, ktoré definujú možné operácie nad objektom a predstavujú rozhranie s prostredím.

Štruktúra upraviť

 
UML notácia triedy

Každý element triedy (údaje aj metódy) musí mať definovaný modifikátor prístupu, ktorý určuje, kto má k danému elementu povolený prístup, pričom platí, že každá trieda má prístup ku všetkým vlastným elementom. Základné modifikátory sú:

Prístupové modifikátory
Názov UML prefix Prístup z oddedenej triedy Prístup z vonkajšej triedy
public + áno áno
protected # áno nie
private - nie nie

V ďalšom texte budeme pre označenie prístupu používať UML notáciu uvedenú v tabuľke. Napríklad pre protected premennú typu int môžeme zapísať nasledovným spôsobom:

 # x : int

Po vytvorení údajového typu prekladač definuje ešte špeciálnu premennú, ktorá reprezentuje identitu objektu. Táto premenná býva označovaná ako this, self a podobne a obsahuje referenciu alebo ukazovateľ na samého seba. Táto premenná je vždy definovaná ako private.

Príklad

Jednoduchým príkladom je trieda lampa. Lampu v závislosti na kontexte môžeme modelovať napríklad ako triedu, ktorá má jednu stavovú premennú (_IsTurnedOn), ktorá určuje, či je lampa zapnutá, alebo nie. Pretože trieda potrebuje aj rozhranie, pomocou ktorého s ním bude okolité prostredie komunikovať, definujme operácie zapnutia (TurnOn) a vypnutia (TurnOff). Okrem toho je vhodné mať možnosť zistiť, v akom je lampa stave – tento stav vieme zistiť pomocou operácie isTurnedOn.

Dedičnosť upraviť

Objektovo orientované programovanie umožňuje mechanizmus dedičnosti tzn. modelovanie hierarchií na základe podobnosti vlastností rovnako, ako v reálnom svete. Táto vlastnosť je modelovaná hierachickými vzťahmi medzi triedami.