· 合作图
协作图是一种类图,它包含类元角色和关联角色,而不仅仅是类元和关联。类元角色和关联角色描述了对象的配置和当一个协作的实例执行时可能出现的连接。当协作被实例化时,对象受限于类元角色,连接受限于关联角色。关联角色也可以被各种不同的临时连接所担当,例如过程参量或局部过程变量。连接符号可以使用构造型表示临时连接(《
parameter 》或《 local
》)或调用同一个对象(《 self
》)。虽然整个系统中可能有其他的对象,但只有涉及到协作的对象才会被表示出来。换而言之,协作图只对相互间具有交互作用的对象和对象间的关联建模,而忽略了其他对象和关联。图
8-3 为一个交互图。
图 8–3 合作图
可以将对象标识成四个组:存在于整个交互作用中的对象;在交互作用中创建的对象(使用约束
{new} );在交互作用中销毁的对象(使用约束
{destroyed}
);在交互作用中创建并销毁的对象(使用约束
{transient}
)。设计时可以首先表示操作开始时可得的对象和连接,然后决定控制如何流向图中正确的对象去实现操作。
虽然协作直接表现了操作的实现,它们也可以表示整个类的实现。在这种使用中,它表示了用来实现类的所有操作的语境。这这使得对象在不同的操作中可以担当多种角色。这种视图可以通过描述对象所有操作的协作的联合来构造。
· 1. 消息
消息可以用依附于链接的带标记的箭头表示。每个消息包括一个顺序号、一张可选的前任消息的表、一个可选的监护条件、一个名字和参量表、可选的返回值表。顺序号包括线程的名字(可选)。同一个线程内的所有消息按照顺序排列。除非有一个明显的顺序依赖关系,不同线程内的消息是并行的。各种实现的细节会被加入,如同步与异步消息的区别。
· 2. 流
通常,在完整的操作中协作图包含对象的符号。然而,有时对象具有不同的状态并且必须弄明确表达出来。例如,一个对象可以改变位置,或者在不同的时刻它的关联有很大区别。对象可以用它的类与它所处的状态表示即具有状态类的对象。同一个对象可以表示多次,每次有不同的位置和状态。
代表同一对象的不同对象符号可以用变成流联系起来。变成流是从一个对象状态到另一个的转换。它用带有构造型《
become
》的箭头表示,并且可以用顺序号标记表示它何时出现(如
图 8 – 4
)。变成流也可以用来表示一个对象从一个位置到另一个位置的迁移。
构造型《 copy
》不经常出现,它表示通过拷贝另一个对象值而得到的一个对象值。
表 8–1 表示了几种对象流的关系。
图 8–4 变成流
流
|
功能
|
表示法
|
变成
|
从一个对象值变化到另一个对象值
|
<<become>>
|
拷贝
|
拷贝一个对象,从此以后,该对象为独立对象
|
<<copy>>
|
表 8–1 流关系的种类
· 3. 协作图与顺序图
协作图和顺序图都表示出了对象间的交互作用,但是它们侧重点不同。顺序图清楚地表示了交互作用中的时间顺序,但没有明确表示对象间的关系。协作图清楚地表示了对象间的关系,但时间顺序必须从顺序号获得。顺序图常常用于表示方案,而协作图用于过程的详细设计。
|