- 1、本文档共53页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
78包图
3.《access》关系 该关系表明,客户包使用提供者包中可见性为+的元素,两个包不合并。但是,客户包在使用提供者包中的元素时,提供者包中的元素必须用全名表示。 例如,在图5-13中,C包《access》依赖于S包,因此,C包中的任何元素能访问S包可见性是+的所有元素。 图5-13 access依赖 4.《trace》关系 《trace》关系表示客户包从提供者包进化而来。trace用来表示模型间的关系,不是用来表示元素间的关系。《trace》关系仅仅用于客户包与提供者包属于两个不同的抽象级别。 例如,在图5-14中,C包《trace》依赖于S包,即设计模型依赖于分析模型,所有的设计模型产品都是从分析模型产品进化而来的,两个包属于不同的层次。 图5-14 trace依赖 泛化关系 包间的泛化关系类似于类间的泛化关系,子包继承了父包的公共元素和保护元素,并可以增加新的元素。在使用父包的地方,可以用子包代替。图5-15中,父包是GUI,它有两个子包,分别是G1和G2。 图5-15 包泛化 五、包的传递性 包间的传递性是指:如果包X与包Y存在关系,包Y与包Z存在关系,则,包X与包Z也存在关系。 《import》依赖是可传递的,《access》依赖是不可传递的。 图5-16所示,Z包中的公共元素成为Y包的公共元素,同时,Y包中的公共元素成为X包中的公共元素,因此,Z包中的公共元素能被X包访问。因此,X,Y,Z包间的《import》关系存在传递性。 图5-16 《import》关系可传递 图5-16表明,包Z中的公共元素成为包Y中的公共元素;包Y中的公共元素成为包X的公共元素。 图5-17所示,Z包中的公共元素成为Y包的私有元素,而X包只能访问Y包中的公共元素,因此,X包不能访问Z包中的公共元素。因此,X,Y,Z包间的《access 》关系不存在传递性。 图5-17 《access》关系不可传递 图5-17表明,包Z中的公共元素成为包Y中的私有元素;包Y中的公共元素成为包X的私有元素。 六、创建包图的方法 创建包图分3个步骤:第一步是以类图(或者用例图)为依据,寻找候选包,确定包应该包含哪些元素;第二步是对候选包进行调整,消除包间的循环依赖,第三步,确定包内元素的可见性。 1 标识候选包 在分析阶段,以对象模型(或者用例模型)为依据,把关系紧密的类(或者用例)分到同一个包中,把关系松散的类(或者用例)分到不同的包中。 标识候选包的原则 (1)把类图中关系紧密的类放到一个包中。 (2)在类层次结构中,把同一层次中的类放在同一包中,不同层次中的类放在不同的包中。 优化候选包 初步标识候选包后,接着优化候选包。优化原则如下: (1)最大限度减少包之间的依赖。包封装时,避免包之间的循环依赖; (2)最小化每个包的public、protected元素的个数,最大化每个包中private元素的个数。 2 调整候选包 由于包间依赖是指一个包中的元素访问另一个包中可见性是public、protected的元素,因此,在已经识别出候选包后,为了减少包间依赖,要最小化每个包的public、protected元素的个数,最大化每个包中private元素的个数;然后,对候选包进行调整,调整方法是: (1)在包间移动类。 (2)添加包、分解包、合并包或删除包。 3 消除包的循环依赖 应该尽量避免包模型中的循环依赖。 如果包A以某种方式依赖包B,并且包B以某种方式依赖包A,就应该合并这两个包,这是消除循环依赖非常有效的方法。但是经常起作用的、更好的方法是,从A,B两个包中提起公共元素,把它们封装为第三个包C。 消除循环包的过程是一个多次迭代的过程。 示例显示在后面图5-18中。 很多建模工具允许自动验证包间依赖。如果一个包中的元素访问另一个包中的元素,但两个包间却没有依赖关系,那么工具产生访问冲突列表。 图5-18 消除循环依赖的两种方法 七、包图应用 包图主要有两种用途:一是对成组元素建模,把紧密相关的类封装到同一个包中,以便使用、管理和维护;二是对体系结构建模,用包图来表示软件的宏观结构。 1 对成组元素建模 对成组元素进行建模可以说是包图最常见的用途,它把相关的元素分组,然后把每一组封装为一个包。在对成组元素建模时应遵循以下几个策略: (1)每个包都应该是由在概念上、语义上相互接近的元素组成。 (2)标出每个包中可见性是公共的元素,并且,每个包中的公共元素应尽可能地少。 (3)在构建包图时,一般使用默认的《use》构造型来标识包间关系。在用编程语言实现包中的类时,用关键字《import》代替UML中的《use》构造型。 (4)采用泛化标识通用包与特殊包间的关系。
文档评论(0)