Интерфейс.

Определение 10. Интерфейс (interface) – именованное множество операций, которые характеризуют поведение отдельного элемента модели.

Интерфейс – это логическая группа открытых ( public ) операций объекта, которые обеспечивают стандартный способ доступа к объекту. Один и тот же объект может иметь несколько интерфейсов (у телевизора, например, их два – пульт дистанционного управления и кнопки на корпусе). Это означает, что класс этого объекта реализует все операции этих интерфейсов.

Интерфейс в контексте языка UML является специальным случаем класса, у которого имеются операции, но отсутствуют атрибуты. На диаграмме классов интерфейс изображается в виде маленького круга, рядом с которым записывается его имя, или стандартным способом – в виде прямоугольника класса со стереотипом <<interface>> (рис. 8 а). В качестве имени может использоваться существительное, которое характеризует соответствующую информацию или сервис, например, "Датчик температуры", "Форма ввода", "Сирена", "Видеокамера" (рис. 8 б). С учетом языка реализации модели имя интерфейса, как и имена других классов, рекомендуется записывать на английском и начинать с заглавной буквы I, например, ITemperatureSensor, IsecureInformation (рис. 8 в).

 
 

Рис. 8. Примеры графического изображения интерфейсов на диаграммах классов.

Интерфейсы на диаграмме служат для спецификации таких элементов модели, которые видимы извне, но их внутренняя структура остается скрытой от клиентов. Интерфейсы не могут содержать ни атрибутов, ни состояний, ни направленных ассоциаций. Они содержат только операции без указания особенностей их реализации. Формально интерфейс не только отделяет спецификацию операций системы от их реализации, но и определяет общие границы проектируемой системы. В последующем интерфейс может быть уточнен явным указанием тех операций, которые специфицируют отдельный аспект поведения системы. Графическое изображение интерфейсов в форме окружности могут использоваться и на других типах канонических диаграмм, например, диаграммах компонентов и развертывания.

На рис. 9 показано, что подсистема ConduitSet обладает (предоставляет) интерфейс ISynchronize.

Рис. 9. Изображение предоставляемого интерфейса.

Существует еще один способ изображения интерфейса. Он не является альтернативой описанным ранее способам, а используется для изображения интерфейсов, требующихся объекту для выполнения его работы. Обозначается он символом . На рис. 10 показано, что классу DataCollector для работы требуется интерфейс IGetData.

Рис. 10. Изображение предоставляемого интерфейса.

На диаграммах довольно часто можно увидеть такую картинку (рис. 11):

Рис. 11.

Отношения и их графическое изображение на диаграмме классов.

Кроме внутреннего устройства классов важную роль при разработке проектируемой системы имеют различные отношения между классами, которые также могут быть изображены на диаграмме классов. Совокупность допустимых типов таких отношений строго фиксирована в языке UML и определяется самой семантикой этих отношений.

Для того чтобы обнаружить отношения между классами, исследуются сценарии и диаграммы последовательности: если объект посылает сообщение другому объекту, то по-видимому, между ними существует отношение. Отношения возникают также, если один класс использует другой в качестве параметра операции.

Базовые отношения, изображаемые на диаграммах классов:

·отношение ассоциации (association relationship);

·отношение обобщения (generalization relationship);

·отношение агрегации (aggregation relationship);

·отношение композиции (composition relationship).

Каждое из этих отношений имеет собственное графическое представление, которое отражает семантический характер взаимосвязи между объектами соответствующих классов.