UML&iOS - 时序图
一、时序图是什么?
时序图(Sequence Diagram),又名序列图,它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。可以体现用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。
二、时序图元素
时序图中主要的元素有:角色(Actor)、对象(Object)、生命线(Lifeline)、控制焦点(Focus of control)、消息(Message)
角色(Actor)
系统(应用)的角色,用户、系统、子系统、相对独立的模块等都可以成为角色。
image.png对象(Object)
万物皆对象~ Object or Class,位于时序图顶部。
image.png生命线(Lifeline)
在时序图中表示为从对象图标向下延伸的一条虚线,表示对象存在的时间。如上图对象下面的虚线。
控制焦点(Focus of control)
控制焦点表示时间段的符号,在这个时间段内对象将执行哪些操作,用小矩形表示。
image.png消息(Message)
消息是定义交互和协作中交换信息的类,用于对象之间的通信内容建模,在对象间传递信息。
主要的消息类型有:同步消息(Messsage)、异步消息(Async Message)、返回消息(Reply Message)、创建消息(Create Message)、删除消息(Delete Message)、异步信号消息(Async Signal Message)、自关联消息(Self Message):
image.png-
同步消息(Messsage):发送一条同步消息,比如 VC 调用 AlertView 的 show() 方法:
image.png -
异步消息(Async Message):相当于 iOS 中的异步请求,比如下载文件,发送网络请求等:
image.png -
返回消息(Reply Message):回调结果,返回结果,iOS 中的 block 回调、return 等,UML 图如上图的 Response 消息
-
创建消息(Create Message)、删除消息(Delete Message)相当于创建对象和销毁对象,这里就不多说了
-
异步信号消息(Async Signal Message):发送一个信号消息,类似于观察者模式:
image.png -
自关联消息(Self Message):自己发送消息给自己,比如一个对象的方法调用了本对象的另一个方法:
image.png
交互元素
时序图提供更加细致的交互元素,但一般情况下用得并不多,想要了解的可以逐个查阅就可以了。
image.png三、实践 & StarUML 使用
StarUML 是在 MAC 下一款比较友好的UML工具,它支持多平台,收费应用,非信仰者可以自行百度破解。至于如何用 StarUML 来画时序图,懒得贴图了,直接提供一个 gif 将就看下:
sequence-gif.gif