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
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ú:
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ť
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.