Programování v prostředí Borland Delphi RNDr. Jaroslav PELIKÁN, Ph.D. katedra informačních technologií Fakulta informatiky Masarykovy univerzity v Brně Botanická 68a, 602 00 BRNO : +420 - 549 495 751 E-mail: pelikan@fi.muni.cz http://www.fi.muni.cz/usr/pelikan
Literatura Teixeira, S. – Pacheco, X.: Mistrovství v Delphi 6, Computer Press 2002. Lischner, R.: Delphi v kostce, Computer Press 2000. 03/01/2019
OOP OOP (Object Oriented Programming) je založeno na myšlence, že program provádí jisté akce nad jistými objekty, které reprezentují data dovoluje vytváření dále rozšiřitelných (otevře-ných) systémů Pro umožnění objektově orientovaného návr-hu poskytují dnešní vývojová prostředí spe-ciální datové typy: objektový typ (object): Turbo Pascal 5.0 a vyšší třída (class): Delphi, C++, Java, C# 03/01/2019
Datový typ třída – class (1) Typ definovaný uživatelem Charakterizuje vlastnosti a chování objektů Obsahuje (může obsahovat): datové položky (data fields): proměnné uchovávající interní data třídy metody (methods): procedury a funkce reprezentující akce, které je možné s objektem provádět existují dva speciální typy metod: konstruktor (constructor): vytváří instanci třídy (objekt) destruktor (destructor): uvolňuje paměť alokovanou objektem 03/01/2019
Datový typ třída – class (2) vlastnosti (properties): definují atributy třídy (podobně jako datové položky) čtení i změna hodnoty vlastnosti může být spojena s další specifickou akcí (např. s vyvoláním metody) změna jejich hodnoty může být prováděna i v době návrhu aplikace (nikoliv jen za běhu aplikace) události (events): speciální typy vlastností umožňují definovat metodu, která bude automaticky vyvolána jako reakce na nějakou událost (např. stisk-nutí klávesy, pohyb myší, stisknutí tlačítka myši) 03/01/2019
Datový typ třída – class (3) Na základě definovaného typu třída lze de-klarovat proměnnou sloužící ke zpřístupnění tzv. objektu Objekt (object): instance třídy jedná se o proměnnou datového typu definova-ného třídou Datový typ třída slouží i k programovému po-pisu tzv. komponent, které umožňují podstat-ným způsobem zjednodušit návrh aplikace 03/01/2019
Datový typ třída – class (4) Příklad: type TDatum = class Den,Mesic:Byte; Rok:Word; procedure SetDatum(D,M:Byte; R:Word); function GetDatum:string; function JePrestupnyRok:Boolean; end; var Datum:TDatum; Proměnná Datum slouží k uchování odkazu (ukazatele) na místo v paměti, kde bude ulo-žen objekt 03/01/2019
Datový typ třída – class (5) Vytvoření objektu se provádí pomocí kons-truktoru begin Datum:=TDatum.Create; (* Možné, ale není doporučováno Datum.Den:=5; Datum.Mesic:=10; Datum.Rok:=2000; *) Datum.SetDatum(5,10,2000); If Datum.JePrestupnyRok then ShowMessage(’Rok je přestupný’) else ShowMessage(’Rok není přestupný’); Datum.Free; end. 03/01/2019
Principy OOP (1) Objektově orientované programování vychá-zí ze tří základních principů (rysů): zapouzdření (encapsulation): dovoluje skrýt interní data (metody) třídy tak, aby byla přístupná pouze prostřednictvím volání metody dědičnost (inheritance): umožňuje definovat třídu jako potomka jiné třídy potomek dědí všechny entity definované na úrovni svého předchůdce potomek může definovat další nové entity, popř. přepsat (předefinovat) entity již existující 03/01/2019
Principy OOP (2) příklady: type TDatum2 = class (TDatum) procedure PrictiDen; procedure OdectiDen; private function PocetDniVMesici:byte; end; Tiskárna Continuous flow Jehličková Laserová DOD Inkoustová 9 24 03/01/2019
Principy OOP (3) platí „jednosměrná“ typová kompatibilita: objekt předchůdce := objekt následníka příklad: var Datum: TDatum; Datum2: TDatum2; begin Datum:=TDatum.Create; Datum2:=TDatum2.Create; Datum:=Datum2; (* Přiřazení tvaru Datum2:=Datum; provést nelze *) Datum.Free; Datum2.Free; end. 03/01/2019
Principy OOP (4) polymorfismus (polymorphism): poskytuje možnost, aby akce uskutečňované nad růz-nými objekty byly pojmenovány stejně, přičemž ale jejich realizace je různá (podle toho, nad kterým objektem se provádějí) polymorfismus je realizován pomocí speciálních metod: virtuální metody dynamické metody 03/01/2019
Borland Delphi Vývojové prostředí pro MS-Windows Verze 1.0 je určena pro Windows 3.x a dovo-luje vytváření pouze 16bitových aplikací Verze 2.0 a vyšší jsou určeny již pro Win-dows 95 (98, NT, 2000) a poskytují možnost vývoje 32bitových aplikací Jako programovací jazyk je v Delphi použit ObjectPascal, který vychází z BP 7.0 03/01/2019
Výhody MS-Windows Možnost multitaskingu a multithreadingu Možnost Clipboardu, DDE a OLE Více dostupné operační paměti Strojově nezávislá grafika Přímá podpora jednotlivých zařízení (tiskárna, myš, ...) Podpora pro vytváření menu, ikon, bitových map, dialogových rámců atd. 03/01/2019
Program pro MS-Windows (1) Operační systém MS-Windows je založen na událostmi řízené architektuře (event-driven architecture) S veškerými uživatelskými vstupy (z kláves-nice, myši, ...) se zachází jako s událostmi Pro každou událost Windows generují zprávu (message). Např. při stisku levého tlačítka myši je generována zpráva wm_LButtonDown Těchto zpráv je ve Windows cca 300 03/01/2019
Program pro MS-Windows (2) Pro vývoj programů MS-Windows 95 (98, Me, NT, 2000, XP) poskytují tzv. Win32API (Windows 32 Application Programming Interface) Win32API obsahuje více než 1000 funkcí, které je možné při tvorbě programu využít Vzhledem k velkému množství těchto funkcí a velkému počtu parametrů, které vyžadují, je (byla) tvorba programu poměrně náročná 03/01/2019
Visual Component Library (1) VCL (Visual Component Library) je objekto-vě orientovaná knihovna zapsaná v Object-Pascalu, která poskytuje hierarchii tříd odpo-vídající prostředí MS-Windows V rámci VCL jsou formou tříd popsány jed-notlivé standardní prvky používané ve Win-dows (Button, Menu, CheckBox, EditBox atd.) společně s jejich vizuální reprezentací pomocí komponent 03/01/2019
Visual Component Library (2) Umožňuje podstatným způsobem zjednodušit vývoj aplikací pro MS-Windows Tato kombinace dovoluje programátorovi: provádět mnoho standardních operací automa-ticky a vyhnout se tak v programech dlouhým zápisům vytvářet program částečně vizuální formou: umístěním patřičné komponenty do nově vznikajícího programu 03/01/2019
Visual Component Library (3) nastavením vlastností této komponenty napsáním obslužných metod, které budou vyvolány při vzniku konkrétních událostí (příchodu zprávy) Pozor! Pomocí VCL není možné řešit úplně všechno a někdy bývá stále nutné přistoupit přímo k volání funkce Win32API 03/01/2019
Visual Component Library (4) Každá vizuální komponenta je ve VCL po-psána jako třída (class) se svými: vlastnostmi (property): atributy tříd, které určují stav objektu (pozice, vzhled, chování atd.) metodami: procedury a funkce spřažené s objek-tem, které je možné volat za účelem provedení příslušné akce událostmi: speciální druh vlastnosti, která v prů-běhu programu reprezentuje výskyt určité (vět-šinou uživatelské) akce 03/01/2019