Как мне смоделировать объект, возвращаемый из вызова функции в диаграмме последовательности?

#uml #sequence-diagram

#uml #последовательность-диаграмма

Вопрос:

Предположим, у меня есть код типа

 user = AuthHandler.getLoggedInUser()
user.setName(name)
UserDAO.update(user)
  

Как будет выглядеть диаграмма последовательности?

Я сделал

Правильно ли это? часть user / UserDao?

Ответ №1:

Диаграммы последовательности не требуют много подробностей о возвращаемом объекте.

Когда операция выполняется в объекте / классе (прямоугольники), возвращающаяся пунктирная стрелка должна возвращаться к строке и объекту, откуда она была получена.

диаграмма последовательности uml, возвращающая значение

Если возвращается значение (будь то объект или переменная простого типа), его идентификатор должен отображаться над стрелкой возврата.

Необязательные теги «return» могут отображаться над стрелками, которые явно не возвращают значение.

В Интернете есть несколько руководств, я рекомендую:

http://www.agilemodeling.com/essays/umlDiagrams.htm

Редактировать:

На диаграммах последовательности тип возвращаемого объекта указывается идентификатором в тексте в каждом поле, например «user: Пользователь» или «:UserDao».

Затем дополнительная диаграмма классов или диаграмма объектов, основанная на заданных объектах, может предоставить дополнительную информацию к фактической диаграмме последовательности, используя тот же идентификатор класса или идентификатор объекта, например: «User» или «UserDao».

Не путайте идентификатор класса с идентификатором экземпляра.

Обратите внимание, что на данном рисунке некоторые поля пропускают идентификатор конкретного экземпляра объекта или заменяют его символом звездочки.

Комментарии:

1. У меня создалось впечатление, что возврат был необязательным? особенно, если я использую что-то вроде user := ?

2. Я думаю, что текстовый тег «return» является необязательным, а стрелка — нет.

3. Хорошо, я просто посмотрел это. Из здесь я прочитал: «Не моделируйте возвращаемое значение, когда очевидно, что возвращается» (в разделе «4. Рекомендации по возвращаемым значениям»). Я думаю, если у меня есть что-то вроде obj := getSomething() или getSomething():obj , мне не нужно моделировать возврат? Как я вижу, он возвращается из вызова сообщения? Я думаю, что это может уменьшить беспорядок на диаграммах, иначе многие вызовы будут иметь строку возврата?

4. Как я вижу, вы можете пропустить текст для вашего значения или тег «return». Тем не менее, я думаю, что важно добавить возвращаемую строку как отдельную часть диаграммы, потому что она указывает, где происходит процесс.

Ответ №2:

Диаграмма правильная, насколько я могу видеть. На диаграммах последовательности нет графического символа для отображения потока объектов — только параметры в сообщении, как вы показали. (диаграммы действий c / f, которые имеют обозначения для потока объектов).

hth.