11.3. Пакеты и пространства имен 251
Таблица 11.1
Видимость определяет, является ли элемент пакета видимым вне пакета.
Видимость элементов пакета может использоваться для управления
количеством взаимосвязей между пакетами. Это возможно, потому что
экспортируемые элементы пакета действуют как интерфейс, или окно
в пакет. Этот интерфейс должен быть как можно меньше и проще.
Чтобы пакет гарантированно имел небольшой и простой интерфейс,
необходимо свести до минимума количество открытых элементов па
кета и максимально увеличить количество закрытых элементов. Реа
лизовать это на этапе анализа может быть трудно, если не применить
к ассоциациям возможность навигации. В противном случае между
классами будет много двунаправленных ассоциаций, а классы, участ
вующие в ассоциации, должны или находиться в одном пакете, или
оба быть открытыми. При проектировании отношения между класса
ми становятся однонаправленными, и тогда открытым должен быть
только класспоставщик.
Для адаптации семантики пакетов под конкретные цели UML предо
ставляет два стандартных стереотипа (табл. 11.2).
Таблица 11.2
11.3. Пакеты и пространства имен
Пакет определяет так называемое инкапсулированное пространство
имен. Это означает, что пакет создает границу, в рамках которой имена
всех элементов должны быть уникальными. Это также означает, что
если элементу из одного пространства имен необходимо обратиться к
элементу из другого пространства имен, он должен указать и имя необ
ходимого элемента, и путь к этому элементу, чтобы его можно было
найти в пространствах имен. Этот путь навигации называют полным
именем (qualified name) или составным именем (pathname) элемента.
Символ Видимость Семантика
+ открытая (public) Элементы с открытой видимостью видимы вне
пакета – они экспортируются пакетом.
–закрытая (private) Элементы с закрытой видимостью полностью
скрыты внутри пакета.
Стереотип Семантика
«framework»
(каркас)
Пакет, содержащий элементы модели, которые опре
деляют многократно используемую архитектуру.
«modelLibrary»
(библиотека модели)
Пакет, содержащий элементы, которые предназначе
ны для повторного использования другими пакетами.