ПредишенСледващото

Интерфейси играят важна роля в технологията на COM (Component Object Model - Компонент обектния модел), CORBA (Обща цел Искане Брокер архитектура - архитектура брокери изискват споделени обекти) и свързаните с тях технологии за отдалечен достъп, т.е., разположени технологии за достъп обект .. (и работа) на друга машина. Тяхната основна задача - да се опише свойствата, методите и събитията от отдалечени обекти по отношение на машината на клиента, т.е. използва в разработването на клиентско приложение език за програмиране ... Със заявление интерфейси клиент получава достъп до отдалечени обекти, като че ли свой собствен обект.

Тема интерфейс е доста обширна и интересно. Тази глава предоставя само най-обща информация за интерфейсите. Намаляване на този въпрос в една глава с класове не случайно, разбира се. Да. Интерфейсът е празен клас, т.е.. Д. А клас, която прогласява, но не и разшифрован свойства и методи.

Интерфейси са определен тип описание събитие. Те са обявени със запазена дума интерфейс. Например:

За разлика от клас интерфейс не може да съдържа полета и поради това той обяви, имоти в секции за четене и запис може да се позове само методи. Всички членове, обявени в интерфейса са поставени в един публичен раздел. Методите не могат да бъдат абстрактни (абстрактни), виртуални (виртуална), динамични (динамичен) или припокриване (замяна). Интерфейси не могат да имат конструктори и деструктори, т. За. Методите, описани в тях се реализира само в рамките на техните поддържащи класове, които се наричат ​​интерфейс.

За разлика от конвенционалните клас интерфейс клас може да има повече от един родител интерфейс:

Във всеки случай, в рамките на изпълнението на класа интерфейс е необходимо да се опише съответните методи на интерфейса. Ако, например, обявен интерфейс

и използва своя интерфейс клас

в раздела за изпълнение следва да уточни методите за изпълнение:

Сега можете да декларирате интерфейс, клас обект TPainter на, за да го използвате, за да се направи кръг и квадрат:

Би било грешка: компилаторът изисква да въведете описание на методите и CirclePaint RectPaint.

Точно както всички класове в Object Pascal се генерират от самотен родител TObject, всички класове обвиващи се генерират от общ прародител TInterfacedObject. Този предшественик е в състояние да разпредели памет за интерфейс обекти и използва глобалната интерфейс lunknow:

Ако в предишния пример TPainter клас е описан, както следва:

компилаторът ще изисква да се опише липсващите методи Queryinterface, _Add И _Release клас TInterfacedObject. Fref граф поле на този клас е интерфейс обект контра повикване и използва приета в схема за Windows: всеки път, когато методът за добавяне интерфейс IUnknow брояч се увеличава с всеки път, когато на излизане - единица е сменена с нова. Когато стойността на това поле става равна на 0, обект на интерфейса се разрушава и се освобождава всичката памет.

Ако интерфейсът е предназначен да бъде използван в COM / DCOM или CORBA технологии, трябва да описва методите с stdcall директива, или (за обекта на автоматизация) safecall

За интерфейс обекти могат да бъдат използвани като вид отливка оператор за използване на интерфейса:

При наличието на такава задача, компилаторът ще генерира код, с който се нарича метод Queryinterface интерфейс IUnknow взискателни връзката връщане към IPaint интерфейс. Ако обектът не поддържа определен интерфейс, по изключение се случи.

Интерфейси, предназначени за използване в отдалечени места трябва да бъдат снабдени с глобално уникален идентификатор (GUID). Например:

В световен мащаб уникални идентификатори са създадени с помощта на специална технология, гарантираща незначителна вероятност, че два GUID мач. Тази технология е включена в Windows 32: да се РЪКОВОДСТВО за новосъздадената интерфейс в Делфи, просто натиснете Ctrl + Shift + G. За да работите с GUID в системния блок обяви от следните типове:

Програмистът може да обяви печатни константи въведете tguid, например:

GUID константи могат да се използват вместо Имената на интерфейсите, когато се обаждате подпрограми. Например, следните два са идентични лечение:

Използвайте запазени думата изпълнява програмист може да делегира на всяко имущество на класа интерфейс на пълномощията. Този имот трябва да има вид на интерфейса или клас. Ако имотът е тип интерфейс, името на интерфейса, трябва да бъдат посочени в списъка на родител клас, като че ли клас интерфейс:

Забележка: в този пример TMyciass клас не е интерфейс, т.е., класа, в който се изпълняват методи P1 и P2 ... Все пак, ако го махна от определението за оторизиран имот Mylnterface, тя ще се превърне в интерфейса, както и да бъдат описани методи IMylnterface интерфейс.

Оторизиран имот задължително трябва да бъде част от четене. Ако това е вид клас, в която е обявена, не може да има други упълномощени свойства.

Подкрепете проекта - споделете линка, благодаря!