且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

<七>面向对象分析之UML核心元素之包

更新时间:2021-12-13 06:18:59

一:基本概念
 <七>面向对象分析之UML核心元素之包
        ---->包是一种容器,如同文件夹一样。它将某些信息分类。形成逻辑单元
        ---->包是UML非常常用的一个元素,它最主要的作用就是容纳并为其他元素分类。包可以容纳任何UML元素,例如用例,业务实体,类图等,也包括子包。
        ----->UML认为好的分包具有高内聚,低耦合的性质。
        ----->分包好坏手有包之间的依赖关系来评判的。事实上在UML里,包之间的关系定义也只有依赖关系。
        ----->什么是依赖?如果A事物发生变化,B事物必然变化,我们称B依赖于A。反之则无依赖关系。

二:分包指导性原则

        ---->如果将元素分为三个包A,B,C,那么被分入同一个包中的那些元素应当是相互联系紧密,甚至不可分割的。同时这些元素又具有某些相同的性质,使得包可以抽象出来一些接口来代表包内的事物与包外事物交互,以避免包外的事物频繁地直接访问包内元素。这时我们A,B,C三个包具有高内聚的性质。
        ---->包的最理想的情况是修改A,B,C三个包中任意一个包的元素,其他的任何一个包中的内容都不受影响。这时我们称A,B,C三个包之间无依赖关系或松耦合关系,他们之间可以保持消息通信。
        ---->如果实际情况难以做到完全解除依赖关系,那么至少应当保证包之间的依赖关系不会被传递。例如B依赖于A,C依赖于B,当A修改导致B要做出修改时,C不会受到影响。如果做不到这一点,当一个包发生变动时将会引起大范围的连锁反应。
        ---->包之间的依赖关系应当是单向的。应当尽量避免双向依赖和循环依赖。如果A依赖于B,而B又依赖于A,我们称这是一种双向依赖关系。如果A依赖于B,B依赖于C,而C有依赖于A。我们称这是一种循环依赖关系。双向依赖和循环依赖都是不好的分包。
        ----->什么是依赖传递?如果A=B,B=C。由此可以确定A=C,这称之为依赖关系可传递。如果A是B的朋友。B是C的朋友。但不能确定A也是C的朋友。


三:包的分类

        ---->包最主要的用途是分类元素,但在UML中对包也可以进行一些版型定义,让包表达一些特定的含义。常用的包的版型。
        ----->领域包    

<七>面向对象分析之UML核心元素之包  
       ----->子系统
  <七>面向对象分析之UML核心元素之包
        ---->组织结构

<七>面向对象分析之UML核心元素之包

        ---->层
<七>面向对象分析之UML核心元素之包

        ---->除了上述版型之外,我们可以自己定义需要的版型从特定的角度对包进行分类元素。