UML 图中的消息

消息是“统一建模语言”(UML) 图中的一个元素,它定义进行交互的实例之间的特定类型的通信。消息将信息从一个用生命线表示的实例传递到交互中的另一个实例。

消息类型

消息指定了发送方和接收方,并定义了生命线之间出现的通信的类型。例如,通信可以使用同步调用消息或者异步调用消息来调用操作,可以使用异步信号来发出信号,可以创建或破坏参与者。

可以使用下表中所列示的五种类型的消息来显示参与交互的生命线之间的通信。

消息类型 描述 示例
创建 创建消息表示创建参与交互的实例。创建消息由关键字 «create» 来表示。目标生命线从创建消息所在处开始。 在银行方案中,银行经理可以通过在客户机上向服务器发送一条创建消息来启动信用检查。
破坏 破坏消息表示破坏参与交互的实例。破坏消息由关键字 «destroy» 来表示。目标生命线在破坏消息所在处结束,使用一个 X 来表示。 银行经理在启动信用检查之后可以关闭或破坏客户的信用程序应用程序。
同步调用 与操作相关联的同步调用具有发送消息和接收消息。消息是从源生命线发送至目标生命线的。在接收到来自目标生命线的响应之前,源生命线将无法执行其他操作。 银行出纳要向银行经理发送一个信贷请求以获得经理的批准,然后必须等待经理答复之后才能进一步为客户服务。
异步调用 与操作相关联的异步调用通常只有发送消息,但是也可以具有应答消息。与同步消息不同的是,并不会阻止源生命线接收或发送其他消息。还可以分别移动发送点和接收点,以延迟发送事件和接收事件之间的时间。如果响应对时间或顺序不敏感,那么可以选择执行此操作。 银行客户可以请求信贷,但是可以通过电话来查询银行信息或者从自动柜员机中取款,同时要等待来自信贷应用程序的响应。
异步信号 异步信号消息与信号相关联。信号与消息不同,因为信号没有相关联的操作。信号可以表示中断情况或错误情况。要指定信号,应创建异步调用消息并在消息属性视图中更改类型。 信贷机构可以向银行经理发送一条错误信号消息,指出未能连接至征信机构。
丢失与找到 丢失的消息就是已经知道发送方、但是不知道接收方的消息。找到的消息就是不知道发送方、但是具有接收方的消息。 外部参与者向银行经理发送一条消息。参与者位于时序图的作用域外部,因此,它是找到的消息。将消息发送至 UML 图作用域外部的元素时,就可能会产生丢失的消息。

只有在异步消息中才能逐个移动发送点和接收点。可以移动异步消息的发送点和接收点来控制发送事件和接收事件之间的时间延迟,其结果被称为偏差的消息。您可以创建具有或者没有行为执行规范的异步消息。

自我指导式消息是从源生命线发送至它自身的一种消息。自我指导式消息可以是递归调用或者对属于同一个对象的另一项操作或信号的调用。

源生命线发送到目标生命线的消息表示目标生命线实现的操作或信号。可命名和排序消息。线或箭头的外观反映了消息的属性。下表说明了 UML 图中用来表示消息的图形。

消息类型 图形 描述 说明
异步 一条线,带有指向右边的开口箭头。 一条线,带有开口箭头 此图形表示异步信号或异步调用,在此过程中,源对象发送消息后立即继续下一步骤。
同步 一条线,带有指向右边的实心箭头。 一条线,带有指向接收生命线的实心箭头 此图形表示同步调用操作,在此操作中,源对象发送一条消息并等待来自目标的返回消息,然后源才能继续执行其他操作。
同步返回 一条虚线,带有指向左边的实心箭头。 一条虚线,带有指向发送生命线的实心箭头 此图形表示来自过程调用的返回消息。当创建同步消息时,缺省情况下会创建返回消息。可在“首选项”窗口中更改此缺省设置。
丢失与找到 带有开口箭头的一条线,并且在任一端包含一个点。 此图形表示丢失的消息或找到的消息。丢失的消息在箭头所在的一端包含一个点,表示不知道目标。如果在消息源所在的一端包含一个点,那么表示不知道发送方的找到的消息。

消息表示操作调用或者发送和接收信号。当消息表示一项操作时,操作名称就标识该消息。该消息的自变量被传递至目标源。返回消息包含最终获得的操作调用的自变量。当消息表示信号时,消息的自变量就是信号本身。如果消息是同步调用,那么要从被调用的生命线将消息返回给调用生命线之后才能继续执行调用生命线。

可使用名称或操作特征符来标识消息。名称仅标识与操作不相关联的消息的名称。当有操作与消息关联时,操作名会替换该名称。将显示操作特征符来标识操作的名称。在设计阶段,可以在图中使用特征符来为编写设计的开发者提供详细信息。

如下图所示,消息显示为一条带有箭头的线。箭头指向发送消息的方向,也就是从发送消息端指向接收消息端。以下示例说明在表示银行客户遵循此过程来申请贷款的银行方案的时序图中如何显示消息。
  • 客户向银行出纳发出贷款申请。
  • 银行出纳将该申请发送给银行经理处理,并等待经理完成处理。
  • 然后,银行经理启动信用检查程序,输入数据,并等待信贷机构发送结果。
  • 银行经理接收来自信贷机构的响应,然后向银行出纳发送一条消息,告知所作出的决定。
  • 然后,银行出纳向该客户发送一条消息,告知是否已核准贷款申请。
  • 然后,银行经理将关闭信贷机构程序,客户也就完成了交易。

用来说明消息如何在不同的银行生命线之间传递的银行交易示例。


反馈