A fejlesztési felület


Rövid áttekintés

Ez a szekció a Delphi fejlesztési felületét és programfejlesztési koncepcióját mutatja be. Itt kerülnek meghatározásra olyan elnevezések is, amelyek a dokumentum további részében magyarázat nélkül szerepelnek.

Gyors referencia:

 


A fejlesztői rendszerről általában

Ez a tanulmány azt a célt tűzte ki maga, hogy a nyelvet, az új nyelvi elemeket mutassa be. Nem tehetjük azonban ezt meg anélkül, hogy nagy vonalakban át ne tekintenénk a Delphi által nyújtott fejlesztési rendszert.

Ez még inkább igaz a Delphire, hiszen - mint azt már a bevezetőben is említettem - a Delphi célszoftver. Tervezőinek és létrehozóinak célja a Microsoft Windows különböző verziói alatt és alá történő könnyű, gyors, megbízható programok (alkalmazások) fejlesztése, ezeken belül is kiemelkedő hangsúlyt kapott az adatbázis alkalmazások készítésének elősegítése.

Első alapszempont volt, hogy a programozónak minél kevesebbet kelljen törődnie azzal, hogy a Windows alacsony szinten hogyan valósítja meg a problémát (aki fejlesztett Windows alá kizárólag az API segítségével, tudhatja, hogy a programozó energiáinak nagy részét az alacsonyszintű kommunikáció kialakítása köti le), de továbbra is lehetőséget adjon ennek használatára, ha a cél ezt kívánja meg.

A Delphi ezt két szinten oldotta meg. Egyrészt egy eljáráskészletet biztosít az API függvényeinek minél kultúráltabb elérésére, másrészt egy nagyon gondosan és átgondoltan felépített osztály-hierarchiát ad eszközül, amelynek köszönhetően a programozónak az az érzete támad, mintha a Windows-t valóban objektum orientáltan alakították volna ki!

 


A komponensek és a komponens hierarchia

A Delphi megtervezésekor az egyik jelszó a következő volt: Legyen látható tervezési időben, ami csak lehet!

