【UML】--包含和扩展
在UML中的用例图中常见的关系有包含、扩展和泛化,其中包含于扩展是用例图中特有的关系,而泛化关系不仅用
于用例图,同时也适用于其他图,比如类图等等。
用例图直接的包含和扩展关系是分解和组织用例的有效工具,表面上看它们有许多相似之处,事实上是有很多相似
之处,更多的是我们要进行对比学习、进行关联学习和总结。
一、 包含(include)关系
定义:通常是指一个大的用例包含了几个小的用例,几个小的用例组成一个大的用例;
当可以从两个或两个以上的用例图中提取公共行为时,应该使用包含关系来表示它们。其中这个提取出来的公共用
例成为抽象用例,而把原始用例成为基本用例或基础用例。例如,图1中的“登记外借信息”和“查询外借信息”两个用例
都需要登陆,为此,可以定义一个抽象用例“用户登录”。用例“登记外借信息”和“查询外借信息”与用例“用户登录”之间
的关系就是包含关系。其中<<include>>是包含关系的构造型,箭头指向抽象用例。
当多个用例需用使用同一段事件流时,抽象成为公共用例,可以避免在多个用例中重复地描述这段事件流,也可以
防止这段事件流在不同用例中的描述出现不一致。当需要修改这段公共的需求时,也只要修改一个用例,避免同时修
改多个用例而产生的不一致性和重复性工作。另外,当某个用例的事件流过于复杂时,为了简化用例的描述,也可以
将某一段事件流抽象成为一个被包含的用例。
二、 扩展(extend)关系
定义:两个独立的用例,完成一个后可以开启另一个,两个用例本身都是独立的。
如果一个用例明显的混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一
个基本用例和一个或多个扩展用例,这样使描述可能更加清晰。如上图中的图书管理员进行“查询书籍信息”操作时,
如果发现书籍信息有误,他可以使用“修改书籍信息用例来完成错误的修改。所以用例“查询书籍信息”和“修改书籍信
息”之间的关系就是扩展关系。其中<<extend>>是扩展关系的构造型,箭头指向基本用例。
注意:扩展和包含都是箭头指向 主的,上图2中修改是在 “查询”之前,先查询
在修改!修改是查询的一个扩展出来的功能。
除了包含还有泛化和继承,这又是什么呢?请看下文。