Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uml Book (Rus).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
58.74 Mб
Скачать

Глава 5. Отношения

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

Существует три вида отношений, особенно важных для объектно-ориентиро­ванного моделирования:

  • зависимости, которые описывают существующие между классами отноше­ния использования (включая отношения уточнения, трассировки и связы­вания);

  • обобщения, связывающие обобщенные классы со специализированными;

  • ассоциации, представляющие структурные отношения между объектами.

Каждый из этих типов позволяет по-разному комбинировать абстракции (под­робнее об отношениях рассказано в главе 10).

Построение сети отношений похоже на создание сбалансированного распреде­ления обязанностей между классами. Стоит слегка перестараться - и вы получи­те запутанный клубок отношений; в результате модель окажется абсолютно непо­нятной. С другой стороны, чрезмерное упрощение приведет к тому, что останется нераскрытым богатство связей между различными элементами системы.

Введение

Если вы строите дом, то такие сущности, как стены, окна, двери, встроенные шкафы, потолки и осветительные приборы, станут частью вашего словаря. Но ни одна из них не существует сама по себе. Стены соединены с другими стенами. Окна и двери располагаются в стенах, обеспечивая проходы для людей и пропус­кая свет. Встроенные шкафы и осветительные приборы физически связаны со сте­нами и потолком. Группируя все эти объекты, вы создаете сущности более высо­кого уровня, например комнаты.

Между сущностями можно обнаружить не только структурные отношения. В вашем доме наверняка есть окна, но, вполне возможно, разного типа. Это могут быть большие неоткрывающиеся окна-«фонари» или маленькие кухонные окош­ки. Некоторые открываются вверх и вниз, другие раздвигаются в стороны. Рама может быть одинарная или двойная. Независимо от перечисленных различий, всем этим видам присуще некоторое общее свойство «оконности»: каждое окно встроено в стенной проем, чтобы пропускать свет, воздух, а иногда и людей.

На языке UML способы, которыми элементы связаны друг с другом, модели­руются в виде отношений. В объектно-ориентированном моделировании выделя­ют три типа наиболее важных отношений: зависимости, обобщения и ассоциации.

Отношения зависимости - это отношения использования. Например, трубы отопления зависят от нагревателя, подогревающего воду, которая в них течет.

Отношения обобщения связывают общие классы со специализированными;

здесь также применяются термины «субкласс/суперкласс» или «потомок/роди­тель». Например, «фонарь» - это окно с большой нераздвижной рамой, а патио -окно, раздвигающееся в стороны.

Отношения ассоциации - структурные взаимосвязи между объектами: ком­наты состоят из стен, в которые могут быть встроены двери и окна; иногда через стены проходят трубы отопления.

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

Для каждого из названных типов отношений язык UML предоставляет гра­фическое изображение, как показано на рис. 5.1. Эта нотация позволяет визуализировать моделируемые отношения независимо от применяемого языка про­граммирования, так чтобы подчеркнуть их наиболее важные составляющие: имя, связываемые сущности и свойства.

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