Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

UML. Диаграммы классов. Интерфейс




В UML существует несколько разновидностей класса: интерфейс, шаблон, утилита и др.

Интерфейс (interface) - класс, задающий набор операций, но не содержащий в себе поля и реализации этих операций. Класс, реализующий интерфейс, сам определяет содержимое этих операций.

· Интерфейс

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

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

На диаграмме классов UML интерфейс можно изобразить двумя способами: развернутым и сокращенным. В случае развернутого способа интерфейс изображается на диаграмме как класс со стереотипом "interface" и без секции атрибутов (рис.2.10). Допустимо также сокращенное изображение интерфейса - небольшой кружок с именем интерфейса возле него.

Рисунок 2.10 "Класс, реализующий интерфейс"

На рис. 2.10 изображен класс RunningLine, который реализует интерфейс DataConsumer. Связь между ними называется детализация и представляется на диаграмме в виде пунктирной линии с полым треугольником на конце. Таким образом, класс RunningLine должен предоставить метод, реализующий операцию SetData, унаследованную от интерфейса DataConsumer.

Рисунок 2.11 "Использование интерфейса классом"

На рис. 2.11 изображен класс RunningLine, использующий интерфейс DataConsumer. Связь между ними называется зависимость и представляется на диаграмме в виде пунктирной линии со стрелкой на конце. Такая связь говорит о том, что если интерфейс DataConsumer изменить, то класс RunningLine тоже может претерпеть некоторые изменения. Поэтому при конструировании диаграмм необходимо сводить число зависимостей к минимуму, во избежание влияния вносимых изменений. (Более подробно о зависимостях будет сказано ниже).

Билет 65 UML. Диаграммы классов. Ассоциация. Агрегирование и композиция.

Ассоциация

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

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

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

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

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

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

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

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

· Роль

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

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

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

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

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

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

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

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

 

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

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

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

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

Пример:

0..1

0..*

3..5,10..20,100,200..*

Рисунок 2.6 "Пример ассоциации с указанием множественности"

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

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

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

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

Рисунок 2.7 "Квалификатор"

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

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

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

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

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

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

Рисунок 2.8 "Пример композиции"

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...