Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шаврин С.М. Моделирование и проектирование ИС.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
1.47 Mб
Скачать

Агрегация

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

Определение: Агрегация – это вид ассоциации, моделирующий неравноправные отношения типа «часть–целое».

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

Агрегация бывает двух видов: композитная и коллективная.

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

Рис. 61. Пример композитной агрегации

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

Рис. 62. Пример коллективной агрегации

Правила идентификации отношения агрегации

Вводить агрегацию следует в следующих случаях:

  • время жизни компонента ограничено временем жизни составного объекта, т.е. есть зависимость создания/удаления (например, файл–каталог);

  • в физическом или логическом агрегате очевидно наличие отношения «часть–целое» (например, машина–двигатель);

  • некоторые свойства составного объекта распространяются и на его компоненты, например, место их расположения (к примеру, папка–документ);

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

Порядок построения концептуальной модели

При построении концептуальной модели можно руководствоваться следующей последовательностью шагов:

  1. составить список понятий;

  2. идентифицировать их атрибуты;

  3. идентифицировать ассоциации;

  4. произвести разбиение на подтипы и выделение супертипов;

  5. выделить отношения агрегации.

Эти шаги можно выполнять как для всей модели в целом, так и для ее частей.

Рекомендации по построению диаграмм понятий

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

Не стоит пытаться все вместить в одну диаграмму. Лучше разбить модель на несколько относительно независимых частей и построить несколько диаграмм. При этом некоторые части модели придется повторить на нескольких диаграммах – в этом нет ничего страшного. При разбиении имеет смысл придерживаться правила «7 ± 2». Именно такое количество понятий на диаграмме является оптимальным.

Каждая диаграмма должна акцентировать внимание на определенном аспекте системы. Для этого имеет смысл скрывать несущественные в данном контексте элементы модели (атрибуты, ассоциации, ограничения).

Располагайте понятия равномерно друг относительно друга. Линии отношений рисуйте параллельно осям координат. Не допускайте пересечения линий и излишних изломов (максимум 2). Некоторые аналитики совершенно напрасно пренебрегают эстетической стороной построения диаграмм. С моделями этих людей работать потом неприятно.

Вопросы для самоконтроля

  1. Что такое концептуальная модель?

  2. Как выделять понятия и ассоциации?

  3. Как правильно выделять атрибуты?

  4. Для чего нужны роли?

  5. В чем суть правил «100%» и «is_a»?

  6. В чем особенность абстрактных понятий?

  7. В чем разница между коллективной и композитной агрегацией?

Задания для самостоятельной работы

  1. Подумайте, почему требуются два правила: «100%» и «is_a»? Почему не достаточно одного из них?

  2. Подумайте, почему многомерная множественная классификация не используется в языках программирования?

  3. Постройте концептуальную модель диаграммы понятий.

  4. Постройте диаграммы понятий для учебного задания.