UML 用例之间的关系

用例的关系有泛化(generalization)、扩展(extend)和包含(include)。

泛化关系是一种继承关系,子用例将继承基用例的所有行为,关系和通信关系,也就是说在任何使用基用例的地方都可以用子用例来代替。泛化关系在用例图中使用空心的箭头表示,箭头方向从子用例指向基用例。例如:老王进城,他可以坐飞机,可以坐火车,还可以走路,那么进城用例就泛化为坐飞机、坐火车和走路三个用例了。



 


扩展(extend): extend关系是对基用例的扩展。扩展用例不是必须执行的,只有当具备一定触发条件时才执行,extend关系在用例图中使用带箭头的虚线表示(在线上标注<<extend>>),箭头从子用例指向基用例。用例B extends用例A,表示用例B是用例A在某种特定情况下可能会出现的扩展用例。例如:老王进城办事,2小时就可以回去,在这2小时内内急时就会去上厕所。上厕所用例是进城用例的扩展,因为不上厕所老王进城办事也可完成。



 

包含(include): include为包含关系,当两个或多个用例中共用一组相同的动作,这时可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享。因为子用例被抽出,基用例并非一个完整的用例,所以include关系中的基用例必须和子用例一起使用才够完整,子用例也必然被执行。include关系在用例图中使用带箭头的虚线表示(在线上标注<<include>>),箭头从基用例指向子用例。 用例A includes 用例B,表示没有了用例B,用例A本身也就不完整了。例如:还是老王进城,一周后才能回去,那么这种情况下进城用例与上厕所用例的关系就应该是包含关系了。


扫描二维码关注公众号,回复: 241529 查看本文章

综合示例一:

通过ATM “取款”和“转账”后,都会包含有“打印回执”,那么“打印回执”则抽象出一个子用例,然后通过include包含到“转账”和“取款”用例中。



 

综合示例二:



 
 

猜你喜欢

转载自huangqiqing123.iteye.com/blog/2210583