Čo je objektovo orientované programovanie?
Objektovo orientované programovanie je spôsob programovania, pri ktorom sa navrhujú a používajú objekty.
S objektmi sme pracovali od začiatku - používali sme objekty:
- Form (formulár), Button (tlačidlo), Image (obrázok), Canvas (grafická plocha) sú objekty;
- pre prácu so súbormi - tzv. súborové premenné typu ifstream, ofstream.
V OOP sa stretneme s pojmami:
- objekt ... spojenie údajov a funkcií, ktoré s údajmi pracujú (pre porovnanie: v štruktúrach sme spojili premenné, ktoré navzájom súviseli - v objektoch navyše k týmto premenným "pribalíme" funkcie):
- objektová trieda (anglicky class) ... v OOP sa nehovorí, že "premenná f je typu ifstream", ale povie sa, že "objekt f je z triedy ifstream":
Dnes sa naučíme definovať vlastné objektové triedy a pochopíme prvé jednoduché mechanizmy OOP.
Prvá trieda
Navrhneme vlastnú objektovú triedu - TZlomok. Definovanie tried pripomína definovanie štruktúr (popritom ukazujeme, akoby vyzerala neobjektová verzia):
objektovo:
klasicky - neobjektovo:
class TZlomok {
public:
int C, M; void Nastav(int nC, int nM); void Vypis(int X, int Y); float Hodnota(); };
struct TZlomok { int C, M; };
TZlomok Zlomok(int nC, int nM); void Vypis(int X, int Y, TZlomok Z); float Hodnota(TZlomok Z);
Zadefinovali sme nový typ TZlomok, ktorý obsahuje dve položky (v literatúre aj - atribúty objektu, stavové premenné, po anglicky: fields): C - čitateľ zlomku M - menovateľ zlomku
Všimnime si, že v definícii triedy TZlomok sú navyše uvedené hlavičky funkcií, ktoré budú s údajmi objektu pracovať: Nastav - nastaví hodnotu zlomku; Vypis - vypíše zlomok na obrazovku; Hodnota - vráti hodnotu zlomku ako reálne číslo.
V OOP sa tieto funkcie nazývajú metódy (nie funkcia Výpis, ale metóda Výpis - v literatúre bývajú označované aj ako členské funkcie, po anglicky member functions). Definícii triedy zvykne obsahovať iba hlavičky metód (názov metódy a parametre) - telá metód sa programujú mimo definície triedy.
Objekty používame podobne, ako štruktúrované premenné:
TZlomok z, n; // z, n sú objekty triedy TZlomok z.C=1; z.M=10; n.C=0; n.M=1; z n
C: 1
M: 10
Nastav Vypis Hodnota