Mil*_*ena 12 uml sequence-diagram
我们应该在哪种步骤中使用序列图中的返回线?
<- - - - - -
Run Code Online (Sandbox Code Playgroud)
chr*_*ney 12
返回行表示从方法/函数调用返回的控制流
对于返回结果的方法/函数,它将指示正在返回一个值.
例如
result
<-------------
Run Code Online (Sandbox Code Playgroud)
否则,对于void方法/函数,它只是箭头
<-------------
Run Code Online (Sandbox Code Playgroud)
对于异步调用,因为调用者不会对调用的方法/函数产生控制,所以如果返回结果,我只会使用返回行(例如非void方法/函数)
希望有所帮助
编辑
下面是我为搜索用例创建的序列图的搜索用例 示例的序列图示例http://web10.twitpic.com/img/107669708-1d6f9df82534756bfe2a684d4480cc43.4c00f3b0-full.png
请注意,匿名用户只进行异步调用,因为作为一个人,他们不会控制应用程序,因此没有返回箭头
还要注意search()调用的返回箭头,它返回'结果'
最后,创建箭头(------ |>)没有返回箭头,因为它们隐式返回实例化对象
编辑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()
}
Run Code Online (Sandbox Code Playgroud)
如您所见,除了其中一种方法之外的所有方法都不返回任何内容.如果这就是你想要的那么好,但我怀疑情况并非如此.
我还怀疑你不打算将sendEmail()方法放在User类中.
你还应该考虑checkAvailability()返回时发生的事情,因为控制流似乎返回给User然后莫名其妙地跳回到Appointment