Microsoft Component Object Model Interface

COM-интерфе́йс (от COM — англ. Component Object Model и англ. interface — взаимодействие) — набор абстрактных функций и свойств, через который COM-компонент взаимодействует с другими программами. Интерфейс задаётся абстрактным классом и реализуется другими, конкретными. К COM-интерфейсам стандарты предъявляют жёсткие требования по реализации определённых функций, поэтому иногда образно говорят, что интерфейс — это контракт, который обязуется выполнить класс. С конца XX века многие среды программирования начали внедрять у себя понятие интерфейса для поддержки технологии COM или сходных технологий.
Интерфейсы в Delphi
В Delphi интерфейсы были введены для поддержки COM технологии корпорация «Microsoft».
Интерфейсы в Delphi напоминают классы. Как все классы являются наследниками класса TObject
, так все интерфейсы произходят от интерфейса IUnknown
. Для работы с интерфейсами программисту необходимо приложить некоторые усилия, а именно создать и правильно реализовать методы: QueryInterface,_AddRef, _Release
. Эта рутинная работа уже проделана в классе TInterfacedObject
.
Пример объявления интерфейса:
IMyInterface = interface procedure DoSomething; end;
Пример класса — наследника TInterfacedObject
TMyClass = class(TInterfacedObject, IMyInterface) procedure DoSomething; end;
Так как интерфейс — это как бы контракт, который нужно выполнить программе, то она не компилируется пока в TMyClass
не будет реализована procedure DoSomething;
Интерфейсы в UML
В UML интерфейсы изображаются как классы со стереотипом «interface». Либо в виде кружочков, в этом случае происходит подавление отображения содержашихся в интерфейсе операций.