第5节UML包图.pptVIP

  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文档。上传文档
查看更多
第5章 包 图 包图就是用来描述包及其关系的图,我们常用包图来描述系统、子系统的宏观组成和结构。 5.1 什 么 是 包 包是用于分组的符号,常用来对一组相同的UML元素进行分组存放和管理。UML中的包相当于文件系统中的文件夹,UML中的一个包直接对应于Java中的一个包。 在Java中,一个包可能含有其他包、类或者同时含有这两者。 1.包的示例 2.包中的元素 3.包的作用 5.2 什么是包图 1.包图示例 2.包图的作用 3.包图中的元素 5.3 包 的 表 示 在UML中用文件夹符号来表示一个包。即一个包由两个矩形组成,上面是一个小矩形,下面是一个大矩形。图5-3就是最常见的包表示法。图中包的名称是UI,包中包含一个类Page。 5.3.1 包命名 1.包名称的位置 2.包名称的书写格式 包名称的书写格式有两种,即简单名和全名。 5.3.2 包中的元素 1.包中元素是类和接口 2.包中的元素是用例 3.包中元素是包 4.包中元素的可见性 5.访问权限 5.3.3 用构造型表示包 一个包的具体新特征有很多,为了表示包的新特性,UML提供了5种构造型来描述包的新特征。下面分别说明这5种构造型的语义。 (1) system符号:表示包代表一个系统。 (2) subsystem符号:表示包代表某个子系统。 (3) facade符号:表示包是由其他包构成的一个视图。 (4) stub符号:表示包是一个代理包,该代理包为其他包提供公共服务。 (5) framework符号:表示包代表一个框架。 5.4 包图中的关系 包图中包间的关系有两种,即依赖关系和泛化关系。 5.4.1 依赖关系 1.use关系 2.import关系 5.4.1 依赖关系 3.access关系 4.trace关系 5.4.2 泛化关系 包间的泛化关系类似于类间的泛化关系,子包继承了父包的公共元素和保护元素,并可以增加新的元素。在使用父包的地方,可以用子包代替。如图5-13所示,父包是GUI,它有两个子包,分别是G1和G2。 5.5 包的传递性 包间的传递性是指:如果包X与包Y存在关系,包Y与包Z存在关系,那么,包X与包Z也存在关系。 import依赖是可传递的,access依赖是不可传递的。 当客户包与提供者包之间是import依赖时,提供者包中的公共元素就成为客户包中的公共元素,这些公共元素在包外同样是可以访问的。如图5-14所示,Z包中的公共元素成为Y包的公共元素,同时,Y包中的公共元素成为X包中的公共元素,因此,Z包中的公共元素能被X包访问。所以,X、Y、Z包间的import关系存在传递性。 5.5 包的传递性 当客户包与提供者包之间是access依赖时,提供者包中的公共元素就成为客户包中的私有元素,这些私有元素在包外是不可以访问的。如图5-15所示,Z包中的公共元素成为Y包的私有元素,而X包只能访问Y包中的公共元素,因此,X包不能访问Z包中的公共元素。所以,X、Y、Z包间的access 关系不存在传递性。 5.6 创建包图的方法 绘制包图的基本过程主要有以下3个步骤。 (1) 寻找包。 (2) 确定包之间的关系。 (3) 确定包内元素的可见性。 “最小化包间的耦合关系”的原则是:最大限度减少包之间的依赖,进行包封装时,避免包之间的循环依赖;最小化每个包中public、protected元素的个数,最大化每个包中private元素的个数。 5.6.1 标识候选包 在分析阶段,我们以对象模型和用例模型为依据,把关系紧密的类分到同一个包中,把关系松散的类分到不同的包中。确定包的过程包含3个步骤:第一步,以类图为依据,寻找候选包;第二步,对候选包进行调整;第三步,消除包的循环依赖。标识候选包的原则如下。 (1) 把类图中关系紧密的类放到一个包中。 (2) 在类层次结构中,把同一层次中的类放在同一包中,不同层次中的类放在不同的包中。 5.6.2 调整候选包 在已经识别一组候选包后,减少包间依赖,最小化每个包中public、protected元素的个数,最大化每个包中private元素的个数。做法如下。 (1) 在包间移动类。 (2) 添加包、分解包、合并包或删除包。 通常,在分析阶段,将类封装为包模型时,应该尽量使包模型简单。起初,将类图转换为包图时,不需考虑包间的泛化和依赖关系,仅当使用诸如包泛化和依赖关系能简化包模型时,才使用这些包整理技术。 除了保持简单,还应该避免嵌套包。包的嵌套结构越深,模型变得越难理解。我们曾见过非常深层的嵌套包,而每个包仅包含一个或两个类。这些模型更像是标准的、自上而下的功能分解,而不是包模型。 作为经验法则,希望每个包具有4~10个分析类。然而,对于所

文档评论(0)

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

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

1亿VIP精品文档

相关文档