Тема о взаимодействии классов будет не полна без рассмотрения интерфейсов.
Интерфейс (interface) — программная/синтаксическая структура, определяющая отношение между объектами, которые разделяют определённое поведенческое множество и не связаны никак иначе. При проектировании классов, разработка интерфейса тождественна разработке спецификации (множества методов, которые должен реализовывать каждый класс, использующий интерфейс).
Интерфейс в ООП является строго формализованным элементом объектно-ориентированного языка и широко используется в исходном коде программ. Часто используется для наладки механизма множественного наследования.
Описание ООП-интерфейса, если отвлечься от деталей синтаксиса конкретных языков, состоит из двух частей: имени и методов интерфейса.
I<Имя>
», то есть состоит из написанного с заглавной буквы осмысленного имени, которому предшествует заглавная латинская буква I
(IUnknown
, IDispatch
, IStringList
и т. п.).Класс может реализовывать интерфейс. Такой класс называют имплементом.
Реализация интерфейса заключается в том, что в описании класса данный интерфейс указывается как реализуемый, а в коде класса обязательно определяются все методы, которые описаны в интерфейсе, в полном соответствии с сигнатурами из описания этого интерфейса. Один класс может реализовать несколько интерфейсов одновременно.
Рассмотрим некоторые правила, или рекомендации по созданию интерфейсов: