用例的泛化关系及场景描述

泛化与类的泛化意义相同,表达用例之间存在“is-a-kind-of”关系。当一组用例拥有相同的事件流序列,或者相似的一组约束的时候,可以使用例的泛化。一般父用例是抽象的,而子用例将继承父用例的特性。比如“预定房间”或者“预定早餐”还可以有一套相同的其它服务的时候,可以使用泛化描述。

    在“预定服务”用例中有一个抽象子事件流,所以“预定房间”是一个抽象用例,而“选择服务”的事件实现在“预定房间”用例中。事件流执行的规则如下:实例化首先出现在子用例中,沿着基本事件流运行,如果子用例没有定义基本事件流,则沿着父基本事件流执行,上面的例子由于没有定义子基本事件流,所以沿着父基本事件流运行。在运行到“选择一项服务”的时候,执行子用例定义的“选择服务”子用例,如下图所示。

    事件流的描述如下:

    要注意到的问题是,首先不要混淆泛化和扩展,Java中的关键字 extend 是泛化而非扩展,而用例中的扩展与泛化是完全不同的,扩展事件流只不过是挂接到原有用例事件流的某个位置上,以添加新的行为,而且是在同一层及解决问题。另一个方面不能混淆泛化和包含,泛化和包含都是用于抽取用例的公共行为,因此容易混淆,其实它们是实现复用的两种不同手段,泛化关系要求付用例和子用例之间拥有“is-a -kind-of”关系,这样继承才有意义,但包含无需拥有这种关系。在使用包含的时候,当执行到使用公共行为的步骤时,必须明确指出包含的用例,而且指明使用哪个事件流。

 相关文章软件架构设计的思想与模式[4]


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值