Úvod do OOP

Č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):
ifstream f; ... premenná f je objekt pre prácu so súborom;
TCanvas * g; ... premenná g predstavuje objekt - grafickú plochu;
* objektová trieda (anglicky class) ... v OOP sa nehovorí, že "premenná f je typu ifstream", ale povie sa, že "objekt f je z triedy ifstream":
ifstream f; ... typ ifstream je objektová trieda;
TCanvas * g; ... typ TCanvas je objektová trieda.

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

C: