Létrehozása és interfészt használ - Delphi forrásból gyik

Interfészek nagy szerepet játszanak a technológia a COM (Component Object Model - Component Object Model), CORBA (Common Object Request Broker Architecture - építészet iroda köteles megosztott objektumok), valamint a kapcsolódó távoli hozzáférési technológiák, azaz objektum hozzáférési technológiák található .. (és működése) a másik gépen. A fő feladat -, hogy leírja a tulajdonságokat, metódusokat és eseményeket a távoli objektum szempontjából az ügyfél gép, azaz felhasznált a fejlesztés kliens alkalmazás programozási nyelv ... Interfészekkel kliens alkalmazás hozzáfér a távoli objektum, mintha a saját objektumot.

Tárgy felület meglehetősen kiterjedt és érdekes. Ez a fejezet csak a legfontosabb általános információkat a felületeket. Csökkentése ebben a témában egy-egy fejezetet az osztályok nem véletlen, hogy van. Hogy. A felület egy üres osztályt, azaz a. E. osztály hirdetett, de nem dekódolható tulajdonságok és módszerek.

Az interfészek egy bizonyos típusú esemény leírását. Nyilvánították őket a fenntartott szó felületen. Például:

Ellentétben az osztály interfész nem tartalmazhat mezőket, és ezért nyilvánította tulajdonságok szakaszában írni és olvasni csak metódusokat. Minden tag kijelentette, a felületen elhelyezett egyetlen nyilvános részén. A módszerek nem lehet absztrakt (abstract), virtuális (virtuális), a dinamikus (dinamikus), vagy átfedő (felülírás). Interfészek nem lehet konstruktorok és a destruktor, t. Hogy. A leírt módszerek közülük megvalósítani csak keretében azok támogató osztályok, amelyek úgynevezett interfész.

Ellentétben a hagyományos osztály interfész osztály lehet több, mint egy szülő interfész:

Mindenesetre, az interfész megvalósítása osztály szükséges leírni a megfelelő interfész módszereket. Ha például kijelentette interfész

használ, és a felület osztály

végrehajtási fejezetében kell határoznia a végrehajtás módszereit:

Most, akkor állapítsa meg egy interfész, az osztály objektum TPainter, használja azt, hogy dolgozzon egy kör és egy négyzet:

Ez hiba lenne: a fordító szükséges beszúrni módszerek leírását és CirclePaint RectPaint.

Csakúgy, mint az összes osztály Object Pascal generálódnak egy szülő TObject minden wrapper osztályok jönnek létre egy közös őstől TInterfacedObject. Ez őse képes lefoglalni memória interfész objektumok, és használja a globális interfész lunknow:

Ha az előző példában TPainter osztályú írták le, mint a következők:

a fordító lenne szükség, hogy leírja a hiányzó módszereket Queryinterface, _Add És _Release osztály TInterfacedObject. FRef Count területén ebben az osztályban a hívás számláló interface objektum, és használja az elfogadott Windows rendszer: minden alkalommal, amikor az Add interface módszer IUnknow számláló értéke eggyel nő minden alkalommal a Release - egység alaphelyzetbe. Ha az érték ezen a területen lesz egyenlő 0, a felület objektum megszűnik, és felszabadul az összes memóriát.

Ha a felület kívánják használni a COM / DCOM vagy CORBA technológiák, meg kell azokat a módszereket és stdcall irányelv vagy (az automatizálási objektum) safecall

Interfész tárgyakat lehet használni, mint típus cast operátor használja a felületet:

Szembesülve egy ilyen hozzárendelés, a fordító kódot állít elő, amellyel az úgynevezett Queryinterface interfész módszer IUnknow követelve a visszatérés linket iPaint felület. Ha az objektum nem támogatja a megadott csatoló, kivétel történik.

Interfészek használatra tervezett távoli helyszíneken kell ellátni globálisan egyedi azonosítót (GUID). Például:

Globálisan egyedi azonosítók segítségével létrehozott egy speciális technológiával, amely garantálja elhanyagolható a valószínűsége, hogy két guid mérkőzés. Ez a technológia a Windows 32: Ahhoz, hogy a GUID az újonnan létrehozott felület Delphi, nyomja meg a Ctrl + Shift + G Ahhoz, hogy működjön együtt a guid a System egység bejelenti az alábbi típusok:

A programozó állapítsa gépelt állandók írja tguid, például:

guid állandók helyett fel lehet használni a felület nevét hívás esetén szubrutinok. Például, a következő két azonos kezelés:

Használja a fenntartott szó végre a programozó ruházhat át vagyon egy osztály interfész adatokat. Ezt a tulajdonságot kell egy fajta interfész vagy osztály. Ha az ingatlan egy interfész típusú, a felület nevét kell megadni a szülő osztályban lista mintha interfész osztály:

Megjegyzés: ebben a példában TMyciass osztály nem egy felület, azaz az osztályt, amelybe módszerekkel hajtják végre a P1 és P2 ... Azonban, ha kiveszed a meghatározás az engedélyezett ingatlan Mylnterface, ez lesz a felület, és le kell írni módszerek IMylnterface felület.

Meghatalmazott tulajdonság szükségszerűen része az olvasási. Ha ez egy osztály, az osztály, amelyben kijelentette, nem lehet más, engedéllyel rendelkező ingatlan.