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

5.25. Соотнесение операций с сообщениями

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

Рисунок 5.16. Фрагмент диаграммы взаимодействия.

Однако при идентификации операций придется соотнести с ними соответствующие сообще­ния. В результате диаграмма последовательности изменится.

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

Соотнести сообщение с существующей операцией можно следующим образом. Убедитесь, что получающий сообщение объект (сервер) уже соотнесен с классом. Щелкните правой кнопкой мыши на сообщении диаграммы последовательности или кооперации. Появится список операций сервера. Выберите операцию в списке.

Для удаления соответствия между сообщением и операцией дважды щелкните мышью на сообщении диаграммы последовательности или кооперации. В поле имени удалите имя операции и введите новое сообщение.

Если требуется определить для сообщения новую операцию убедитесь, что получающий сообщение объект (сервер) уже соотнесен с классом. Щелкните правой кнопкой мыши на сообщении диаграммы последовательности или кооперации. Выберите пункт New operation (новая операция). Введите имя и детальное описание новой операции. Параметры окна спецификации операции рассматривались выше. Нажмите на кнопку ОК, чтобы закрыть окно спецификации операции и добавить новую опера­цию. Щелкните правой кнопкой мыши на сообщении. Выберите новую операцию в появившемся списке.

Если нужно проверить, все ли сообщения диаграммы соотнесены с операциями в меню модели выберите пункт Report > Show Unresolved Messages (Отчет > Показать свободные сообщения). Появится список всех сообщений, которые еще не были соотнесены с операциями.

5.25. Отношения

5.25.1. Отношение ассоциации

Ассоциация (association) — это семантическое отношение между классами. Ассоциация дает классу возможность узнавать об общих атрибутах и операциях другого класса. Ее рисуют на диаграмме клас­сов в виде линии (см. рис. 5.17). После того как классы связаны отношением ассоциации, они могут передавать друг другу сообщения на диа­грамме последовательности или кооперации. Ассоциации могут быть ненаправленными (иногда говорят - двунаправлен­ными) (рис. 5.17) или однонаправленными. На языке UML двунаправленные ассоциации изображают в виде простой линии без стрелок или со стрелками с обеих сторон. На однонаправленной ассоциации ставят только одну стрелку, показывающую направление отношения. После определения ассоциации Rational Rose помещает в классы соответствующие дополнительные атри­буты.

Рисунок 5.17. Ненаправленная ассоциация.

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

Ассоциации могут быть рефлексивными. Рефлексивная ассоциация предполагает, что один экзем­пляр класса взаимодействует с другими экземплярами этого же класса.