用例图中的extend和include

来源:互联网 发布:r330打印机清零软件 编辑:程序博客网 时间:2024/04/30 02:40

        在学习UML的时候,没有特别注意这两个小东东,是说话当时只是走马观花的看了一遍,没能记下多少东西。

        后来在做机房收费系统的时候自己虽然没有注意到,但是看到其他同学的用例图中出现了这两条线,于是乎查了一下。当时感觉很简单,没什么可看的,所以只是查了大概意思,没有去深究。

        这次,它竟然又来了,看来这个东西必然是重点啊!

       看软考视频的时候,在用例图部分老师重点讲解了这个Extendhe 和Include的关系表示的两个用例之间的关系。

        下面我就通过一个图来说明:

        这是使用Ratioal Rose 画的简单的一个小例子,图中已经包括了我们要讨论的Extend 和Include两种关系。

        对于Extend 和Include,比较官方的解释是这样的:

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

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

        我是这样理解的,Include,从表面英文意思来看,是包含的意思,也就是说是基用例的一部分,是不可缺少的。即:必须执行。

        而Extend是扩展,也就是在原有基础上新增加的一个。即:可执行也可不执行。

        以上面的例子说,就是:要想预约和借书,必须先登陆,即Include用例是必须要执行的,否则基用例无法完成。而还书的话就不一定非得要缴纳罚款,即在一定条件下才去执行Extend的用例。

        另外,我们要注意的是:

        在 include 关系中,预约和借书知道登陆的存在,而登陆根本不知道有预约和借书

        在 extend 关系中,还书不知道缴罚款的存在,但缴罚款却是知道还书并且知道如何在还书中作扩展的

 

 

原创粉丝点击