UML使用交互图来描述对象之间通过消息的交互。交互图可以用于动态对象建模,交互图包括顺序图和通信图两种。
1.顺序图和通信图
1.1 顺序图具有更丰富的符号标记,它以一种栅栏格式描述交互,其中在右侧添加新创建的对象。如图:类A具有名为doOne的方法和类型为B的属性,同时类B具有名为doTwo和doTime的方法。
1.2 通信图以图或网络格式描述对象交互,其中对象可以置于图中的任何位置(这是用于在墙上绘制草图的基本优点),如图:
1.3顺序图具有更强的表示能力,UML规范更多是以顺序图为核心,因此顺序图对UML工具的支持更好,而绘制草图则通信图更好。如图:
2.常用的UML交互图表示法
2.1 使用生命线框图表示参与者。
2.2 消息表达式的基本语法:return = message(parameter : parameterType) : returnType 没有参数时可以省略圆括号。如图:
2.3 如果明显或不重要,可以不包含类型信息。例如:
initialize(code)
initialize
d = getProductDescription(id)
d = getProductDescription(id : ItemID)
d = getProductDescription(id : ItemID) : ProductDescrption
2.4单实例类对象,对类进行实例化时,只能存在一个实例,决不能是两个,在UML交互图中,遇到此类对象时,要在生命线框图右上角标识“1”。
3.顺序图的基本表示法
3.1 生命线框图和生命线:与通信图相比,顺序图中的生命线框图包括框图之下的垂直延伸线。
3.2 消息:在垂直生命线之间,用带实心箭头的实线并附以消息表达式的方式表示对象间的每个消息(典型的同步消息),如图,生命线自上而下表示时间顺序,最开始的消息被称为创始消息,以实心圆作为起点来表示此类消息。
3.3 控制期和执行规格条:在顺序图中使用执行规格条来表示控制期。
3.4 表示应答或返回:a.使用消息语法return Var = message(parameter);b.在活动条末端使用应答(或返回)消息线;如图:
3.5 发送给自身的消息:使用嵌套的活动条表示对象发送给自身的消息,如图:
3.6 实例的创建:UML要求使用虚线,实心箭头表示常规的同步消息,开发箭头表示异步调用,如图:
3.7 对象生命线和对象的销毁 :在某些情况下,需要显式地表示对象的销毁,如图:
3.8 UML顺序图中的图框
UML使用图框去支持有条件和循环的构造,图框是图的区域或片段,在图框中具有操作符或标签和保护信息,如图15-12~15:
对集合中所有成员进行迭代的常用算法是向每个成员发送同一条消息,如图15-16:
上图中生命线上的选择器表达式,用于在一组对象中选择一个对象。生命线参与者应该表示一个对象,而不是集合。
另一种方式,目的是相同的,但是去除了细节,见图15-17:
3.10 图框是可以嵌套的,见图15-18:
3.11 关联交互图,如图15-19:
3.12 对类调用静态(或类)方法的消息,如图15-20:
3.13 多态消息和案例,如图15-21:
3.14 异步和同步调用,如图15-22: