Delphi
Základním prvkem aplikace je objekt, který zahrnuje data (klasické datové struktury) a programový kód manipulující s těmito daty (procedury a funkce). OOP by mělo výrazně usnadnit pozdější úpravy a údržbu. Komponentová architektura Delphi podporuje OOP.
Základní principy
- Zapouzdření
- Propojení datových položek navzájem a s kódem programu.
- Dědičnost
- Nové objekty lze vytvářet jako potomky svých předků, od nichž dědí vlastnosti, pouze se přidávají nové.
- Výhody – sdílení kódu, snazší rozšíření o nové funkce a vlastnosti, mnohotvarost.
- Polymorfismus
- Schopnost přizpůsobit chování objektu konkrétní instanci tohoto objektu.
Základní pojmy
- Položka (pole)
- Proměnná obsažená uvnitř objektu.
- Metoda
- Určuje chování objektu, je pojmenovaná procedura či funkce, zapouzdřená, patřící objektu.
- Konstruktor
- Metoda, vytváří danou instanci objektu v paměti (objekty vytvářeny dynamicky).
- Destruktor
- Uvolní paměť alokovanou dané instanci.
- Vlastnost
- Pomocí vlastností přistupujeme k datům obsaženým objektu.
Typy metod
- Statické
- Jsou implicitním typem bez direktivy.
- Odpovídají voláním klasických procedur a funkcí.
- Překladač jim přiřadí prostor v paměti a vyřeší všechny jejich vazby v době překladu.
- Jsou rychlé.
- Není možné jejich předefinování.
- Virtuální
- Mohou být předefinovány.
- Překladač vytváří VMT=virtual method table (slouží k nalezení adresy procedury).
- Až za běhu programu.
- Náročnější na paměť.
- Poměrně rychlé.
- Deklarují se pomocí klíčového slova virtual.
- Dynamické
- Obdobné jako virtuální.
- Překladač vytváří DMT (obsahuje narozdíl od VMT metody deklarované v daném objektu – ne metody předků).
- Mají menší spotřebu paměti.
- Jsou pomalejší.
- Deklarují se pomocí klíčového slova dynamic.
Třídy
Obsahují určitá vnitřní data a určité metody, charakterizují vlastnosti a chování několika velmi podobných objektů. Objekt je skutečný útvar, vztah mezi objektem a třídou je stejný jako mezi proměnnou a datovým typem. V některých jazycích i dřívějších verzích Pascalu se objekt používal k definici třídy, termín instance objektu označoval skutečný objekt. V Delphi pro definici třídy se používá klíčové slovo class.
Přístupová práva k objektům
Formulář má unitu, kde jsou automaticky vytvářeny sekce public (metody a proměnné jsou přístupné odkudkoliv z programu) a private (deklarace přístupná jen v rámci dané unity).
Celkem existují 4 modifikátory:
- private
- Označené atributy a metody nejsou přístupné vně třídy.
- public
- Označené atributy a metody jsou volně přístupné z jakékoliv části programu (ve které je viditelná jejich třída).
- protected
- Částečně chráněné atributy a metody.
- Může k nim přistupovat pouze vlastní třída a všichni její potomci.
- published
- Atributy a metody jsou přístupné nejen za běhu, ale i při tvorbě aplikace.
- Z hlediska aplikace je viditelná stejně jako položka public.
Hierarchie objektu
- TObject (abstraktní) – základní třída, která zajišťuje, že každý odvozený objekt je schopen říci své jméno, typ a zda je potomkem určité tříd.y
- TPersistent (abstraktní, vychází z TObject) – zajišťuje, že objekty mají schopnost zapisovat a číst své vlastnosti.
- TComponent (vychází z TPersistent) – má schopnost vlastnit jiné komponenty, obsahuje téměř všechny komponenty.
- TControl (vychází z TComponent) – odtud dědí komponenty schopnost zobrazovat se a nechat se modifikovat a vlastnost udržování vlastní velikosti a souřadnic na formuláři.
- Komponenty (tzn. tlačítko, memo, stringgrid,…) nejsou odtud odvozovány, ale z 2 podřízených tříd.
- TWinControl (prvky typické pro aplikace Windows – tlačítka, pole, seznamy).
- TGraficControl (grafické komponenty neumožňující vstup – Label, SpeedButton, Bevel).
- Abstraktní třída = není určena pro vytváření objektů (první dvě třídy).