综述
时序图是一种强调时间顺序的对象交互图(1.是描述对象间交互的图 2.这种图是强调时间顺序的),换句话说就是描述谁和谁先做什么,然后再做什么的图
在时序图中,首先把参与交互的对象放在图的上方,沿X轴方向排列,通常把发起交互的对象放在左边,较下级的对象依次放在右边,然后把这些对象发送和接受的消息沿Y轴方向按时间顺序从上到下放置。这样就提供了控制流随着时间推移的清晰的可视化轨迹。
推荐工具:依然是StarUML
时序图的基本元素
- 1.对象(Object)
【定义】:表示的是时序图中的参与者
【描述方式】:在外面画一个矩形,矩形内部的描述文字有三种格式:1.对象名: 类名 2. 类名 3.对象名。
【备注】大多数情况下,在描述上并没有将对象单独拿出来作为一种基本元素,都是将对象放在生命线(后面会介绍)中一起提到
- 2.生命线(Lifelines)
【定义】:每个对象的底部中心的位置都带有生命线。生命线是一个时间线,从时序图的顶部一直延伸到底部,长度当然由你的业务来决定啦,生命线表示了对象存在的时间
【描述方式】:表示为从对象图标向下延伸的一条虚线
- 3.控制焦点(Focus Of Control)
【定义】:用来表示时序图中对象执行某个操作的一段时间,在很多文章里面将其形象的理解为程序函数 { } 中的内容。
【描述方式】:用一个细长的矩形狂表示,顶端与收到的消息产生时间对齐
- 4.消息(Messages)
【定义】:A 向 B 发送消息message1,其实就是叫 B 去调用 message1这个方法。消息一般分为同步消息,异步消息和返回消息,自关联消息(也就是自己调用自己的方法)
【描述方式】:同步消息用带实心箭头的直线表示,异步消息用带普通箭头的直线表示,返回消息用虚线普通箭头表示,返回消息也可以区分同步和异步,在StarUML中可以自行修改。
【备注】:同步和异步的区分一方面是按照函数本身的执行方式来区别,另一方面是按照实际做的业务本身来区别。举个栗子比如说下载素材,下载这件事情本来是异步去执行,但是有可能这个具体的函数看起来是同步执行的,这个时候就看你怎么选择了。
- 5.创建对象
【定义】:创建对象也算是消息的一种,通过发送消息的方式创建对象。
【描述方式】:在时序图的图形表示中,和其他对象不一样的是,其他对象通常位于整个时序图的顶部,而被创建的对象则位于图的中间部位。
【备注】:创建在使用中比较少看到,基本都是最开始就把所有对象创建好,然后画时序图,为了以后能看懂别的时序图,这里特地提出。
- 6.销毁对象
【定义】:创建对象也算是消息的一种,通过发送消息的方式销毁对象。
【描述方式】:描述方式没有什么变化,就是发送消息给对象,只是在对象的生命线中会添加一个”X“,来进行标示。
【备注】:删除对象一般在时序图中也不是很常见,如果没有要特别注意的删除事件,一般都是不写的。
- 7.结束点
【定义】:标记整个业务结束的位置
【描述方式】:实心黑圆圈
来个示例吧
以AR素材下载为例,简单讲述进入VC之后自动下载到最后刷新界面的时序图
参考文章
https://www.ibm.com/developerworks/rational/library/3101.html
http://www.codemag.com/Article/0203081
http://www.sparxsystems.cn/resources/uml2_tutorial/uml2_sequencediagram.html
http://www.cleey.com/blog/single/id/873.html