UML顺序图是将交互关系表示为一个二维图。纵向是时间轴,时间沿竖线向下延伸。横向轴代表了在协作中各独立对象的类元角色。类元角色用生命线表示。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。
UML顺序图中直接创建对象
在一个UML顺序图上注明对象的创建通常有两种方法。首先,你可以用<>版型来发送一个消息,如同图2如...中所示OrderCheckout所示的那样。其次,你可以通过把图中分类器位置下移,在其侧面调用一个消息的方式直接的显示创建,如你在图1所见的theStudent和图⒉的CreditCardPayment。直接方法的最主要的好处是它可以形象的表示出对象从无到有的逻辑。
◆为软件消息使用操作符号。
当一个消息被发给一个软件实现的分类器时,例如类、接口、或组件。通用的准则是使用实现语言的语法来描述消息名。例如,在图3中,消息commit(transactionID)被发送给sourceaccount对象,它使用了类似于Java、C++、和C_#语言的语法。
◆为涉及人和组织角色的消息使用叙述性文字。
当一条消息的来源或目标人或组织的角色时,需要使用简短的叙述性文字来描述传达的信息、来标记消息。例如,在图1中,被student角色发送出的消息是providesname和providesstudentnumber,它们描述了这个人在做什么。
◆推荐使用参数名称,而不是参数类型
注意在图3中,大多数的消息都使用参数名称来注明参数,而不是使用类型。唯一的例外是start()消息中传递的UserID参数。这可以使你正确地判定该消息传递了什么值,有时候类型信息是不够的。例如,消息addDeposit(amount,target,transactionID)传达的信息要比addDeposit(Currency,Account,int)多。
UML顺序图中返回值的原则
当返回值非常明显时就不要对返回值建模。
返回值的显示是使用带返回值标记的虚线箭头,返回值是可选的。例如,图1中返回值theStudent表示了对SecurityLogon类调用的消息的返回值,然而图2中对order发送getTotal()消息就没有返回值。在第一个例子中,创建一个securitylogon对象会产生一个student对象,这是不明显的,然而向order要求一个小计的返回值是很明显的。
只有当你需要在别处引用返回值时才对返回值建模。
如果你需要在UML顺序图的另一处(一般是作为参数传递给另一个消息)引用返回值,那就需要在图中著名返回值,这样就能清楚的表明它的出处。
◆在箭头旁边调整返回值。
大多数的建模者都会把返回值放在靠近箭头地方,例如图2中的theStudent。一般我们认为返回值的接受者将会使用返回值,因此把返回值放在靠近分类器的位置是有意义的。
◆返回值建模为方法调用的一部分。
不要使用虚线来弄乱UML顺序图,考虑在消息名上注明返回值来替代虚线。使用符号message(parameters):returnValue,图2就使用了这种符号:reserve():AuthorizationCode。用这个方法,你只会有单条消息路线,而不会有一条消息路线和一条返回值路线。
【编辑推荐】