Интерфейсы

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: она указывает, что интерфейс родителя должен быть задан без присутстия родителя.

Twitter SEO Community Ваау! News2.ru Chipp Korica SMI2 Google Bookmarks Digg I.ua Закладки Yandex Linkstore Myscoop Communizm Ru-marks Webmarks Ruspace Linkomatic Kli.kz Web-zakladka Zakladok.net Reddit delicious Ma.gnolia Technorati Slashdot Yahoo My Web БобрДобр.ru Memori.ru rucity.com МоёМесто.ru Mister Wong

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