第 6章 包( Package)
1,包的基本概念
包:
是一个容器。
包的作用:
把一个大的系统分解为多个小的系统。分解是控制
软件复杂性的重要手段:
结构化方法中,对功能进行分解;
OO方法中,将相关类放在一起。
包中元素:
类、接口、组件、结点、用例、协作、图、包等。
包中元素也有可见性。 +-#
一个包形成了一个命名空间,在一个包内 同一种元
素 的名称必须唯一。
1,包的基本概念
包名规则,简单名或路径名。
引入( import),授予一个包中元素可以访问另一个包中的示
出元素的单向许可。
示出( export),包中的公共部分(带 +的元素)称为示出。
Ser ver
+ D ata b ase
+ L ogg i ngS e rvi c e
GUI
# E ven t Han d ler
+ F orm
+ W ind o w
Cli ent
+ O rde r For m
+ T rac k ing F orm
- O rde r
Pol ici e s
+ O rde r Rul e s
- G UI:, Win d ow
引入访问不具有传递性:
Client?Policies?GUI
Client?GUI ×
1,包的基本概念
包之间的关系,引入和泛化。
泛化关系,包间的泛化关系很象类间的泛化关系。( Rose中表
示不出)
2,包的设计原则
包的设计原则:
共同闭包原则 ( Common Closure Principle,CCP)
重用等价原则 ( Reuse Equivalency Principle,REP)
共同重用原则 ( Common Reuse Principle,CRP)
非循环依赖原则 ( Acyclic Dependencies Principle,ADP)
CCP,把需要同时改变的类放在一个包中。下列情况两个类放
在一个包中:
1)一个类的改变要求另一个类做相应改变;
2)删除一个类后,另一个类变成多余;
3)两个类间有大量的消息发送。
该原则,提高包的内聚性、降低包间的耦合度。包越大越好。
该原则,有利于软件维护。
REP,把类放入一个包中,应考虑把包作为可重用的单元。
对于可重用的类,其开发比较快,会不断推出升级版本。
对于可重用类的使用者来说,不会随着可重用类的每次
升级而修改自己的系统,但在需要升级的时候,可以很容易
地用可重用类的新版本替换旧版本。
该原则,包越小越好。
该原则,从重用人员的角度考虑。
CRP,不会一起使用的类不要放入一个包中。
如果包中的一个类 A与包中的其它类无依赖关系,当 A类
或其它类被修改,显然增加了额外的检查工作。
A类修改,其它类也要被检查,反之,其它类修改,A类
也要被检查,是多余的工作。
该原则,包越小越好。
该原则,从重用人员的角度考虑。
ADP,包之间的依赖关系不要形成循环。
如果存在,将这些包中的元素放入一个大包中。
3,包的应用
包是一个容器,提供对 UML元素进行分组的功能。
包在一些建模工具中,还有一些特殊应用,如在
Rose中:
带构造型 <<Schema>>的包可用来进行数据模型
和对象模型之间的转换;
带构造型 <<Virtual Directory>>的包代表 Web服
务器上的一个虚拟目录。