Тема_7 (1122352), страница 8
Текст из файла (страница 8)
Кузнецов. Базы данных.97 Проектирование РБДДиаграммы классов языка UML(18)Ассоциацией называется структурная связь, показывающая,ОсновныепонятияодногодиаграммклассовUML (16) образомСвязи-ассоциации(1)что объектыклассанекоторымсвязанысобъектами другого или того же самого класса Допускается, чтобы оба конца ассоциации относились кодному классу В ассоциации могут связываться два класса, и тогда онаназывается бинарной Допускается создание ассоциаций, связывающих сразу nклассов (они называются n-арными ассоциациями) мы ограничимся обсуждением бинарных ассоциаций Графически ассоциация изображается в виде линии,соединяющей класс сам с собой или с другими классами. С понятием ассоциации связаны четыре важныхдополнительных понятия: имя, роль, кратность и агрегация29.10.2009С.Д.
Кузнецов. Базы данных.98 Проектирование РБДДиаграммы классов языка UML(19) Ассоциацииможетбыть классов UML (17) Связи-ассоциации (2)Основныепонятиядиаграммприсвоено имя, характеризующееприроду связи Смысл имени уточняется с помощью черного треугольника, которыйрасполагается над линией связи справа или слева от имени ассоциации Этот треугольник указывает направление чтения имя связи Здесь показан пример именованной ассоциации Треугольник показывает, что именованная ассоциация должна читатьсякак «Студент учится в Университете»29.10.2009С.Д.
Кузнецов. Базы данных.99 Проектирование РБДДиаграммы классов языка UML(20)Основныепонятия диаграммклассов UML (18) Связи-ассоциации (3) Другим способомименованияассоциации является указаниероли каждого класса,участвующего в этойассоциации Роль класса, как и имя конца связи в ER-модели, задается именем,помещаемым под линией ассоциации ближе к данному классу На рисунке показаны две ассоциации между классами Человек иУниверситет, в которых эти классы играют разные роли Как мы видим, объекты класса Человек могут выступать в ролиРАБОТНИКОВ при участии в ассоциации, в которой объекты классаУниверситет играют роль НАНИМАТЕЛЯ В другой ассоциации объекты класса Человек играют роль СТУДЕНТА, аобъекты класса УНИВЕРСИТЕТ – роль ОБУЧАЮЩЕГО29.10.2009С.Д. Кузнецов.
Базы данных.100Проектирование РБДДиаграммы классов языка UML(21)В общемслучае,для ассоциациимогут(19)задаватьсяи ее (4)Основныепонятиядиаграммклассов UMLСвязи-ассоциациисобственное имя, и имена ролей классовЭто связано с тем, что класс может играть одну и ту же роль вразных ассоциациях, так что в общем случае пара имен ролейклассов не идентифицирует ассоциациюС другой стороны, в простых случаях, когда между двумя классамиопределяется только одна ассоциация, можно вообще несвязывать с ней дополнительные имена.Кратностью (multiplicity) роли ассоциации называетсяхарактеристика, указывающая, сколько объектов класса с даннойролью может или должно участвовать в каждом экземпляреассоциацииВ терминологии UML экземпляр ассоциации называетсясоединением – link, но мы не будем здесь использовать этоттермин, чтобы не создавать путаницутрудно одновременно говорить про связи, ассоциации и соединения,имея в виду разные понятия29.10.2009С.Д.
Кузнецов. Базы данных.101Проектирование РБДДиаграммы классов языка UML(22)Основныепонятиядиаграмм классовНаиболеераспространеннымUML(20) Связи-ассоциации(5)способомзадания кратностироли ассоциации является указание конкретного числа илидиапазонаНапример, указание «1» говорит о том, что каждый объекткласса с данной ролью должен участвовать в некоторомэкземпляре данной ассоциации, причем в каждомэкземпляре ассоциации может участвовать ровно одинобъект класса с данной рольюУказание диапазона «0..1» говорит о том, что не все объектыкласса с данной ролью обязаны участвовать в каком-либоэкземпляре данной ассоциации, но в каждом экземпляреассоциации может участвовать только один объект29.10.2009С.Д. Кузнецов. Базы данных.102Проектирование РБДДиаграммы классов языка UML(23)Аналогично,«1..*»говорит о том,Основныепонятияуказаниедиаграммдиапазонаклассов UML(21) Связи-ассоциации(6)чтовсе объекты класса с данной ролью должны участвовать внекотором экземпляре данной ассоциации, и в каждомэкземпляре ассоциации должен участвовать хотя бы одинобъект (верхняя граница не задана)Толкование диапазона «0..*» является очевиднымрасширением случая «0..1»В более сложных (но крайне редко встречающихся напрактике) случаях определения кратности можноиспользовать списки диапазоновНапример, список «2, 4..6, 8..*» говорит о том, что всеобъекты класса с указанной ролью должны участвовать внекотором экземпляре данной ассоциации, и в каждомэкземпляре ассоциации должны участвовать два, от четырехдо шести или более семи объектов класса с данной ролью29.10.2009С.Д.
Кузнецов. Базы данных.103Проектирование РБДДиаграммы классов языка UML(24)Основные понятия диаграмм классов UML (22) Связи-ассоциации (7) На диаграмме показано, что произвольное (может быть, нулевое) числолюдей являются сотрудниками произвольного числа университетов Каждый университет обучает произвольное (может быть, нулевое)число студентов, но каждый студент может быть студентом только одногоуниверситета29.10.2009С.Д. Кузнецов. Базы данных.104Проектирование РБДДиаграммы классов языка UML(25)ОсновныепонятиядиаграмммеждуклассовдвумяUML (23)Связи-ассоциации(8)Обычнаяассоциацияклассамихарактеризуетсвязь между равноправными сущностями: оба классанаходятся на одном концептуальном уровнеНо иногда в диаграмме классов требуется отразить тот факт,что ассоциация между двумя классами имеет специальныйвид «часть-целое»В этом случае класс «целое» имеет более высокийконцептуальный уровень, чем класс «часть»Ассоциация такого рода называется агрегатнойГрафически агрегатные ассоциации изображаются в видепростой ассоциации с незакрашенным ромбом на сторонекласса-«целого»29.10.2009С.Д.
Кузнецов. Базы данных.105Проектирование РБДДиаграммы классов языка UML(26) Объектами класса АудиторияОсновныепонятия диаграммклассовявляются студенческиеаудитории,в UML (24) Связи-ассоциации (9)которых проходят занятия В каждой аудитории должны быть установлены парты Поэтому в некотором смысле класс Парта является «частью» классаАудитория Мы умышленно сделали роль класса Парта в этой ассоциациинеобязательной, поскольку могут существовать аудитории без парт(например, класс для занятий танцами) и некоторые парты могутнаходиться на складе Обратите внимание, что, хотя аудитории, не оснащенные партами, какправило, непригодны для занятий, объекты классов Аудитория и Партасуществуют независимо Если некоторая аудитория ликвидируется, то находящиеся в ней партыне уничтожаются, а переносятся на склад29.10.2009С.Д.
Кузнецов. Базы данных.106Проектирование РБДДиаграммы классов языка UML(27)ОсновныепонятиядиаграммклассовUML (25)Связи-ассоциации(10)Бываютслучаи,когда связь«части»и «целого»настолькосильна, что уничтожение «целого» приводит к уничтожениювсех его «частей»Агрегатные ассоциации, обладающие таким свойством,называются композитными, или просто композициямиПри наличии композиции объект-часть может быть частьютолько одного объекта-целого (композита)При обычной агрегатной ассоциации «часть» можетодновременно принадлежать нескольким «целым»Графически композиция изображается в виде простойассоциации, дополненной закрашенным ромбом со стороны«целого»29.10.2009С.Д. Кузнецов.
Базы данных.107Проектирование РБДДиаграммы классов языка UML(28)Основные понятия диаграмм классов UML (26) Связи-ассоциации (11) Пример композитной агрегатной ассоциации Любой факультет является частью одного университета, и ликвидацияуниверситета приводит к ликвидации всех существующих в немфакультетов хотя во время существования университета отдельные факультетымогут ликвидироваться и создаваться29.10.2009С.Д. Кузнецов. Базы данных.108Проектирование РБДДиаграммы классов языка UML(29)Основныепонятия диаграммклассов UML (27)Связи-ассоциации (12) Заметим,что в контекстепроектированияреляционных БД агрегатные и вособенности композитные ассоциациивлияют только на способ поддержкиссылочной целостностиВ частности, композитная связь являетсяявным указанием на то, что ссылочнаяцелостность между «целым» и «частями»должна поддерживаться путем каскадногоудаления частей при удалении целого29.10.2009С.Д.
Кузнецов. Базы данных.109Проектирование РБДДиаграммы классов языка UML(30) При наличии простой ассоциацииОсновные понятия диаграмм классов UML (28) Связи-ассоциации (13)между двумя классамипредполагается возможностьнавигации между объектами,входящими в один экземплярассоциации Если известен конкретный объект-студент, то должна обеспечиватьсявозможность узнать соответствующий объект-университет Если известен конкретный объект-университет, то должнаобеспечиваться возможность узнать все соответствующие объектыстуденты Другими словами, если не оговорено иное, то навигация по ассоциацииможет проводиться в обоих направлениях Однако бывают случаи, когда желательно ограничить направлениенавигации для некоторых ассоциаций В этом случае на линии ассоциации ставится стрелка, указывающаянаправление навигации29.10.2009С.Д. Кузнецов. Базы данных.110Проектирование РБДДиаграммы классов языка UML(31) Пример диаграммы классов сОсновные понятия диаграмм классов UML (29) Связи-ассоциации (14)однонаправленной навигацией В библиотеке должно содержаться некоторое количество книг, и каждаякнига должна принадлежать некоторой библиотеке С точки зрения библиотечного хозяйства разумно иметь возможностьнайти книгу в библиотеке, т.