用例泛化关系.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用例泛化关系

指南:用例泛化关系 用例泛化关系 用例泛化关系是指一种从子用例到父用例的关系,它指定了子用例如何特化父用例的所有行为和特征。 解释 执行用例泛化关系 描述用例泛化关系 使用示例 父用例可以特化形成一个或多个子用例,这些子用例代表了父用例比较特殊的形式。尽管在大多数情况下父用例是抽象的,但无论是父用例还是子用例这两者都不要求一定是抽象的。子用例继承父用例的所有结构、行为和关系。同一父用例的子用例都是该父用例的特例。这就是可适用于用例的泛化关系(另请参阅指南:泛化关系)。 当您发现两个或更多用例在行为、结构和目的方面存在共性时,就可以使用泛化关系。这种情况发生时,您可以用一个新的、通常也是抽象的用例来描述这些共有部分,该用例随后被子用例特化。 “电话订购”和“Internet 订购”用例都是抽象用例“订购”的特例。 在订单管理系统中,“电话订购”和“Internet 订购”两个用例在结构和行为上存在很多的共同点。而一般用例“订购”是根据结构和公有行为的定义来定义的。虽然抽象用例“订购”本身无须完整,但是它提供了一个大体的、通过子用例进行完善的行为框架。 父用例并不总是抽象的。 考虑在上一示例中的订单管理系统。假设要增加一个订单登记员主角,该订单登记员可以代表客户将订单输入到系统内。此主角将启动一般的“订购”用例,此时必须要有一个完整的事件流来说明该用例。子用例可以在父用例提供的结构上添加行为,也可以修改父用例中的行为。 订单登记员主角可以将该一般的“订购”用例实例化。“订购”用例还可以被“电话订购”或“Internet 订购”用例所特化。 子用例依赖于父用例的结构(请参阅指南:用例,关于事件流结构的讨论)。子用例可以将附加行为添加到父用例中,方法是将行为段插入到被继承行为中或者声明对子用例的包含关系和扩展关系。虽然子用例可以从父用例继承行为段,但是必须慎重修改,以便保持父用例的使用目的。父用例的结构由子用例保持。这意味着尽管所有行为段(即父用例事件流的步骤或分支流)仍然必须存在,但是这些行为段的内容可以被子用例修改。 如果父用例为抽象用例,则它可以具有不完整的行为段。但是,子用例必须补充完善这些行为段,并使得它们对于主角而言是有意义的。 如果父用例是一个抽象用例,则它无需与主角发生关系。 如果两个子用例都对同一父用例(或基本用例)进行特化,则二者之间的特化是相互独立的,这意味着它们可以在各自独立的用例实例中执行。这与包含关系和扩展关系不同。在包含和扩展关系中,一些附加用例隐式或显式地修改了执行相同基本用例的一个用例实例。 用例泛化关系和包含关系都可以用来复用该模型用例间的行为。二者的区别是,在用例泛化关系中,执行子用例不受父用例的结构和行为(复用部分)的影响;而在包含关系内,执行基本用例只依赖包含用例(复用部分)执行有关功能的结果。另一个区别是,在泛化关系中,子用例有相似的目的和结构;而在包含关系中,复用相同包含用例的基本用例在目的上可以完全不同,但是它们需要执行相同的功能。 执行子用例的用例实例将遵循父用例的事件流,同时插入附加行为或修改在子用例事件流中定义的行为。 描述用例泛化关系 通常,您可以不用描述泛化关系本身。相反,在子用例事件流中,您必须指定如何将新步骤插入到继承行为中以及如何修改继承行为。 如果子用例特化不止一个的父用例(多继承),则必须在子用例的规约中明确说明父用例的行为序列如何在子用例中交替执行。 对于一个简单电话系统的两个用例,可考虑以下分步概述: 呼叫方拿起听筒。 系统发出拨号音。 呼叫方拨打一位数字。 系统结束拨号音。 呼叫方输入电话号码的其余数字。 系统分析该号码。 系统找到相应的当事人。 系统连接相应的当事人。 当事人之间断开连接。 呼叫方拿起听筒。 系统发出拨号音。 呼叫方拨打一位数字。 系统结束拨号音。 呼叫方输入电话号码的其余数字。 系统分析该号码。 系统将号码发送到其他系统。 系统连接该线路。 当事人之间断开连接。 在这两个用例中,使用蓝色的文本部分是非常相似的。当这两个用例是如此相似时,我们应该考虑将它们合二为一。其中,其他分支流显示了拨打本地电话和拨打长途电话之间的差别。 然而,如果它们之间存在某些重大的差别,而且有一个值指明了该用例模型中本地电话和长途电话之间的关系,那么我们就可以提取它们之间的公有行为,组成一个新的、更一般的用例即“拨打电话”用例。 在用例图中,已创建的泛化关系如下图所示: “拨打本地电话”用例和“拨打长途电话”用例都继承了“拨打电话”抽象用例的公有行为。

文档评论(0)

sf197103 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档