UML系列文章(16)基本行为---交互

在任何有意义的系统中,对象都不是孤立存在的,他们之间相互之间通过传递消息进行交互。交互是一种行为,这种行为由语境中的一组对象为达到某一目的而交换的一组消息构成。

可以用交互对协作的动态方面建模,以表示扮演特定角色的对象的群体通过共同工作来完成一些超出其中各个元素行为总和的行为。这些角色表示类、接口、构件、结点和用况的原型实例。它们的动态方面被可视化、详述、构造和文档化为控制流,控制流可以是系统中的简单的、顺序的线程,也可以是涉及分支、循环、递归和文档化为控制流,控制流可以是系统中的简单的,顺序的线程,也可以是涉及分支、循环、递归和并发的更复杂的流。可以用两种方式来对一个交互建模:一种方式是强调消息的时间顺序;另一种方式是强调在对象的某些结构组织的语境中消息的排列顺序。

1.入门

在UML中,使用像类图和对象图这样的元素对系统静态方面建模。通过这些图,可以可视化、详述、构造和文档化系统中的事物,包括类、接口、构件、结点、用况和他们的实例,以及这些事物相互之间的关系。

在UML中,使用交互来对系统的动态方面建模。像对象图那样,交互通过引入所有共同完成某些动作的对象,来静态地设置它的行为环境。除此之外,交互图还要引入在对象之间传送的消息。通常,消息引发一个操作的启用或一个信号的发送,消息还可以创建和撤销其他对象。

可以使用交互对操作、类、构件、用况或整个系统中的控制流进行建模。使用交互图,可以按两种方式来解释这些流:一种方式着眼于消息是如何按照时间顺序调度的;另一种方式则着眼于交互中对象间的结构关系,并考虑消息是如何在这个结构的语境中被传递的。

   UML提供了对消息的图形化表示,如下图,这种可视化化消息表示法强调了消息的最重要的部分:名称、参数和顺序。在图形上,把消息表示为一条有向直线,并且通常还包含相应的操作名。

2.术语和概念

交互(interaction)是一种行为,这种行为由语境中的一组对象为达到某一目的而交换的一组消息构成。消息(message)是对传送信息的对象之间所进行的通信的规约。其中带有对将要发生的活动的期望。

  • 语境

    在有对象相互连接的地方,到处可以发现交互。可以在系统或子系统语境中的对象协作中发现交互,也可以在操作的语境中发现交互、还可以在类的语境中发现交互。

    通常可以在存在于系统或子系统语境中的对象协作中发现交互。举例来说,在一个Web商务系统中会发现客户端的对象(如类BookOrder和OrderForm的实例)是彼此交互的。还会发现客户端的对象(如BookOrder的实例)和服务端的对象(如BackOrderManager)也是彼此交互的。因此,这些交互不仅涉及对象间局部的协作(如围绕orderForm的交互),而且还可能跨越系统的多个概念层(如围绕BackOrderManager的交互)。

     在操作的实现中也可以发现对象间的交互。操作的参数、操作的任何局部变量以及操作的全局对象都可发生交互以完成操作所实现的算法。例如,为移动式机器人中的一个类所定义的操作MoveToPosition(p:Position)将涉及关于一个参数(p)、该操作的一个全局对象(如对象currentPosition)和一些可能的局部对象(如该操作用来计算到一个新位置的路径上的中间点的局部变量)的交互。

   最后在类的语境中也存在交互。可以用交互来可视化、详述、构造和文档化一个类的语义。

  • 对象和角色
  • 链和连接件
  • 消息
  • 序列
  • 创建、修改和撤销
  • 表示法 

3.常用建模技术

对控制流建模:

4.提示和技巧

在用UML对交互建模时,要记住每个交互表示对象群体的动态方面。一个结构良好的交互应满足如下要求:

  • 它仅仅包括那些共同工作来完成超出所有这些元素的行为总和的某些行为的对象
  • 它具有清晰的语境,并且能在操作、类或整个系统的语境中表示对象之间的交互
  • 它是有效的,应该在时间和资源的优化平衡下完成它的行为。
  • 它是可适应的,在交互中可能变化的元素应是独立的,以便于修改。
  • 它是可理解的,应该是直接而明确的,没有隐蔽的副作用或模糊的语义。

绘制交互图时,遵循如下策略:

  • 选择交互强调的重点。既可以强调消息的时间顺序,也可以强调处于对象的结构组件语境中的消息序列。但不能同时强调两者。
  • 在独立子序列中的事件只有偏序关系。每个子序列内部都是有序的,但是不同的子序列中的事件的相对时间并不固定。
  • 仅显示对于理解该语境中的交互较为重要的对象的特征(属性值、角色和状态)
  • 仅显示对于理解该语境中的交互较为重要的消息的特征(如参数、并发语义和返回值)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值