一、时序图
时序图是一种强调消息时序的交互图,他由对象(Object)、消息(Message)、生命线(Lifeline)和Combined Fragments组成,它主要描述系统中对象和对象之间的交互,它将这些交互建模成消息交换。
时序图将交互关系展示成了一个平面二维图,其中纵向标示时间轴,时间沿竖线从上向下进行。横向轴标示了交互中各各个对象。对象的的用生命线表示。消息从一个对象的生命线到另一个对象生命线的箭头表示,箭头以时间顺序在图中从上到下排列,从左到右排列。
对象(Object)和生命线(Lifeline)
生命线头上那个方正的框里面存放的就是对象,对象有自己的名字,生命线其实就是从上到下的一个虚线。生命线标示一个对象存在的生命周期,两条生命线中间通过消息连接起来,
![fb766dac1520e0bf18dbe9840057a849.png](https://i-blog.csdnimg.cn/blog_migrate/7a31e0f6577a747087e57a82e3de0927.jpeg)
image.png
消息(Message)
消息用于对象间传递信息,对象之间的信息�互通就是通过消息,消息按照分类可分为:同步消息(Synchronous Message),异步消息(Asynchronous Message)和返回消息(Return Message) 自关联消息(Self-Message)
- 同步消息:发送消息的对象在发送消息后会挂住,等消息接受对象接受消息返回后才会解除挂住的状态继续自己的工作。
- 异步消息:发送消息的对象在发送消息后会继续自己的工作,而不等消息接受对象接受消息返回。
- 返回消息:标示发送消息后返回的动作
- 自关联消息:一个对象内自调用的情况。
![eb7abfbd70cdfdc02789a6e016b87679.png](https://i-blog.csdnimg.cn/blog_migrate/01d1dbceac45bdba53213fad01f30c1d.jpeg)
- image.png
Combined Fragments
标示有一定条件的消息发送,
- Alternative fragment(denoted “alt”) 标示 if…then…else
- Option fragment (denoted “opt”) 标示Switch
- Parallel fragment (denoted “par”) 标示同时发生
- Loop fragment(denoted “loop”) 标示for
- Break标示退出循环
1.loop:
当没有指定循环边界默认范围为[0,无穷大]:
![0b2f56069f80f86bcce29668eb7c7acd.png](https://i-blog.csdnimg.cn/blog_migrate/232f4e8f38069b631f4f5e8bd9ed7ad7.jpeg)
image.png
如果只指定了一个值,那么默认执行该值次数:
![181de6388b8c11056868ae4a923e3d7c.png](https://i-blog.csdnimg.cn/blog_migrate/2aaba6d12856f8c98944fe68b6e2d6b2.jpeg)
image.png
指定了循环边界,则最少执行最小值值,最多执行最大值次数:
![0795a152fc1d94ce28bc5d64e4de40a9.png](https://i-blog.csdnimg.cn/blog_migrate/8bae386d439c010f600fab7af8cf0da7.jpeg)
image.png
实现dowhile方式,至少执行一次,如果size<0则退出:
![497567509b3ed6188da219dadd5fadd1.png](https://i-blog.csdnimg.cn/blog_migrate/6081b9359461caa4ead04d7b7fbeed4a.jpeg)
image.png
2. alt:
条件判断,如果n>0则执行agree函数否者执行reject函数
![f41463a356bcc56ae78cc6b321a18ca1.png](https://i-blog.csdnimg.cn/blog_migrate/d68c7d31db832e60957246efc550eec6.jpeg)
image.png
3. opt:
switch,当满足不同条件执行不同方法:
![da49f7faed7883f2c37da612f4ac466b.png](https://i-blog.csdnimg.cn/blog_migrate/e086e6df9d79b59cd9efced3d122c1ca.jpeg)
image.png
4. break:
n=10时候执行save并退出循环
![1cf80eac2bfa5a2bc5fe461d71fce369.png](https://i-blog.csdnimg.cn/blog_migrate/5185c035e2b2db219b159d7d836ccb77.jpeg)
image.png
5. par:
同时进行,比如多个线程同时执行任务
![444f4e8b1f92abd816368215463016b8.png](https://i-blog.csdnimg.cn/blog_migrate/d964c27a824872c9304ceb1463de083c.jpeg)
image.png
一个例子
![4d6ecbb96858c22e8d71ed6ff98bd9f0.png](https://i-blog.csdnimg.cn/blog_migrate/285cf1ee5c94a99f1604663349666ecf.jpeg)
image.png
欢迎关注微信公众号:技术原始积累 获取更多技术干货