返回线(虚线)在序列图中的确切含义是什么?

时间:2010-05-29 10:41:17

标签: uml sequence-diagram

我们应该在哪个步骤中使用序列图中的返回线?

<- - - - - - 

3 个答案:

答案 0 :(得分:11)

返回行表示从方法/函数调用返回的控制流

对于返回结果的方法/函数,它将指示正在返回一个值。

E.g。

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

否则,对于void方法/函数,它只是箭头

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

对于异步调用,因为调用者不会对调用的方法/函数产生控制,所以如果返回结果,我只会使用返回行(例如非void方法/函数)

希望有所帮助

修改

以下是我为搜索用例创建的序列图的示例 example of a sequence diagram I created for a search use case http://web10.twitpic.com/img/107669708-1d6f9df82534756bfe2a684d4480cc43.4c00f3b0-full.png

请注意,匿名用户只进行异步调用,因为作为一个人,他们不会控制应用程序,因此没有返回箭头

还要注意search()调用的返回箭头,它返回'results'

最后,创建箭头(------ |&gt;)没有返回箭头,因为它们隐式返回实例化对象

编辑2

回答您的最新问题:

我不会返回用户操作的箭头,例如login(),因为结果不会以与对象相同的方式返回给用户,而是通常输出到某种UI。查看它的另一种方式是用户不在程序范围内,因此直接返回结果没有意义。

从你的图表中,我的解释(以某种伪代码)将是:

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()返回时发生的事情,因为控制流似乎返回给User然后莫名其妙地跳回到Appointment

答案 1 :(得分:3)

它表示操作的返回消息。您可以使用此符号指定返回值。

答案 2 :(得分:3)

简单示例:

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

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

虚线箭头&lt; - - - - 是方法调用的返回值。