Ennek érdekében a vizuális tervezés és a kódgenerálás szervesen összekapcsolódott, a párbeszédpanelek (újabb kifejezéssel űrlapok) tervezése integrált része lett a rendszernek. (Régebben külön segédprogramok (pl. Workshop) használatával történt meg a vizuális tervezés, s a kód és a párbeszédelemek összekapcsolása és integritásának a fenntartása a programozó feladata volt. Ennek a megoldásnak a másik gyengéje, hogy a párbeszéd elemek tulajdonságai és viselkedése szinte kizárólag fordítási időben volt látható, így a fejlesztést aránytalanul sok fordítás nehezítette.

A fent említett összerendelésnek a megvalósítására vezette be a Delphi a komponens fogalmát. A komponens egy osztály, amely valamely látható (pl. párbeszédpanel vezérlőelemek) vagy nem látható (pl. adatbázis elemek, nyomtató, rendszereszközök, kivételek, sőt maga az alkalmazás) erőforrás interface-ét valósítja meg.

A komponens Borland féle definíciói:

Ez utóbbi definícióban elhangzott a plug-in kifejezés, amely a komponens architektúra igazi erejét adja. Egy - jól megírt - komponens teljes mértékben integrálódik a Delphi rendszerébe, az eredeti komponensekkel egyenrangú alkotóeleme lesz: megjelenik a komponens palettán, felrakhatom az űrlapra, az Object Inspectorban beállíthatom tervezési időben a tulajdonságait. Tehát a Delphi komponens-hierarchiája egy kétirányú eszköz a gyors fejlesztésre.

 


A vezérlés egysége: az űrlap (Form)

Mint minden Windows program, a Delphi alkalmazás is párbeszédpanelekre és ablakokra, vagy ahogy újabban együttesen nevezik, űrlapokra épül. (Itt megjegyzendő, hogy lehet a Delphiben konzol-alkalmazást is írni - egy ablakos, szöveges program -, de igazi ereje nem ebben rejlik, tehát ezzel részletesebben nem foglalkozom.)

Minden űrlap a TForm komponensre, vagy a Delphi 2-ben ennek egy leszármazottjára (virtuális űrlap öröklés) épül. Az űrlap által tartalmazott párbeszédelemek ennek a leszármazottnak adatmezői, míg az eseménykezelő eljárások ennek tagfüggvényei. Minden eseménykezelő eljárásnak van egy Sender : TObject paramétere, amely az eseményt generáló objektumot tartalmazza. Erre azért van szükség, mert az űrlap vezérlőelemei által keltett eseményeket nem a vezérlőelemek, hanem az űrlap egy eljárása kezeli le. Másrészt ez lehetőséget ad több vezérlőelem egy bizonyos eseményének vagy - ritkábban - egy vezérlőelem több eseményének egyazon eljárással történő lekezelése.

Az alábbi példa egy űrlap osztályának szerkezetét mutatja be:

 

type
TFDiskList = class(TForm)
OKBtn: TBitBtn; // Vezérlőelemek
CancelBtn: TBitBtn;
HelpBtn: TBitBtn;
LBDisks: TListBox;
 
//Eseménykezelő eljárások
procedure LBDisksDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
procedure LBDisksDblClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure LBDisksClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
diskpath : string[200];
end;

Az űrlapok és a unitok kapcsolata

A Delphiben az űrlapok és a fordítási egységek (unitok) között szoros kapcsolat van: minden űrlaphoz pontosan egy unit tartozik és egy unithoz legfeljebb egy űrlap tartozhat. Ez azt jelenti, hogy nincs lehetőségünk egy nagy űrlap eljárásait több unitra bontani, s arra sincs lehetőség, hogy két szervesen összetartozó párbeszédpanelt egy unitba tegyünk. Erre az automatikus kódgenerálás és kódszinkronizálás miatt van szükség, de ennek a nagyon szigorú kötésnek a következménye, hogy az űrlapot között globális változókon keresztül kell lebonyolítani az adatkommunikációt.


A RAD és az alkalmazás generátor

A RAD (Rapid Application Development; gyors alkalmazásfejlesztés) egy komplex fogalom, amely a hatékony programfejlesztés különböző tényezőit foglalja magába. Az alábbiakban áttekintést nyújtok a RAD elemekről és ezek Delphi-beli megvalósításáról:

 


Az integrált debuger és egyéb nyomkövetési eszközök

 A Delphi széleskörű hibakeresési lehetőségeket nyújt. Az integrált debuger segítségével akár soronként követhetjük nyomon a programunk futását. Az elhelyezhető töréspontokat számlálóval vagy akár logikai feltétellel is elláthatjuk. A Watch ablakban nyomon követhetjük a változók értékét, de lehetőség van a hívási verem, a CPU regisztereinek és a Delphi 2-ben a taszkok állapotának megfigyelésére is. Az objektum-tallózóval nyomon követhetjük az öröklődési vonalat, az egyes metódusok vagy adatmezők kódbeli referenciáit is megtekinthetjük. A Delphi 2 ezenkívül rendelkezik egy adatbázis-tallózóval, amely segítségével gyorsan áttekinthetjük adatbázisainkat is.


Ami kimaradt

Nagyon hiányzik az editorból egy makrorögzítő, amellyel gyakran használt tevékenységeket automatizálhatnánk.


Történeti áttekintés

A rendszer

Az Object Pascal nyelv

OOP nyelvi elemek

A rendszer

Források, irodalom

A rendszer

Honlap

Történeti áttekintés Módosította: Zahorán Péter (zape@cs.elte.hu), 1999

Az IDE

Az Object Pascal Programnyelv
Módosította: Zahorán Péter (zape@cs.elte.hu), 1999

A nyelv OOP elemei Módosította: Zahorán Péter (zape@cs.elte.hu), 1999

Adatbázis programozás

Egyéb nyelvi eszközök Módosította: Zahorán Péter (zape@cs.elte.hu), 1999

Források, irodalom, Web-helyek

Borító