UML中include和extend关系

前面介绍有关uml中四种常见关系的总结,现在来总结一下剩余两种比较常见且容易混淆的关系,即包含(include)和扩展(extend)关系。

1.包含(include)

使用包含(Inclusion)用例来封装一组跨越多个用例的相似动作(行为片断),以便多个基(Base)用例复用。用例控制与包含用例的 关系,以及被包含用例的事件流是否会插入到基用例的事件流中。基用例可以依赖包含用例执行的结果,但是双方都不能访问对方的属性。 

包含关系对典型的应用就是复用,也就是定义中说的情景。但是有时当某用例的事件流过于复杂时,为了简化用例的描述,我们也可以把某一段事件流抽象成为一个被包含的用例;相反,用例划分太细时,也可以抽象出一个基用例,来包含这些细颗粒的用例。这种情况类似于在过程设计语言中,将程序的某一段算法封装成一个子过程,然后再从主程序中调用这一子过程。

例如:在机房收费系统中的一个小例子:在信息查询执行用例中的两个子用例中都包含有‘导出EXCEL’这个用例,此时,就可以将其独立出来,构成包含关系。

UML中include和extend关系_第1张图片

2.扩展(extend)

扩展关系:将基用例中一段相对独立并且可选的动作,用扩展(Extension)用例加以封装,再让它从基用例中声明的扩展点上进行扩展,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断是否执行自己但是扩展用例对基用例不可见

例如:

UML中include和extend关系_第2张图片

执行查询用例的扩展点决定了接下来到底是执行导出查询结果还是打印查询结果。


 综上所述,二者之间最大的区别简而言之:包含是指多个用例同时用到的,而扩展是指同一个用例中所涉及到的功能。

   

你可能感兴趣的:(UML中include和extend关系)