Vizuální programování
Jedná se o způsob návrhu uživatelského rozhraní ve vývojovém prostředí (IDE), kde se objekty/komponenty rozmisťují myší na formuláři. Umožňuje vytváření rozhraní jinak než psaním textu programu.
Objektově orientované programování
Objektově orientované programování (OOP) představuje nový přístup k návrhu a tvorbě programů. Základním prvkem je objekt, který zahrnuje jak data (klasické datové struktury), tak programový kód sloužící k manipulaci s těmito daty (procedury a funkce operující s těmito daty). Má by výrazně usnadnit pozdější úpravy a údržbu. Delphi je založeno na principu objektově orientovaného programování.
Základní vlastnosti
- Zapouzdření (encapsulation)
- Propojení datových položek navzájem s kódem programu
- Dědičnost (inheritance)
- Nové objekty lze vytvářet jako potomky svých předků, od nichž přebírají (dědí) vlastnosti a pouze se přebírají vlastnosti nové
- Výhody:
- Sdílení kódu
- Snazší rozšíření programu o nové vlastnosti/funkce
- Polymorfizmus
- Schopnost přizpůsobit chování objektu konkrétní instanci tohoto objektu
Zálkadní pojmy OOP
- Položka či pole (field)
- Proměnná obsažená uvnitř objektu
- Metoda (method)
- Určuje chování objektu, je pojmenovaná procedura či funkce, zapouzdřená, patřící objektu
- Konstruktor (constructor)
- Metoda, jejíž volání vytváří danou instanci objektu v paměti (objekty jsou vytvářeny dynamicky)
- Destruktor (destructor)
- Uvolní paměť alokovanou dané instanci objektu
- Vlastnost (property)
- Pomocí vlastností přistupujeme k datům obsaženým objektu
Metody OOP
Metody jsou procedury a funkce patřící danému objektu, které určují chování tohoto objektu.
- Statické
- Jsou implicitním typem metod (jsou bez direktivy)
- Odpovídají volání klasických procedur nebo funkcí
- Překladač jim přiřadí prostor v paměti a vyřeší všechny jejich vazby již v době překladu
- Jsou rychlé, ale není možné jejich předefinování
- Virtuální
- Mohou být předefinovány
- Překladač pro ně vytváří VMT tabulku (slouží k nalezení adresy procedury až za běhu programu)
- Jsou náročnější na spotřebu paměti a jejich volání je poměrně rychlé
- Dynamické
- Jsou obdobné jako virtuální
- Vytváří se tabulka DMT (narozdíl od VMT obsahuje pouze ty metody, které jsou deklarovány v daném objektu)
- Jsou méně náročné na spotřebu paměti
- Vyvolání je pomalejší
- V běžných programech není velký praktický rozdíl mezi virtuálními a dynamickými metodami
- Metody
zpráv
- Jsou specifickým typem určeným pro přímou obsluhu zpráv Windows
- Jejich tvorba je náročná na znalosti API (programátorské rozhraní) Windows
Třídy OOP
Obsahuje určitá interní data a určité metody ve formě procedur nebo funkcí. Charakterizuje 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 Delphi se pro definici třídy používá klíčové slovo class
Přístupová práva k objektům
Každý formulář má korespondující unit (zde jsou
automaticky vytvářeny sekce public a
private).
4 modifikátory:
- Private
- Deklarace v sekci jsou přístupné jen v rámci dané unit
- Public
- Deklarace (jak metod tak proměnných) v sekci jsou přístupné odkudkoli z programu (i z jiných units)
- Protected
- Používá se k oznaření částečně chráněné atributy a metody
- Může k nim přistupovat pouze vlastní třída a všichni její potomci
- Published
- Využívá se především při psaní komponent
Hiearchie objektů v Delphi
- 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řídy
- 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)