【StarUML】时序图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【StarUML】时序图
时序图是可视化地展⽰对象与对象之间的联系的图,与其他的图相⽐,它跟侧重于表现为了完成⼀个⽤例,对象之间是怎么协同⼯作的。
之前学习的组件图、⽤例图都能表现对象之间的联系,侧重的是“有哪些联系”,这是属于⽔平维度的展⽰,⽽时序图,它更像⼀个是从纵向维度⽤⼀个个的⽤例,将各个对象串起来,从⽽展现出它们之间的联系,在软件开发中,有了时序图,基本上就可以指导软件开发了。
1、基本元素
a、⾓⾊(actor)
⾓⾊不⼀定是⼈,也可以是组织、模块或者其他的系统以及⼦系统,⽤下图表⽰。
创建时序图的时候,在staruml⾥的⼯具栏⾥是找不到这个图的,需要在创建的module右键,选择 add,选择 actor
然后将左键长按actor1拖动到绘画⾯板⾥,就可以添加了,不要使⽤⽤例图⾥的⼩⼈,否则⽆法画出⽣命线。
b、对象
(1)对象的命名
对象名称,包含两部分:对象名+类名,中间⽤”:”隔离开来,有三种命名⽅式;
第⼀种:对象名+类名,⽐如说猫头鹰:鸟;
第⼆种:类名,如果在项⽬中,⽆需区别具体的对象,可以省略掉对象名,但冒号不能省略,以表⽰这是⼀个类名,⽐如说:鸟;
第三种:对象名,如果项⽬中⽆需区别具体的类,可以直接写对项⽬名,⽐如说猫头鹰。
(2)命名⽅式的选择
命名只要遵循命名规则,选择最能让时序图逻辑清晰地命名⽅式。
(3)对象的排序
遵循两个约束:交互频繁的尽量在⼀起(减少跨对象连接线的数量),⽤例发起者要放在最左端(遵循普通⼈的思维,从左往右)。
c、⽣命线
从对象上向下延伸的虚线,表⽰对象存在的时间
d、控制焦点
代表对象活跃的时间区间,所谓活跃,就是该对象在执⾏内置逻辑,运⾏代码,类似于在代码⾥表⽰{},是⽤⼀个⼩矩形表⽰。
控制焦点可重叠,两个控制焦点重叠,就相当于{{}}
e、消息
消息分为发送消息和返回消息,发送消息⼜根据发送形式不同,分为同步消息和异步消息
发送消息类似于代码中的调⽤关系,A对象调⽤B对象,就相当于A对象向B对象发送了调⽤消息,需要B执⾏相关逻辑,箭头指向消息接收⽅,也就是B
同步消息代表着调⽤之后,要⼀直等待,等待消息处理并返回;异步消息则可以马上回来,去做别的事情,所以如果是同步消息,并且需要画返回消息,则控制焦点就需要拉长,直到返回消息回来,⽽异步消息就没有这个限制
返回消息就是发⽣调⽤之后返回的结果,有返回消息,之前必须要有发送消息。
f、⾃关联消息
对象内⽅法调⽤
g、迷路消息和拾取消息
迷路消息,意思是消息发出去了,没有被处理或者接受者不在这个系统⾥,没有被处理的情况,不存在于函数调⽤中,存在于消息队列中,当消息队列中的消息出列被处理的时候,发现不存在处理者;
拾取消息,意思是来⾃其他系统的消息。
2、⾼级元素
⾼级元素是在时序图中加⼊逻辑控制,指⽰交互执⾏的条件和⽅式,总共有13种
着重描述常⽤的四种
a、抉择(alt)
抉择就相当于if else,两条路只能⾛⼀条
在staruml中,所有的⾼级元素(也称组合⽚段)都是通过这个来画的,通过设置它的属性来决定画哪种⾼级元素
改变交互操作属性为 alt,此时在图标中显⽰地就是alt
注意:此处的name已经被我删除掉,所有这⾥没有显⽰name,在使⽤的时候,name可以有也可以没有
双击seq,会出现⼀个⿊⾊⼩框,点击它
中间会出现⼀条⿊⾊的线
在上⾯的框框任意处双击,会出现⼀个⽂本框,在⽂本框⾥填写条件
这代表的意思就是当 a>0的时候,执⾏第9条命令,否则执⾏第10条命令
b、选项 (opt)
包含⼀个可能发⽣或可能不发⽣的序列。
可以在临界中指定序列发⽣的条件,对应于 switch
画法与alt画法类似,只是交互操作属性设置成opt。
c、循环(loop)
相当于 for,while,foreach
⽆限循环
循环10次
从1循环到10
⼀直循环,直到当num<0的时候退出
d、退出循环(break)
当满⾜条件的时候退出循环(案例图的意思是当num等于10的时候执⾏save命令,并退出循环)
e、并⾏执⾏(par)
代表同时进⾏,与编码中的并⾏概念⼀致。
3、画图思想
第⼀,划清界限,图不能呈现太多的重点,所以有些上游的流程和下游的流程,不要画进去,否则会导致整个图失去重点,如果确实需要表达⼀种语境,可以添加ref的⾼级元素(可以理解为⼦系统)。
这是成绩查询系统,查询啊前肯定是要登录的,但是这张图的重点是查询逻辑,登录的逻辑可以⽤这个⾼级元素替代即可。
第⼆,理清⾓⾊和对象,对象⼀定是名词,不能是动词。
注意:StarUML 删除的时候⼀定要⽤ Ctrl+delete,直接delete是删不掉的,只是不可见,它还是会占⽤位置!
疑问:⼀个对象引出多个⽣命线,这个还不知道怎么画。