EA&UML日拱一卒--序列图(Sequence Diagram)::条件执行

本文详细介绍了UML序列图中的Fragment概念,包括alt(条件分支)、opt(可选分支)和break(带监护条件的中途退出)等Fragment类型,并通过实例展示了它们在软件设计中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

序列图提供了一种Fragment(片段),用来表现条件执行,循环,并发等情况。具体使用哪种Fragment,通过以下的对话框来选择。



今天先说条件执行相关的Fragment。


alt(alternative)


alt用于表现条件执行的程序构造。和alt对应的程序结构可以是if/else结构,也可以是swtich结构。还是从图形编辑软件中找例子。



这个时序图描述的是DrawerView根据用户按下的方向键来移动图形时的处理。使用的就是名为alt的Framgment。它的设定画面如下:



设定内容

Type:alt

Name:ArrowKeyHandling。选取一个有意义的名字有助于读者的理解。

Condition:输入每个分支的判断条件。输入完成的条件可以在Condition输入框下方的列表中表示出来。


需要说明的是,这个对话框中不能调整条件的顺序。条件的顺序是通过例子图中红线框出的小箭头来调整的。


opt(optional)


当然,在实际的程序中,只有某个图形被选中时才可以移动该图形。这就是opt出场的时候了,具体时序图如下:



只有在m_currentShape有效时才调用移动图形方法并更新表示。opt其实就是一个没有else的if。


break


首先要明确的是,这个break不是C/C++语言中的那个break,它包含一个带有监护条件的操作片段,如果监护条件为真,则该片段被执行,该片段以后的部分被忽略;如果监护条件为假,那么该片段不会被执行,该子片段以后的部分则会被执行。


好像有点复杂,结合下面代码一起说就容易理解了。


void openfile(void)

{

     CFileDialog dlg;

    if(dlg.DoModal()!=IDOK)

    {

         MessageBox.setMessage("Can't open file!");

         return;

    }

    CString  FilePathName = dlg.GetPathName();

    /*此处省略50行。*/

}


代码很简单,画成序列图如下:



上图中包含一个以result是否不等于IDOK为监护条件的break片段,如果监护条件为真,则该片段中的sendMesage和删除dlg操作被执行,GetPathName及以后的部分被忽略;如果监护条件为假,那么break片段不会被执行,GetPathName及以后的部分会被执行。


费了半天劲,break其实就是一个有条件的中途退出处理。


如果阅读本文能给您带来些许收获,欢迎分享给更多的朋友!

阅读更多新文章,请扫描下面二维码,关注公众号【面向对象思考】

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值