Extend PK include
这两种关系相信大家在画了UML图之后就会觉得不那么陌生了,但是这两者之间到底有什么相同点和不同点呢?下面就让我为大家分析一下吧。
两者的相同点在于这两中关系都是从现有的用例中抽取出公共的那部分信息,作为一个单独的用例,然后通后过不同的方法来重用这个公共的用例,以减少模型维护的工作量。
相同点分析完了,那他们之间又有哪些不同点呢?这想必是大家急于知道的。我个人觉得仅从两方面分析即可。
第一:包含关系强调用例封装一组类似的用例动作。就拿我们的学生信息管理系统来说,在学生信息维护那一块就封装了许多的用例。此外他强调一个用例使用了另外一个用例的功能。比如下图所示,在学生信息管理系统中,你要对学生选课信息进行维护,就需要调用它封装的增删改查功能。用图表示如下:
拓展extend:他则强调用另外一个用例来描述前一个用例的特殊情况。就比如说在机房收费系统中,在管理员的结帐功能中,我们使用了打印机和导出EXCEL来补充结帐这个用例。如下图所示:
第二个不同点:那就是作为衍生用例在缺失了基础用例之后,还能不能独立工作。若可以,两者之间为拓展关系。反之,为包含关系。就拿上面两个例子来说,若是学生想要删除选课,就必须通过学生选课信息维护这个基础用例,别无他法。在下面这个用例中,若是没有了结帐这个用例,打印机能正常工作。
第三个不同点:从图上可以看出来,拓展的关系箭头是指向衍生用例的。而包含关系箭头是指向基础用例的。这一点,虽然简单,但是很容易混淆。
总结:无论多难的东西,都是先从简单的入手,然后一点点加深巩固。