与以往不同的是,这一次的标题包含两种图的名称,为什么把这两种图放在一起总结和实践呢?因为他们之间有相似的地方或者说有联系,那么这两种图是用来干嘛的呢?下面我们再次走进UML世界,去了解一下这两种图是什么。
周所周知,在对待开发系统进行UML建模的时候,系统的用例图和类图以及对象图是对系统静态结构的描述,如果要描述系统的动态模型和对象之间的交互关系,就要用到UML的行为图,而行为图又分为状态图、活动图和交互图,我们今天要聊得图是交互图,其中交互图又分为序列图和协作图,他们用来描述对象之间的交互关系。
序列图(SequenceDiagrams):描述对象之间的交互顺序,着重体现对象间消息传递的时间顺序,强调对象之间消息的发送顺序,同时也显示对象之间的交互过程。
协作图(CollaborationDiagrams):又叫做合作图,描述对象之间的合作关系,更侧重于说明哪些对象之间有消息的传递。
需要注意的是,序列图和协作图可以互相转化。
我们先来看序列图,有的也叫做顺序图,序列图主要由对象、消息、生命线组成,而消息就是指对象之间的通信,可以是信号或者操作调用,生命线则是表示某段时间内对象是存在的。
消息的主要形式有:call、return、send、create、destroy等,消息的分类有:
简单消息:表示简单的控制流
同步消息:表示嵌套的控制流
异步消息:表示异步控制流
可以将一个简单的消息和一个同步消息合并成一个消息、
对于顺序图和协作图我们来做一个小结:
1二者在语义上等价,
2二者而已互相转化
3二者的侧重点不同:顺序图侧重时间顺序,合作图侧重对象之间的关系。
下面我们以机房收费系统为建模对象给出用户登录的一个时序图和协作图,比较简单,也很好理解,对于系统中的其它部分大家可以仿照着画出相应的时序图和协作图
登录系统的时序图:
一键转换的协作图: