Интерфейсы

FPC поддерживает интерфейсы. Интерфейсы – это альтернатива множеству проявлений (когда класс имеет множество классов-потомков). Интерфейс основан на множестве методов и свойств. Класс, который реализует интерфейс, обеспечивает все методы, перечисленные в объявлении интерфейса. Нельзя реализовывать только часть интерфейса, все или ничего.

Интерфейсы могут быть, как и классы, упорядочены иерархически. Интерфейс может быть уникально идентирован с помощью GUID (Globally Unique Identifier). Это особенно важно для Windows систем при использовании технологии COM.

Замечания:

  • Интерфейсы доступны только в режимах DELPHI и OBJFPC.
  • Нет спецификаторов видимости. Все члены относятся к public.
  • Свойства интерфейса могут иметь методы только со спецификаторами read и write.
  • Конструкторов и деструкторов нет.
  • Модификаторы virtual, abstract, dynamic, override не могут присутствовать в определении интерфейса.

Интерфейсы и технология COM

При использовании интерфейса под Windows, который должен быть доступен в COM подсистеме, соглашение вызова должно быть stdcall. Это не выбор по умолчанию для FPC, будьте внимательны.

COM не знает свойств. Он знает только методы. Поэтому при задании свойств как части определения интерфейса проверьте,  что они известны в скомпилированной FPC программе: другим программам Windows они могут быть не известны. Поэтому методы интерфейса должны использовать спецификаторы read/write.

CORBA и другие интерфейсы

Интерфейсы используются и в архитектурах CORBA, UNO (OpenOffice API), Java. Эти языки не знают об интерфейсе COM. Плохая идея рассчитывать на автоматическое восприятие определенных там параметров. Поэтому директива {$INTERFACES} была введена в FPC: она указывает, что интерфейс родителя должен быть задан без присутстия родителя.

TwitterSEO CommunityВаау!News2.ruChippKoricaSMI2Google BookmarksDiggI.uaЗакладки YandexLinkstoreMyscoopCommunizmRu-marksWebmarksRuspaceLinkomaticKli.kzWeb-zakladkaZakladok.netRedditdeliciousMa.gnoliaTechnoratiSlashdotYahoo My WebБобрДобр.ruMemori.rurucity.comМоёМесто.ruMister Wong

Copyright © 2009-2010 Программирование на паскале.