На этом шаге рассмотрим видимость элементов пакета в UML.
Видимость принадлежащих пакету элементов можно контролировать так же, как видимость атрибутов и операций класса. По умолчанию такие элементы являются открытыми, то есть видимы для всех элементов, содержащихся в любом пакете, импортирующем данный. Защищенные элементы видимы только для потомков, а закрытые вообще невидимы вне своего пакета. Например, на рис. 1 OrderForm (БланкЗаказа) – это открытая часть пакета Client (Клиент), а Order (Заказ) – закрытая.
Рис.1. Видимость элементов пакета
Любой пакет, импортирующий данный, может "видеть" объект OrderForm, но "не видит" Order. При этом полное квалифицированное имя для OrderForm будет Client::OrderForm.
Видимость принадлежащего пакету элемента обозначается соответствующим символом перед его именем. Для открытых элементов используется знак "+" (плюс), как в случае с OrderForm на рис. 1. Все открытые части пакета в совокупности составляют его интерфейс.
Так же, как и в отношении классов, для имен защищенных элементов используют символ "#" (решетка), а для закрытых добавляют символ "–" (минус). Напомним, что защищенные элементы будут видимы только для пакетов, наследующих данному, а закрытые вообще невидимы вне пакета, в котором объявлены.
Пакетная видимость показывает, что класс видим только для других классов, объявленных в том же самом пакете, но скрыт для классов, объявленных в других пакетах. Пакетная видимость изображается с помощью символа "~" (тильда) перед именем класса.
На следующем шаге рассмотрим экспорот и импорт элементов пакета в UML.