Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lec08

.pdf
Скачиваний:
9
Добавлен:
10.06.2015
Размер:
2.35 Mб
Скачать

UML. Отношения

Обобщение (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

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