Одной из наиболее значимых новых черт языка UML 2 является возможность превращать класс в иерархию внутренних структур. Это позволяет разбить сложный объект на составляющие.
На рис. 13.1 показан класс TV Viewer (Телевизор) вместе с интерфейсами, которые он предоставляет и которые требует (стр. 96). Я показал его двумя способами: с помощью шарово-гнездовой нотации и с помощью перечисления внутри объекта.
На рис. 13.2 показан этот же класс, разбитый внутри на две части, которые предоставляют и требуют различные интерфейсы. Каждая часть имеет имя в виде имя: класс, в котором каждый из составляющих его элементов может отсутствовать. Составляющие части не являются описанием экземпляров, поэтому они выделены жирным шрифтом, а не подчеркнуты.
Можно также указать количество экземпляров конкретной части. На рис. 13.2 показано, что каждый объект TV Viewer содержит один генератор (Gene rato г) и один блок управления (cont rols).
Чтобы обозначить часть, реализующую интерфейс, надо нарисовать разъем, предоставляемый этим интерфейсом. Аналогично, чтобы показать часть, нуждающуюся в интерфейсе, надо нарисовать разъем, предоставляемый этому интерфейсу. Кроме того, разъемы между частями можно показать или с помощью простой линии, как сделано в данном случае, или с помощью шарово-гнездовой нотации (стр. 98).
К внешней структуре можно добавить порты (рис. 13.3). Порты позволяют группировать требуемые и предоставляемые интерфейсы в логи-
ческие взаимодействия, которые компонент имеет с объектами внешнего мира.