Objekty
Probrali jsme tři klíčové vlastnosti objektů. Jsou jimi:
Shrnutí
Terminologie může být poněkud matoucí. V následujícím textu používám pojem třída
pro označení věcí deklarovaných v programu tímto způsobem: type TVec = object ...
.
Rozdíl mezi klíčovými slovy object
a class
je popsán například zde (kapitola 5 Objects a 6 Classes).
Následující odstavce se odkazují na výše zmíněný ilustrativní příklad.
Dědičnost
- - umožňuje znovuvyužití existující třídy. Pokud máme např. třídu
TZvire
, můžeme pomocí:TPes = object (TZvire)
deklarovat novou třídu, která dědí všechny metody a atributy dostupné ve tříděTZvire
. - - novou třídu můžeme specializovat tím, že do ní přidáme něco navíc (nové atributy, nebo metody)
- - v nové třídě můžeme také reimplementovat existující metody původní třídy (viz. Polymorfismus).
- - do ukazatele na původní typ
TZvire
můžeme vždy uložit ukazatel na typ, který od něj dědí (TPes
). Obráceně to nejde - díky tomu, že typ ukazatele jeTPes
, má program právo očekávat na dané adrese speciální metody třídyTPes
, které nemusí v původní tříděTZvire
existovat.
Zapouzdření
- - třída obsahuje atributy a metody, které spolu logicky souvisí
- - existují klíčová slova, která specifikují, odkud je možné
přístupovat (přes operátor "
.
" ) k metodám a atributům dané třídy (např.TZvire
):- public - odkudkoliv
- protected - pouze z potomků třídy
TZvire
- private - pouze z metod třídy
TZvire
- - se zbytkem programu třídu spojuje takzvané rozhraní.
Jde zpravidla o několik metod, pomocí kterých je možné měnit stav třídy
(např. metody
push
apop
ve třídě, která implementuje zásobník). Metody, které patří do rozhraní jsou vždy deklarovány v sekcipublic
.
Polymorfismus
- - je vlastnost objektů, která umožǔje v potomcích nějaké základní třídy změnit implementaci
nějaké metody. Příklad:
Základní třída
TZvire
má metoduozviSe
. Každá třída, která je potomkem této třídy implementujeozviSe
jinak (TPes
štěká,TKocka
mňouká, atd.) - - každá metoda, kterou chceme tímto způsobem používat, musí být označena klíčovým slovem
virtual
- - pokud chceme zavolat původní metodu základní třídy, používáme k tomu klíčové slovo
inherited
Noemova archa
Kdo to dočetl až sem, zaslouží si odměnu v podobě loutkového videoklipu.