Lec08
.pdfUML. Отношения
Обобщение (Generalization) - это отношение между общей сущностью (суперклассом, или родителем) и ее конкретным воплощением (субклассом, или потомком). Обобщения иногда называют отношениямитипа "является", имея в виду, что одна сущность (например, класс BayWindow) является частным выражением другой, более общей (скажем,класса Window). Обобщение означает, что объекты класса-потомкамогут использоваться всюду, где встречаются объекты класса-родителя,но не наоборот.
Потомок наследует свойства родителя, в частности его атрибуты и операции. Часто, хотя и не всегда, у потомков есть и свои собственные атрибуты и операции, помимо тех, что существуют у родителя. Операция потомка с той же сигнатурой, что и у родителя, замещает операцию родителя; это свойство называют полиморфизмом(Polymorphism).
Графически отношение обобщения изображается в виде линии с большой незакрашенной стрелкой, направленной на родителя.
11
UML-схема. Обобщение
Рис. 3. Обобщение
12
UML. Ассоциации
Ассоциацией (Association) называется структурное отношение, показывающее, что объекты одного типа неким образом связаны с объектами другого типа. Если между двумяклассамиопределена ассоциация,то можно перемещаться от объектов одногокласса к объектам другого.
Ассоциация,связывающая два класса, называется бинарной.
Существует четыре дополнения, применимых к ассоциациям:
Имя.Ассоциацииможет бытьприсвоеноимя, описывающееприродуотношения.
Роль. Класс,участвующийв ассоциации,играетв нейнекоторуюроль.
Кратность.Ассоциацииотражаютструктурныеотношениямежду объектами.
Агрегирование.Простаяассоциациямежду двумяклассамиотражаетструктурное отношениемежду равноправнымисущностями,когдаобаклассанаходятсянаодном концептуальномуровнеи ни один неявляетсяболее важным,чемдругой.
13
UML. Ассоциации
Рис. 4. Имена ассоциаций |
Рис. 5. Роли |
Рис. 6. Кратность
Рис. 7. Агрегирование отношения
14
UML. Простые зависимости
Рис. 8. Отношения зависимости
15
UML. Одиночное наследование
Моделирование отношений наследования осуществляется в таком порядке:
1.Найдите атрибуты, операции и обязанности,общие для двух или более классов из данной совокупности.
2.Вынесите эти элементы в некоторый общий класс (если надо, создайте но вый, но следите, чтобы уровней не оказалось слишкоммного).
3.Отметьте в модели, что более специализированные классы наследуют более общим, включив отношение обобщения, направленное от каждого потомка к его родителю.
16
UML. Отношение наследования
Рис. 9. Отношения наследования
17
UML. Структурные отношения
Моделирование структурныхотношенийпроизводится следующим образом:
1.Определите ассоциациюдля каждой пары классов, между объектами которых надо будет осуществлять навигацию.Это взгляд наассоциации с точки зрения данных.
2.Еслиобъекты одного классадолжны будут взаимодействовать с объектами другого иначе, чем в качестве параметров операции, следует определить между этими классамиассоциацию. Это взгляд наассоциации с точки зрения поведения.
3.Для каждой из определенных ассоциацийзадайте кратность (особенно если она не равна*, то есть значениюпо умолчанию) и имена ролей (особенно если это помогает объяснитьмодель).
4.Еслиодин из классовассоциации структурноили организационнопредставляет собой целое в отношенииклассов надругом конце ассоциации, выглядящихкакего части, пометьте такую ассоциацию какагрегирование.
18
UML. Структурные отношения
Рис. 10.
19
UML. Советы по моделированию
При моделировании отношений в UML соблюдайте следующие правила:
используйте зависимость,только если моделируемое отношение не является структурным;
используйте обобщение, только если имеет место отношение типа "является";
множественное наследование часто можно заменить агрегированием;
остерегайтесь циклических отношений обобщения;
поддерживайте баланс в отношенияхобобщения: иерархия наследования не должна быть ни слишкомглубокой (желательно не более пяти уровней), ни слишкомширокой (лучше прибегнуть к промежуточным абстрактным классам);
применяйте ассоциации прежде всего там, где между объектами существуют структурные отношения.
20