Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
219
Добавлен:
15.03.2016
Размер:
624.21 Кб
Скачать

Диаграммы uml. Диаграмма классов и пакетов.

Диаграммы классов используются при моделировании ПС наиболее часто. Они являются одной из форм статического описания системы с точки зрения ее проектирования, показывая ее структуру. Диаграмма классов не отображает динамическое поведение объектов изображенных на ней классов. На диаграммах классов показываются классы, интерфейсы и отношения между ними.

Представление классов

Класс – это основной строительный блок ПС.. Каждый класс имеет название, атрибуты и операции. Класс на диаграмме показывается в виде прямоугольника, разделенного на 3 области. В верхней содержится название класса, в средней – описание атрибутов (свойств), в нижней – названия операций – услуг, предоставляемых объектами этого класса.

Для каждого атрибута класса можно задать видимость (visibility). Эта характеристика показывает, доступен ли атрибут для других классов. В UML определены следующие уровни видимости атрибутов:

  • Открытый (public) – атрибут виден для любого другого класса (объекта);

  • Защищенный (protected) – атрибут виден для потомков данного класса;

  • Закрытый (private) – атрибут не виден внешними классами (объектами) и может использоваться только объектом, его содержащим.

Ассоциация

Ассоциация (association)определяет некоторую связь между классами. Когда в системе создаются представители ассоциированных классов, они связываются так, как определяет данная ассоциация.

В UML одна ассоциация может специфицировать связь между двумя и несколькими (более чем двумя) классами. Ассоциации первого типа называются бинарными, а второго типа - N-арными.

  • Бинарная ассоциация

Бинарная ассоциация (binary association)- это ассоциация между ровно двумя классами. Возможна ассоциация класса с самим собой, которая называетсярефлексивной ассоциацией.

Изображается ассоциация в виде сплошной линии, соединяющей два символа класса. Каждая ассоциация обладает двумяролями (association role),каждая роль представляет собой направление ассоциации. Большая часть информации, касающейся ассоциации, присоединена к ее ролям.

На линии (рядом с линией), изображающей ассоциацию, могут быть следующие пометки:

  • имя ассоциации- определяет необязательное имя ассоциации,

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

  • Роль

Роль (association role)- это неотделимая часть ассоциации, описывающая некоторые свойства её соединения с классом (роль класса в данной ассоциации).

У роли могут быть следующие свойства:

  • Имя роли- строка, стоящая рядом с концом ассоциации. Поле не обязательное, но если имя задано, оно должно отображаться на диаграмме.

  • Навигация -если в направлении, соответствующем роли, поддерживается навигация, на конце линии может быть изображена стрелка. Возможность навигации в направлении роли означает, что партнеры ассоциации могут просматривать объекты, соответствующие этой роли.

  • Множественность- показывает количество конкретных объектов, которые могут быть связаны с данным партнером ассоциации. В общем случае, множественность показывает нижнюю и верхнюю границы количества объектов, которые могут участвовать в ассоциации.

  • Квалификатор- представляет собой список атрибутов класса с противоположного конца ассоциации, по значениям которых можно однозначно разбить множество его объектов на подмножества. Используется для связи объекта класса-партнера ассоциации с группой объектов другого класса-партнера ассоциации.

  • Агрегирование -показывает, что ассоциация является отношением типа целое/часть.

В последней версии UML предусмотрена возможность указания изменяемости ассоциации - если ассоциация изменяема, то есть может быть добавлена, удалена и перемещена, то никаких дополнительных пометок не нужно. В противном случае в строке свойств может присутствовать метка {frozen}, указывающая на то, что ассоциация не может добавляться, удаляться и перемещаться.

  • Множественность

Множественность (multiplicity)показывает возможное количество объектов, которые могут быть связаны в соответствии с этой ассоциацией. Множественность указывается для ролей ассоциации и имеет следующий формат (рис.2.6):

<нижняя граница>..<верхняя граница>

Верхняя граница и нижняя граница указывают минимальное и максимальное количество объектов, участвующих в ассоциации. Если для верхней границы стоит символ '*', то это символизирует, что она (верхняя граница) бесконечна.

  • Квалификатор

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

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

Квалификатор изображается в виде маленького прямоугольника, присоединенного к началу ассоциации (рис.2.7). В нем указываются атрибуты другого класса-партнера ассоциации.

  • Агрегирование

Если у роли ассоциации установлен атрибут "aggregation", то вся ассоциация является отношением агрегирования. Такой атрибут может быть установлен только у одной из ролей.

Агрегирование (aggregation) - это отношение между классами типа целое/часть. Агрегируемый класс в той или иной форме является частью агрегата. На практике это может быть реализовано по-разному. Например, объект класса-агрегата может хранить объект агрегируемого класса, или хранить ссылку на него.

В UML допускается возможность, когда один класс агрегируется многими, то есть, является частью нескольких целых. Но имеется специальный вид агрегирования, называемый композицией(composition), который этого не допускает.

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

Агрегирование изображается на диаграмме полым ромбом на конце линии ассоциации со стороны агрегирующего класса (агрегата) (рис.2.8). Композиция показывается также как и агрегирование, но ромбик рисуется не пустым, а заполненным.

Пакеты

В контексте диаграмм классов, пакет (package)- это вместилище для некоторого набора классов и других пакетов. Пакет является самостоятельным пространством имен.

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

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

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

Соседние файлы в папке Ответы по госам ИЗИ-41 2015