版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 1 包(包(PackagePackage) 重点: 1.包的定义 2.在设计包时应遵循的原则 1.1 包的基本概念 包用于定义一个名字空间或容器(Container)。它本身也是UML的一种 模型元素。 运用包可以把语义上相近的可能一起变更的模型元素组织在同一个包里, 对包中的元素作为一个整体对待,并且控制它们的可见性和存取。 定义:包是一种对模型元素进行成组组织的通用机制。 软件开发时常见的一个问题是如何把一个大系 统分解为多个较小系统。分解是控制软件复杂性的重 要手段。在结构化方法中,考虑的是如何对功能进行 分解,而在OO方法中,需要考虑的是如何把相关的 类放在一起,而不再是对系统的功
2、能进行分解。包在 开发大型软件系统时是一个非常重要的机制。包中的 元素不仅仅限于类可以是任何UML建模元素。包 就像一个“容器”,可用于组织模型中的相关元素以 便更容易理解。 如图1.1所示是一个包的例子。 AWT +Window #Form -EventHandler 图1.1 AWT包 图1.1中的AWT包有3个元素:Window、Form和 EventHandler。其中window的可见性为公有的 (Public),表示在任何导入(import)AWT包的包中,都 可以引用Window这个元素;Form的可见性为保护的 (protected),表示只有AWT包的子包才可以引用 Form
3、这个元素;EventHandler的可见性为私有的 (privated),表示只有在AWT包中才可以引用Event Handler这个元素。 对包的命名有两种方式,即简单包名名(simple name)和路径包名 (path name)。例如Vision)是一个简单的包名,而Sensors:Vision是带路径 的包名。其中Sensors是Vision包的外围包,也就是说,Vision包是嵌套在 Sensors包中的。包可以嵌套,但在实际应用中,嵌套层次不应太深。 包中可以包含其他建模元素,如类、接口、组件、节点、用例、包等。 就像对类的属性和操作可以进行可见性控制一样,对包中元素也可以进行
4、可见性控制。 AWT +Window #Form -EvebtHandler 图1.1 AWT包 包与包之间可以存在依赖关系,但这种依赖关系没有传递性。 如图1.2所示是包之间非传递依赖的例 子,包User Services依赖于包Business Services,包Business Services又依赖于包 Data Services,但包User Services并不依 赖于包Data Services。图中的依赖关系的 版型都是import,表示源包会存取目的 包中的内容,同时目的包中的内容是加到源 包的名字空间的。这样在引用目的包中的内 容时不需要加包名限定,直接用目的包中的 元素
5、名字即可。 User Services Business Services Data Services 图1.2 包之间的非传递依赖关系 import import 另外,与UML中其他建模元素类似,包之间也可以有泛化关系。子包 继承了父包中可见性为public和protected的元素。 图1.3 包之间的泛化关 系 +Window +Form #EventHandler GUI MacGUI +GUI:Window +Form #GUI:EventHandler +VBForm WindowsGUI 如图1.3所示是包之 间泛化关系的例子,其中 包WindowsGUI泛化了包 GUI,包W
6、indowsGUI继 承了包GUI中的Window 和EventHandler元素, 同时包WindowGUI重新 定义(即覆盖)了包GUI 中的Form元素,而 VBForm是包 WindowsGUI中新增加的 元素。与子类和父类之间 存在替换原则一样,子包 和父包之间也存在替换原 则,即子包可以出现在父 包能出现的任何地方。 但是在实际建模过程中,包之间的泛化关系很少用到。 包是UML中的建模元素,但UML中并没有一个包图,通常一些书上所 说的包图指的就是类图、用例图等这些图,只是在这些图中只有包这一元素。 UML中,包是分组事物(grouping thing)的一种,它是在建模时用 来组
7、织模型中的元素的,在系统运行时并不存在包的实例。这点和类不一 样,类在运行时会有实例(即对象)存在。 12 设计包的原则 在考虑如何对类进行分组并放入不同的包时,主要是根据类之间的依赖 关系进行分组。 包中的类应该是功能相关的,在建立包时,应把概念上和语义上相近 的模型元素纳入一个包。依赖关系其实是耦合的一种体现,如果两个包中 的类之间存在依赖关系,那么这两个包之间也就有了依赖关系,也就存在 了耦合关系。好的设计要求体现高内聚、低耦合的特性。 在设计包时,应遵循以下原则: 1. 重用等价原则(Reuse Equivalency Principle,REP) 2. 共同闭包原则(Common C
8、losure Principle,CCP) 3. 共同重用原则(Common Reuse Principle,CRP) 4. 非循环依赖原则(Acyclic Dependencies Principle,ADP) 1.2.1 重用等价原则(REP) 重用等价原则指的是把类放入包中时,应考虑把包作为可重用的单元。 这种设计原则和用户的使用心理有关,对于可重用的类,其开发可能 比较快,开发人员会不断地推出这些可重用类的升级版本。 但对于可重用类的使用者来说,不会随着可重用类的每次升级而修改 自己的系统,不过,在需要升级的时候又会要求很容易地用新版本的可重用 类替换旧版本的可重用类。因此设计包的一个
9、原则是把类放在包中时要方便 重用,方便对这个包的各个版本的管理。 1.2.2 共同闭包原则(CCP) 共同闭包原则指的是把那些需要同时改变的类放在一个包中。 例如,如果一个类的行为或结构的改变要求另一个类作相应的改变, 则这两个类应放在一个包中;或者在删除了一个类后,另一个类变成多余的, 则这两个类应放在一个包中;或者两个类之间有大量的消息发送,则这两个 类也应放在一个包中。 在一个大项目中往往会有很多包,对这些包的管理并不是一件容易的 工作。如果改动了一个包中的内容,则往往需要对这个包及依赖这个包的 其他包进行重新编译、测试、部署等,这往往会带来很大的工作量,因此 希望在改动或升级一个包的时
10、候要尽量少影响别的包。显然,当改动一个 类时,如果那些受影响的类和这个类在同一个包中,则只对这个包有影响, 别的包不会受影响。 共同闭包原则就是要提高包的内聚性、降低包与包之间的耦合度。 1.2.3 共同重用原则(CRP) 共同重用原则指的是不会一起使用的类不要放在同一包中。 这个原则和包的依赖关系有关。如果元素A依赖于包P中的某个元素, 则表示A会依赖于P中的所有元素。也就是说,如果包P中的任何一个元素做 了修改,即使所修改的元素和A完全没有关系,也要检查元素A是否还能使 用包P。 所以一个包中包含的多个类之间如果关系不密切,改变其中的一个类 不会引起别的类的改变,那么把这些类放在同一个包中
11、会对用户的使用造 成不便。修改了一个对用户实际上毫无影响的类,却使得用户不得不重新 检查是否还可以同样方式使用新的包是不合理的。 注意:重用等价原则、共同闭包原则、共同重用原则这3个原则事实上是相 互排斥的,不可能同时被满足。它们是从不同使用者的角度提出的, 重用等价原则和共同重用原则是从重用人员的角度考虑的,而共同闭 包原则是从维护人员的角度考虑的。共同闭包原则希望包越大越好, 而共同重用原则却要求包越小越好。 一般在开发过程中,包中所包含的类可以变动,包的结构也可以相应地 变动。例如,在开发的早期,可以共同闭包原则为主。而当系统稳定后,可 以对包做一些重构(refashion),这时要以重
12、用等价原则和共同重用原则为 主。 1.2.4 非循环依赖原则 非循环依赖原则(ADP)指的是包之间的依赖关系不要形成循环。 也就是说不要有包A依赖于包B,包B依赖于包C,而包C又依赖于包A这 样的情况出现。如果确实无法避免出现包之间的循环依赖,则可以把这些有 循环依赖关系的包放在一个更大的包中,以消除这种循环依赖关系。 1 13 3 包的应用包的应用 除了在OO设计中对建模元素进行分组外,在Rose中,包可以提供一些特殊 的功能。如数据建模中,用包表示模式和域,在数据模型和对象模型之间的转换 是以包为单位进行的;在Web建模中,包可以表示某一虚拟目录(virtual directory),在该
13、目录下的所有web元素都在这个包中;另外包在 Rose中还可以 作为控制单元(controlled unit),以方便团队开发和配置管理。 1 14 4 小结小结 1包就像一个“容器”,可用于组织模型中的相关元素。 2包之间可以存在依赖关系,但这种依赖关系没有传递性。 3在设计包时,应遵循重用等价原则、共同闭包原则、共同 重用原则、非循环依赖原则等。 4包是一种很有用的建模机制,除了在OO设计中对建模元素 进行分组外,在数据建模、Web建模、支持团队开发等方 面有不可替代的作用。 习题习题: : 1什么是包? 2什么是包的泛化、包的依赖? 3包和类有何区别? 4哪些模型元素可以组成包? 5当把
14、模型元素组成一个包时应该考虑哪些问题? 6对超市管理系统绘制相应的包图。 2 2 组组 件件 图图 2.1 什么是组件和组件图 组件(组件(componentcomponent)是系统中遵从一组接口且提供其实现的物理的、可)是系统中遵从一组接口且提供其实现的物理的、可 替换的部分。组件图(替换的部分。组件图(component diagram diagram)则显示一组组件以及它们之间)则显示一组组件以及它们之间 的相互关系,包括编译、链接或执行时组件之间的依赖关系。组件图是对的相互关系,包括编译、链接或执行时组件之间的依赖关系。组件图是对OOOO 系统物理方面建模的两个图之一(另一个图是配置
15、图)。系统物理方面建模的两个图之一(另一个图是配置图)。 如图如图2.12.1正所示是一个组件图的例子,表示正所示是一个组件图的例子,表示.html.html文件、件、.exe.exe文件、文件、.dll.dll 文件这些组件之间的相互依赖关系。文件这些组件之间的相互依赖关系。 组件就是一个实际文件,可以有以下几种类型:组件就是一个实际文件,可以有以下几种类型: 配置组件(配置组件(deployment componentdeployment component),如),如 dlldll文件、文件、exe exe 文件、文件、COMCOM十对十对 象、象、CORBACORBA对象、对象、EJB
16、EJB、动态、动态WebWeb页、数据库表等。页、数据库表等。 工作产品组件(工作产品组件(work Product componentwork Product component ),如源代码文件、数据文件),如源代码文件、数据文件 等,这些组件可以用来产生配置组件。等,这些组件可以用来产生配置组件。 执行组件(执行组件(execution componentexecution component),也就是系统执行后得到的组件。),也就是系统执行后得到的组件。 组件图中的组件和类图中的类很容易混淆,下面是它们之间的几个不同点:组件图中的组件和类图中的类很容易混淆,下面是它们之间的几个不同点:
17、 p类是逻辑抽象,组件是物理抽象,即组件可以位于节点类是逻辑抽象,组件是物理抽象,即组件可以位于节点 (nodenode)上。)上。 p组件是对其他逻辑元素,如类、协作(组件是对其他逻辑元素,如类、协作(CollaborationCollaboration) 的物理实现。的物理实现。 p类可以有属性和操作,组件通常只有操作,而且这些操类可以有属性和操作,组件通常只有操作,而且这些操 只能通过组件的只能通过组件的 接口才能使用。接口才能使用。 2 22 2 组件图的作用组件图的作用 组件图可以对以下几个方面建模: (1)对源代码文件之间的相互关系建模,如图22所示。 (2)对可执行文件之间的相互
18、关系建模。如图23所示表示的是某可运 行系统的部分文件之间的相互关系。 在图23中,IDriver是接口,组件pathdll和接口 IDriver之间是依赖 关系,而组件dirverdll和接口 IDriver之间是实现关系。 2.4 2.4 小小 结结 1组件表示的是一个具体的物理元素。 2组件图用于显示一组组件以及它们之间的相互关系。 3使用组件图可以对源代码文件之间、可执行文件之间的相互关系建模。 习题: 1组件图是什么? 2组件图中的组件和类图中的类有什么不同? 3组件图的作用是什么? 3 3 部部 署署 图图 部署图(部署图(deployment deployment diagram
19、diagram)也称配置图、)也称配置图、 实施图,是对实施图,是对OOOO系统物系统物 理方面建模的两个图之理方面建模的两个图之 一 ( 另 一 个 图 是 组 件一 ( 另 一 个 图 是 组 件 图),它可以用来显示图),它可以用来显示 系统中计算节点的拓扑系统中计算节点的拓扑 结构和通信路径与节点结构和通信路径与节点 上运行的软构件等。一上运行的软构件等。一 个系统模型只有一个部个系统模型只有一个部 署图,部署图常常用于署图,部署图常常用于 帮助理解分布式系统。帮助理解分布式系统。 部署图由体系结构部署图由体系结构 设计师、网络工程师、设计师、网络工程师、 系统工程师等描述。图系统工程
20、师等描述。图 所示是一个部署图的例所示是一个部署图的例 子。子。 3.1 什么是部署图 3 32 2 部署图中的基本概念部署图中的基本概念 部署图有两个基本概念:节点和连接。部署图有两个基本概念:节点和连接。 3.2.1 3.2.1 节点节点 节点(节点(nodenode)是存在于运行时的代表计算资源的物理元素,节点一般都具有一些)是存在于运行时的代表计算资源的物理元素,节点一般都具有一些 内存,而且常常具有处理能力。内存,而且常常具有处理能力。 节点可以代表一个物理设备以及运行该设备上的软件系统,如节点可以代表一个物理设备以及运行该设备上的软件系统,如 UNIXUNIX主机主机,PC,PC机
21、、机、 打印机、传感器等。节点之间的连线表示系统之间进行交互的通信路径,这个通信路打印机、传感器等。节点之间的连线表示系统之间进行交互的通信路径,这个通信路 径称为连(径称为连(connectionconnection)。)。 部署图中的节点分为两种类型,即处理机(部署图中的节点分为两种类型,即处理机(processorprocessor)和设备()和设备(devicedevice)。)。 处理机是可以执行程序的硬件构件。在部署图中,可以说明处理机中有哪些进程、处理机是可以执行程序的硬件构件。在部署图中,可以说明处理机中有哪些进程、 进程的优先级与进程调度方式等。其中进程调度方式分抢占进程的优
22、先级与进程调度方式等。其中进程调度方式分抢占式(preemptivepreemptive)、非抢占)、非抢占 式(式(non-Preemptivenon-Preemptive)、循环式()、循环式(cycliccyclic)、算法控制方式()、算法控制方式(executiveexecutive)和外部用户控)和外部用户控 制方式(制方式(manualmanual)等。)等。 如图如图3 32 2所示是部署图中处理机的表示符号。所示是部署图中处理机的表示符号。 设备是无计算能力的硬件构件,如调制解调器、终端等。如图设备是无计算能力的硬件构件,如调制解调器、终端等。如图3 33 3所示是部所示是部
23、 署图中设备的表示符号。署图中设备的表示符号。 图32 部署图中的处理机 Prooess1 Prooess2 Porcessor Preemptiwe Mode m 图33 部署图中的设备 3.2.2 连接 连接表示两个硬件之间的关联关系。由于连接关系是关联,所以可以 像类图中那样,在关联上加角色、多重性、约束、版型等。一些常见的连 接有以太网连接、串行口连接、共享总线等。图3.4所示表示计算机和显 示设备之间采用RS232串行口连接。 3.33.3部署图的例子部署图的例子 部署图在描述较复杂系统的物理拓扑结构时很有用,下面给出一些使用部署图部署图在描述较复杂系统的物理拓扑结构时很有用,下面给
24、出一些使用部署图 的例子。的例子。 例例3.13.1:图:图3.53.5所示是描述所示是描述PCPC、外设、外设、ISPISP等相互间连接情况的部署图。外设等相互间连接情况的部署图。外设 ModemModem和和ISPISP的连接使用了版型的连接使用了版型 Dia1Up Dia1Up ConnectionConnection ,表示,表示ModemModem和和ISPISP是通过拨号连接的。是通过拨号连接的。 3 34 4 小结小结 1部署图可以显示系统中计算节点的拓扑结构和通信路 径、节点上运行的软构件等。一个系统模型只有一个 部署图。 2部署图中的节点分处理机和设备两种类型。 3部署图中的
25、连接表示的是两个硬件之间的关联关系。 4部署图在帮助理解复杂系统的物理结构时很有用。 习题: 1部署图是什么? 2部署图中的两个基本概念是什么? 3部署图的作用是什么? 4. 在系统模型中需要多少部署图? 包与包之间可以存在依赖关系,但这种依赖关系没有传递性。 如图1.2所示是包之间非传递依赖的例 子,包User Services依赖于包Business Services,包Business Services又依赖于包 Data Services,但包User Services并不依 赖于包Data Services。图中的依赖关系的 版型都是import,表示源包会存取目的 包中的内容,同时
26、目的包中的内容是加到源 包的名字空间的。这样在引用目的包中的内 容时不需要加包名限定,直接用目的包中的 元素名字即可。 User Services Business Services Data Services 图1.2 包之间的非传递依赖关系 import import 12 设计包的原则 在考虑如何对类进行分组并放入不同的包时,主要是根据类之间的依赖 关系进行分组。 包中的类应该是功能相关的,在建立包时,应把概念上和语义上相近 的模型元素纳入一个包。依赖关系其实是耦合的一种体现,如果两个包中 的类之间存在依赖关系,那么这两个包之间也就有了依赖关系,也就存在 了耦合关系。好的设计要求体现高内
27、聚、低耦合的特性。 在设计包时,应遵循以下原则: 1. 重用等价原则(Reuse Equivalency Principle,REP) 2. 共同闭包原则(Common Closure Principle,CCP) 3. 共同重用原则(Common Reuse Principle,CRP) 4. 非循环依赖原则(Acyclic Dependencies Principle,ADP) 1.2.3 共同重用原则(CRP) 共同重用原则指的是不会一起使用的类不要放在同一包中。 这个原则和包的依赖关系有关。如果元素A依赖于包P中的某个元素, 则表示A会依赖于P中的所有元素。也就是说,如果包P中的任何一个元素做 了修改,即使所修改的元素和A完全没有关系,也要检查元素A是否还能使 用包P。 所以一个包中包含的多个类之间如果关系不密切,改变其中的一个类 不会引起别的类的改变,那么把这些类放在同一个包中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沃尔沃营销活动策划方案(3篇)
- 秋季展厅活动策划方案(3篇)
- 施工方案的确认(3篇)
- 2026校招:山东国有资产投资控股公司笔试题及答案
- 数据分析师培养与发展规划方案
- 2026校招:日出实业集团笔试题及答案
- 2026校招:庆铃汽车集团笔试题及答案
- 成人失禁性皮炎的护理政策建议
- 2026校招:前程投资试题及答案
- 石油勘探工程师勘探进度与效率绩效评价表
- 安徽省江南十校2026届高三3月综合素质检测英语试题(含解析内镶嵌听力MP3音频有听力原文)
- (2026年)围手术期的血糖管理课件
- 2026年湖南生物机电职业技术学院单招职业技能考试题库及答案解析
- 2026年春季学期学校食堂员工食品安全培训
- 江西省抚州市南城一中2025-2026学年高三毕业年级第二模拟考试数学试题含解析
- 2026年春季人教版小学数学二年级下册教学计划(含进度表)
- 部编版五年级道德与法治下册各单元测试卷及期末测试卷共7套(含答案)
- 2026浙江绍兴理工学院招聘32人笔试备考题库及答案解析
- 宁德时代入职测评题
- 《银行会计(第四版)》全套教学课件
- (自2026年1月1日起施行)《增值税法实施条例》的重要变化解读
评论
0/150
提交评论