Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Модуль-1-шпора-ТРПО-3.doc
Скачиваний:
20
Добавлен:
21.03.2015
Размер:
2.28 Mб
Скачать

2.4.5. Ограничения

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

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

2.4.6. Агрегирование и композиция

Простая ассоциация между двумя классами отражает структурное отношение между равноправными классами. Но иногда приходится моделировать отношение типа «часть-целое», в котором один из классов имеет более высокий ранг (целое) и состоит из нескольких меньших по рангу (частей). Отношение такого типа называются агрегацией или агрегированием. Агрегация является частным случаем ассоциации. Агрегирование - это вид ассоциации, описывающий отношения между целым и частью. Агрегирование – это чисто концептуальное отношение, оно лишь позволяет отличить «целое» от «части», но не изменяет смысла навигации по ассоциации между целым и его частями не накладывает никаких ограничений на соотношение времени жизни целого и частей. Существует вариация простого агрегирования – композиция.

Рисунок 2.4 Агрегация и композиция Рисунок 2.5. Альтернативное обозначение для композиции

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

Примеры агрегирования и композиции приведены на рисунках 2.4 и 2.5. Многоугольник состоит из упорядоченной совокупности Вершин. Эти Вершины могут изменяться при изменении многоугольника, поэтому применяется агрегация. Композиция используется для связи между Многоугольником и графическим объектом. Графический объект содержит такие атрибуты, как «Цвет» и «Текстура». Он рассматривается отдельно от Многоугольника, т.к. такой набор атрибутов могут иметь многие графические объекты Отношения между Многоугольником и Графическим объектом определены как композиция, следовательно, Графический объект создаётся и уничтожается вместе с данным Многоугольником и не может быть изменен.

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

2.4.7. Классы ассоциаций

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

Рисунок 2.6. Класс ассоциаций

Из диаграммы (рис.2.6.) видно, что Личность может работать только в одной Компании. При этом необходимо хранить информацию о периоде времени, в течении которого каждый служащий работает в каждой Компании. Это можно сделать, дополнив ассоциацию атрибутом «интервал Времени». Можно было бы включить этот атрибут Личность, но на самом деле он характеризует не Личность, а ее связи с Компанией, которая будет меняться при смене работодателя.

Эту же информацию можно отразить другой диаграммой, в которой Работа (класс ассоциаций) представлена как обычный класс (рисунок 2.7). Здесь роль «работодатель» становится производной.

Рисунок 2.7. Преобразование класса ассоциаций в обычный класс

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]