432 Глава 19. Интерфейсы и компоненты
В следующих разделах мы расскажем о компонентах, а затем обсудим,
как можно сочетать компоненты и интерфейсы в CBD.
19.8. Что такое компонент?
Спецификация UML 2.0 [UML2S] гласит: «Компонент представляет мо
дульную часть системы, которая инкапсулирует ее содержимое, и ре
ализация компонента замещаема в рамках его окружения». Компо
нент как черный ящик, внешнее поведение которого полностью опре
деляется его предоставляемыми и требуемыми интерфейсами. Поэто
му один компонент может быть заменен другим, поддерживающим
тот же протокол.
Компонент – модульная и замещаемая часть системы, инкапсулирующая
ее содержимое.
Компоненты могут иметь атрибуты и операции и участвовать в отно
шениях ассоциации и обобщения. Компоненты – это структурирован
ные классификаторы. У них может быть внутренняя структура, вклю
чающая части и соединители. Структурированные классификаторы
рассматривались в разделе 18.12.1. Если вы до сих пор не ознакоми
лись с ними, рекомендуем сделать это сейчас, прежде чем двигаться
дальше.
Компоненты могут представлять чтото, экземпляр чего может быть
создан во время выполнения, например EJB (Enterprise JavaBean).
Или ими может быть представлена абсолютно логическая конструк
ция, такая как подсистема, экземпляры которой создаются только
косвенно через создание экземпляров ее частей.
Компонент может быть представлен одним или более артефактами.
Артефакт представляет некоторую физическую сущность, например
исходный файл. В частности, компонент EJB мог бы быть представлен
файлом JAR (Java Archive – Javaархив). Более подробно артефакты
обсуждаются в разделе 24.5.
На диаграмме компонентов могут быть показаны компоненты, зависи
мости между ними и то, как компонентам назначаются классификато
ры. Компонент отображается в виде прямоугольника со стереотипом
«component» (компонент) и/или пиктограммой компонента в верхнем
правом углу, как на рис. 19.15. У компонентов могут быть предостав
ляемые и требуемые интерфейсы и порты.
Компонент может иметь внутреннюю структуру. Части можно пока
зать вложенными внутрь компонента (рис. 19.16) или находящимися
снаружи и соединенными с ним отношением зависимости. Обе формы
синтаксически эквивалентны, хотя первая нотация нам кажется более
наглядной.