Шаг 106.
Унифицированный язык моделирования UML.
Элементы, принадлежащие пакету

    На этом шаге рассмотрим элементы, принадлежащие пакету в UML.

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

    Пакет владеет элементами модели, объявленными внутри него. Это могут быть, в частности, классы, ассоциации, обобщения, зависимости и примечания. Пакет не владеет элементами, на которые осуществляется лишь ссылка из него.

    Пакет определяет свое пространство имен, то есть элементы одного вида должны иметь имена, уникальные в контексте включающего пакета. Например, в одном пакете не может быть двух классов Queue (Очередь), но может быть один класс Queue в пакете P1, а другой – в пакете P2. P1::Queue и P2::Queue имеют разные квалифицированные имена и поэтому являются различными классами.

    Во избежание недоразумений лучше не использовать одинаковые имена в различных пакетах.

    Элементам различного вида можно присваивать одинаковые имена в пределах пакета. Так, допустимо наличие класса Timer (Таймер) и компонента Timer в одном и том пакете. Однако, чтобы предотвратить путаницу, лучше назначать всем элементам пакета уникальные имена.

    Один пакет может содержать другие, а следовательно, допускается иерархическая декомпозиция модели. Например, может существовать класс Camera (Камера), принадлежащий пакету Vision (Оптическое Устройство), который, в свою очередь, содержится в пакете Sensors (Датчики). Полное имя этого класса – Sensors::Vision::Camera.

    Лучше, однако, избегать слишком глубокой вложенности пакетов: два-три уровня – предел управляемости. При необходимости для организации пакетов стоит использовать импорт, а не вложения.

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

    Как показывает рис. 1, содержание пакета можно представить графически или в текстовом виде.


Рис.1. Элементы, принадлежащие пакету

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

    Язык UML подразумевает наличие в любой модели анонимного корневого пакета, а значит, все элементы одного и того же вида на верхнем уровне модели должны иметь уникальные имена.

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




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