Шаг 122.
Унифицированный язык моделирования UML.
Компоненты и интерфейсы

    На этом шаге рассмотрим компоненты и интерфейсы в UML.

    Интерфейс – набор операций, используемый для спецификации сервиса класса или компонента. Связь между компонентом и интерфейсом имеет важное значение. Все основанные на компонентах средства операционных систем (такие, как COM+, CORBA и Enterprise Java Beans) используют интерфейсы в качестве элементов, связывающих компоненты друг с другом.

    Чтобы сконструировать систему на основе компонентов, необходимо произвести ее декомпозицию, специфицируя интерфейсы, которые представляют основные соединения. Затем понадобится определить компоненты, реализующие интерфейсы, вместе с другими компонентами, которые имеют доступ к сервисам первых посредством своих интерфейсов. Этот механизм позволяет вам развернуть систему, сервисы которой в определенной мере независимы от местоположения и заменяемы.

    Интерфейс, который реализован компонентом, называется предоставляемым (то есть данный компонент предоставляет интерфейс в виде сервиса другим компонентам). Компонент может декларировать множество предоставляемых интерфейсов. Интерфейс, который он использует, называется требуемым: ему соответствует данный компонент, когда запрашивает сервисы от других компонентов. Компонент может соответствовать множеству требуемых интерфейсов. Бывают компоненты, которые одновременно предоставляют и требуют интерфейсы.

    Как показано на рис. 1, компонент изображается в виде прямоугольника с двузубчатой пиктограммой в правом верхнем углу.


Рис.1. Компоненты и интерфейсы

    Внутри прямоугольника указывается имя компонента. У него могут быть атрибуты и операции, которые, впрочем, на диаграммах часто опускаются. Компонент может показывать сеть внутренней структуры.

    Связь между компонентом и его интерфейсами выражается одним из двух способов. Первый более употребителен – интерфейс изображается в сокращенной, пиктографической форме. Предоставляемый интерфейс выглядит как кружок, соединенный линией с компонентом ("леденец на палочке"). Требуемый интерфейс – полукруг, так же соединенный с компонентом ("гнездо"). В обоих случаях имя интерфейса указано рядом с символом.

    Второй способ – изображение интерфейса в его расширенной форме (возможно, с указанием его операций). Компонент, который реализует интерфейс, соединяется с ним посредством полной связи реализации. Компонент, который имеет доступ к сервисам другого компонента через интерфейс, соединяется с интерфейсом связью зависимости.

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

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

    На следующем шаге рассмотрим понятие заменяемости компонентов в UML.




Предыдущий шаг Содержание Следующий шаг