用例关系 [ 包含(必要步骤)、扩展(异常场景)、泛化(父子关系场景) ]

用例关系
用例图使用户 与开发人员交流的一种重要的方式,是对用户需求的一种描述。开发人员从用户的角度整体上理解系统的功能。

1)泛化(generalize


      定义:一个用例可以被特别列举为一个或多个子用例,这被称为用例泛化。
泛化关系是从另一个角度看的基础关系,也就是说,当两个用例之间可能存在父子关系时,可判定为泛化关系。       

      表示方法:带空心箭头的实线,箭头指向被泛化(被继承)的用例,即父用例。(PS:泛化关系的箭头不是指向被泛化,而是指向被继承。泛化和继承是不同的方向。泛化是从下到上的抽象过程,继承是从上到下,从一般到特殊的过程。)

        如图所示:

        机房收费系统中可以这样应用:

        当系统中具有一个或多个用例是一般用例的特化时,就使用用例泛化。

      举个例子:“电话注册”与“邮件注册”都属于“会员注册”,他们是“会员注册”的具体形式,所以存在父子关系,可判定为泛化关系。
会员注册时可以采用电话和邮件两种方式。用例“会员注册”和“电话注册”、“邮件注册”之间是泛化关系。本质都是一样的,都是注册。

2)包含关系(include)

定义:其中一个用例(基础用例)的行为包含了另一个用例(包含用例)的行为。基础用例可以看到包含用例,并依赖于包含用例的执行结果。但是二者不能访问对方的属性。

        表示方法:虚线箭头+<<include>>字样,箭头指向被包含的用例。

        如图所示:

        使用情况:

            (1)如果两个以上用例有重复的功能,则可以将重复的功能分解到另一个用例中。其他用例可以和这个用例建立包含关系。

            (2)一个用例的功能太多时,可以用包含关系创建多个子用例(彼此直接没有父子关系)。


用例“注册学生信息”和“充值”与用例“用户登陆”之间的关系就是包含关系。b和a行为类比是不一样的(没有继承关系),就是做b之前一定要做a,那a和b就是包含。

如图               

3)扩展关系(extend)

        定义:是把新行为插入到已有用例的方法。

       个人感觉可以叫做特殊情况处理。比如去食堂用饭卡打饭,绝大部分人是刷卡,拿饭,两个步骤就完成了。但是如果某个学生的饭卡里没钱了,假定不用现金或者借钱或者赊账等等其他的方式来打饭,而是必须用自己的饭卡来打饭。那么他就要先去给饭卡充值。“饭卡充值”就是“刷卡”的一个扩展用例。“饭卡充值”与“刷卡”就是扩展关系。

        表示方法:虚线箭头+<<extend>>字样,箭头指向被扩展的用例(即基础用例)。

       如图所示:

        作用:为处理异常或构建灵活系统框架提供了一种有效的方法。

对比:

        包含与扩展的区别。在扩展关系中,基础用例没有扩展也是完整的,扩展用例脱离基础用例也是一个独立完整的用例;而在包含关系中,基础用例依赖于包含用例的执行结果。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值