Шаг 105.
Унифицированный язык моделирования UML.
Пакеты

    На этом шаге рассмотрим один из способов организации элементов модели в UML - пакеты.

    Визуализация, специфицирование, конструирование и документирование больших систем предполагают работу с множеством классов, интерфейсов, узлов, компонентов, диаграмм и других элементов. Масштабируя такие системы, вы столкнетесь с необходимостью организовывать эти сущности в крупные блоки. В языке UML для организации элементов модели в группы применяются пакеты.

    Пакет – это способ организации элементов модели в блоки, которыми можно распоряжаться как единым целым. Можно управлять видимостью элементов пакета, так что некоторые будут видны пользователю, а другие – скрыты. Кроме того, с помощью пакетов изображаются различные представления архитектуры системы.

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

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

    Жилые дома устроены сложнее. Стены, потолки и полы соединяются друг с другом, образуя более крупные сущности, которые мы называем комнатами. Комнаты организованы в еще более крупные блоки – жилая зона, зона досуга и т.д. Такие блоки могут представлять собой всего лишь абстракцию. Мы просто объединяем под общим названием ряд комнат, функционально связанных друг с другом, чтобы удобнее было говорить о предполагаемом использовании домашнего пространства.

    Небоскребы устроены еще сложнее. Там вы найдете помимо простейших конструкций (стен, полов, потолков) более крупные образования – места, открытые для общего доступа, сдаваемые в аренду квартиры и офисы. Эти блоки, вероятно, сгруппированы в еще более крупные, такие как арендуемая площадь и инфраструктура обслуживания здания. Разумеется, они не имеют ничего общего с самим зданием, а являются лишь артефактами, которые применяли при планировании небоскреба.

    Каждая большая система состоит из нескольких подобных слоев. По-настоящему понять ее можно, только объединив абстракции, которые в нее входят, в крупные группы. Большинство блоков среднего размера (например, комнаты) сами по себе не являются абстракциями, похожими на классы, и у них бывает много экземпляров. Крупные блоки достаточно часто умозрительны (например, "часть здания для продажи"), и у них не бывает экземпляров. Они не реализуются на физическом уровне; единственная их цель – облегчить понимание системы. Блоки такого рода не будут представлены в развернутой системе – они существуют лишь на уровне модели.

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

    Графически пакеты в языке UML представлены так, как показано на рис. 1. Такая нотация позволяет визуализировать группы элементов, с которыми можно обращаться как с единым целым, контролируя при этом видимость и возможность доступа к отдельным элементам.


Рис.1. Пакеты

    Пакет (package) представляет собой общий механизм организации элементов в группы. Изображается в виде папки с закладкой. Имя пакета указано на папке, если содержимое последней не показано, а в противном случае – на закладке.

    У каждого пакета должно быть имя, отличающее его от других пакетов. Имя представляет собой текстовую строку. Само по себе оно называется простым. Квалифицированное имя предваряется именем пакета, включающего данный, если такое вложение имеет место. Двойное двоеточие (::) используется в качестве разделителя имен пакетов. Обычно, изображая пакет, указывают только его имя (см. рис. 2).


Рис.2. Простые и квалифицированные имена пакетов

    Но, как и в случае с классами, вы можете дополнять пакеты помеченными значениями или дополнительными разделами, чтобы прояснить детали.

    Имя пакета должно быть уникальным внутри включающего его пакета.

    Имя пакета может состоять из любых букв латинского алфавита и цифр, а также некоторых знаков препинания (за исключением таких, как двоеточие, которое применяется для разделения имен пакетов, один из которых входит в другой). Имя может занимать несколько строк (количество символов не ограничено). Обычно для именования пакета используют одно или несколько коротких существительных, взятых из словаря модели.

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




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