Что именно представляет обратная линия (пунктирная линия) на диаграмме последовательности? - PullRequest
11 голосов
/ 29 мая 2010

В каких шагах мы должны использовать обратную строку в диаграмме последовательности?

<- - - - - - 

Ответы [ 3 ]

11 голосов
/ 29 мая 2010

Строка возврата представляет поток управления, возвращающийся из вызова метода / функции

В случае методов / функций, которые возвращают результат, это будет означать, что значение возвращается.

* 1005 Е.Г. *

    result
<-------------

В противном случае для пустых методов / функций это будет просто стрелка

<-------------

Для асинхронных вызовов, так как вызывающая сторона не предоставляет управление вызываемому методу / функции, я бы использовал обратную строку, только если она вернула результат (например, не пустые методы / функции)

Надеюсь, это поможет

EDIT

Вот пример диаграммы последовательности, которую я создал для варианта использования поиска пример диаграммы последовательности, которую я создал для варианта использования поиска http://web10.twitpic.com/img/107669708-1d6f9df82534756bfe2a684d4480cc43.4c00f3b0-full.png

Обратите внимание, что анонимный пользователь делает только асинхронные вызовы, потому что, будучи человеком, он не передает управление приложению, следовательно, нет стрелок возврата

Также обратите внимание на стрелку возврата вызова search (), которая возвращает «результаты»

Наконец, у стрелок создания (------ |>) нет стрелок возврата, поскольку они неявно возвращают экземпляр объекта

РЕДАКТИРОВАТЬ 2

В ответ на ваш обновленный вопрос:

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

Из вашей диаграммы моя интерпретация (в виде псевдокода) будет:

class User{
    public void login()
    public void sendEmail()
}

class Patient{
    public void getPatient()
}

class Doctor{
    public void getDoctor()
}

class Appointment{
    //This method returns something, but it's not clear what, so I assumed a boolean
    public boolean checkAvailability()
}

Как видите, все эти методы, кроме одного, ничего не возвращают. Если это то, что вы хотели, тогда хорошо, но я подозреваю, что это не так.

Я также подозреваю, что вы не намеревались использовать метод sendEmail () в классе User.

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

4 голосов
/ 29 мая 2010

Это сообщение возврата операции. Вы можете указать возвращаемые значения, используя этот символ.

3 голосов
/ 29 мая 2010

Простой пример:

club                       member
  |
  |           getName()
  '------------------------>.
                            |
                            |
       result: "lee"        |
   <- - - - - - - - - - - - '

 String memberName = member.getName();
 //memberName now contains "lee"

Пунктирная стрелка <- - - - это возвращаемое значение из вызова метода. </p>

...