Interfețe în delphi

De exemplu, ca interfața de mai jos poate fi declarat:

Punerea în aplicare a unei interfețe poate fi doar în clasă:

TTint = Clasa (TInterfacedObject, ITint) Procedura MyMsg; Procedura ITint.My_Msg = MyMsg; destructor distruge; suprascrie; se încheie;

Var Form1: TForm1; Nuanță: ITint; T: TTint; Procedura TTint.MyMsg; începe MessageBox (0, 'test', 'mesaj', 0); se încheie;

TTint.Destroy destructor; începe moștenită; MessageBox (0, 'Free', zero, 0); se încheie;

în primul rând aveți nevoie pentru a obține obiectul clasei corespunzătoare, utilizând, de exemplu, următorul cod pentru a crea o interfață:

Sau mai pe scurt: Tint: = TTint.Create ca ITint; atunci puteți apela metodele interfeței: Tint.My_Msg;

Utilizarea T.Free cauza o eroare, deoarece clasa va fi eliberată atunci când nu mai este necesar în interfețele este.

Aderarea la forme de interfață

Folosind mecanismul de interfață cu diferite componente software pot realiza aceeași funcționalitate. Este suficient pentru a pune în aplicare interfața componentei, și în modulul de asteptare pentru a verifica disponibilitatea acestuia. În exemplul următor, interfața este descrisă într-un modul separat, și sub formă de clasă dezvoltată moștenește și implementează:

Unitate UNIT2; tip interfață IMessageInterface = interfață [ ''] Procedura Msg_Name; se încheie;

Clasa formă Modulul TForm3 moștenește o interfață:

Unitate Unit3; interfata de tip TForm3 = clasa (TForm, IMessageInterface) procedură privată Msg_Name; se încheie; var Form3: TForm3; Procedura de implementare a TForm3.Msg_Name; începe ShowMessage ( 'Form3'); se încheie;

Acum puteți apela metodele de interfață de la alte module în care vizibil forma Form3. De exemplu, făcând clic pe butonul din Unit1 modulul (Form1):

Procedura TForm1.Button2Click (Expeditor: TObject); var IMI: IMessageInterface; începe dacă este atribuit (Form3) și Form3.GetInterface (IMessageInterface, IMI), apoi IMI.Msg_Name; se încheie;

Adăugarea interfeței altor componente de aplicare pot fi cauza uniform metodele lor.

In exemplul de mai sus ar putea fi atașat pentru a forma nu una, ci mai multe interfețe și pot provoca o alta și metodele lor. rămân disponibile în plus proprietăți și metode formează o clasă moștenită din TForm. Din păcate, este posibilă numai accesul la obiect forma dezvoltată de noi din aceeași aplicație, în cazul în care obiectul este creat.

Obiecte com

Spre deosebire de cazul considerat în exemplul anterior, COM-obiect expune funcționalitatea acestuia prin interfețe numai mecanism. Acest lucru asigură o flexibilitate în comunicarea aplicațiilor client cu toate COM-obiecte.

Fiecare obiect este pus în aplicare într-un server: în bibliotecă dinamic link-ul; într-o aplicație executabil separat pe același calculator; cod de la distanță care rulează pe un computer diferit de computerul client. Serverul conține metode de cod obiect și interfețe de date obiect în timp ce este activ. Din punct de vedere al obiectului client orice server arata exact la fel, și metodele de acces la acesta prin indicatorul de interfață.

Obiectul este necesar (în caz contrar nu este COM-obiect) au interfata IUnknown. într-un protocol care include trei metode: QueryInterface - cerere de interfață indicatorul dorit, AddRef - creșterea numărului de referință, lansare - scădere contra. Obiectele menține numărul de referință pentru a ști când este posibil să se finalizeze activitatea (contra = 0 - obiectul nu are clienți). Toate celelalte interfețe sunt moștenitorii IUnknown, ceea ce înseamnă a avea un pointer la orice interfata obiect, clientul poate obține un punct de intrare într-un alt el are nevoie de interfață.

Fiecare COM-obiect este o instanta a unei clase, iar fiecare clasă poate avea un GUID - un identificator de clasă (CLSID). Este necesar, în principal la biblioteca COM ar putea găsi obiecte necesare bazate pe server (registru) și de a crea o instanță (obiect). În conformitate cu clasa, în acest caz, se referă la o realizare concretă a unui set de interfețe. Este clar că diferitele clase pot avea exact aceeași interfață.

Cele mai multe firme nu dezvolta propriile lor interfețe, dar folosesc cele existente. De exemplu, interfața IDispatch pentru aplicații de automatizare.

articole similare