第6章包( Package)
第6章 包(Package)
1.包的基本概念 包 是一个容器 包的作用: 把一个大的系统分解为多个小的系统。分解是控制 软件复杂性的重要手段: 结构化方法中,对功能进行分解; OO方法中,将相关类放在一起。 包中元素: 类、接口、组件、结点、用例、协作、图、包等。 包中元素也有可见性。+# 个包形成了一个命名空间,在一个包内同一种元 素的名称必须唯一
1. 包的基本概念 包: 是一个容器。 包的作用: 把一个大的系统分解为多个小的系统。分解是控制 软件复杂性的重要手段: 结构化方法中,对功能进行分解; OO方法中,将相关类放在一起。 包中元素: 类、接口、组件、结点、用例、协作、图、包等。 包中元素也有可见性。+-# 一个包形成了一个命名空间,在一个包内同一种元 素的名称必须唯一
1.包的基本概念 包名规则:简单名或路径名 引入( import):授予一个包中元素可以访问另一个包中的示 出元素的单向许可。 示出( export):包中的公共部分(带+的元素)称为示出。 Client Server OrderForm Database trackingForm loggingService Policies Orderrules GUI:: Window GUI 引入访问不具有传递性: Eventhandler F Client→ Policies→GU Window Client→GU|
1. 包的基本概念 包名规则:简单名或路径名。 引入(import):授予一个包中元素可以访问另一个包中的示 出元素的单向许可。 示出(export):包中的公共部分(带+的元素)称为示出。 Server + Database + LoggingService GUI # EventHandler + Form + Window Client + OrderForm + TrackingForm - Order Policies + OrderRules - GUI::Window 引入访问不具有传递性: Client→Policies→GUI Client→GUI ×
1.包的基本概念 包之间的关系:引入和泛化 泛化关系:包间的泛化关系很象类间的泛化关系。(ROSe中表 示不出)
1. 包的基本概念 包之间的关系:引入和泛化。 泛化关系:包间的泛化关系很象类间的泛化关系。(Rose中表 示不出)
2.包的设计原则 包的设计原则: 共同闭包原则 Common Closure Principle, CCP CCP:把需要同时改变的类放在一个包中。下列情况两个类放 重用等 在一个包中 l"- d 人+ REP:把类放入一个包中,应考虑把包作为可重用的单元。 对于可重用的类,其开发比较快,会不断推出升级版本。 CRP:不会一起使用的类不要放入一个包中。 次 如果包中的一个类A与包中的其它类无依赖关系,当A类房子 或其它类被修改,显然增加了额外的检查工作。 ADP:包之间的依赖关系不要形成循环。 如果存在,将这些包中的元素放入一个大包中
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中: 带构造型>的包可用来进行数据模型 和对象模型之间的转换; 带构造型的包代表Web服 务器上的一个虚拟目录
3. 包的应用 包是一个容器,提供对UML元素进行分组的功能。 包在一些建模工具中,还有一些特殊应用,如在 Rose中: 带构造型>的包可用来进行数据模型 和对象模型之间的转换; 带构造型>的包代表Web服 务器上的一个虚拟目录