UML与系统分析设计(第二版) 第9章 包图.ppt
《UML与系统分析设计(第二版) 第9章 包图.ppt》由会员分享,可在线阅读,更多相关《UML与系统分析设计(第二版) 第9章 包图.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、在对一个大型的软件系统建立模型时往往需要面对在对一个大型的软件系统建立模型时往往需要面对和处理大量的模型元素,如对象类、接口、组件、和处理大量的模型元素,如对象类、接口、组件、节点、图等。节点、图等。UMLUML的包是一种对模型元素进行成组组织的通用的包是一种对模型元素进行成组组织的通用机制,它把语义上相近的可能一起变更的模型元机制,它把语义上相近的可能一起变更的模型元素组织在同一个包里,便于理解复杂的系统,控素组织在同一个包里,便于理解复杂的系统,控制系统结构各部分间的接缝。制系统结构各部分间的接缝。包是一种概念性的模型管理的图形工具,只在软件包是一种概念性的模型管理的图形工具,只在软件的开
2、发过程中存在。的开发过程中存在。包可以用于组织一个系统模型。一个系统的框架、包可以用于组织一个系统模型。一个系统的框架、模型、子系统等也都可以看作是特殊的包。模型、子系统等也都可以看作是特殊的包。第第9 9章章 包包图图Home第第9 9章章 包包图图9 9.1 .1 包包9.2 9.2 包的联系包的联系9.3 9.3 包图包图9.9.4 4 包图的应用包图的应用Home9.1 9.1 包包Home9.1.1 9.1.1 包的语义和表示包的语义和表示9.1.2 9.1.2 包的嵌套包的嵌套9.1.3 9.1.3 标准构造型标准构造型包(包(PackagePackage)是一种对模型元素进是一种
3、对模型元素进行成组组织的通用机制。行成组组织的通用机制。包用于定义一个名字空间包用于定义一个名字空间(NamespaceNamespace)或容器(或容器(ContainerContainer),),它本身是它本身是UMLUML的一种模型元素。的一种模型元素。运用包可以把语义上相近的可能一运用包可以把语义上相近的可能一起变更的模型元素组织在同一个包起变更的模型元素组织在同一个包里,对包中的元素作为一个整体对里,对包中的元素作为一个整体对待,并且控制它们的可视性和存取。待,并且控制它们的可视性和存取。包的图标是一个大矩形(内容框)包的图标是一个大矩形(内容框)的左上角带一个小矩形(名字框),的左
4、上角带一个小矩形(名字框),如图如图9.19.1所示。所示。包的名字可是一个简单名或路径名。包的名字可是一个简单名或路径名。在包名之后或之下,可用括在花括在包名之后或之下,可用括在花括号中的文字(约束)说明包的性质,号中的文字(约束)说明包的性质,如如“abstractabstract”、“versionversion”等。等。9.1.1 9.1.1 包的语义和表示包的语义和表示Home图9.1 简单包和扩展包示例 一个包可以拥有一个或多个模型元素,包括对象类、接一个包可以拥有一个或多个模型元素,包括对象类、接口、组件、节点、协同、口、组件、节点、协同、Use CaseUse Case、图等,
5、甚至拥有其图等,甚至拥有其他包。他包。所有所有UMLUML的模型元素都可以放入包内。通常,一个包拥的模型元素都可以放入包内。通常,一个包拥有的是对象类或其他的包。有的是对象类或其他的包。包与它所含的模型元素之间的关系是一种组合联系,即包与它所含的模型元素之间的关系是一种组合联系,即一个包由一个或多个模型元素组成,每一个模型元素在一个包由一个或多个模型元素组成,每一个模型元素在该包中声明。该包中声明。一个模型元素只能为一个包唯一地拥有。一个包消失了,一个模型元素只能为一个包唯一地拥有。一个包消失了,它所拥有的全部模型元素也随之消失。它所拥有的全部模型元素也随之消失。不同包的模型元素可以同名,但在
6、同一个包中的模型元不同包的模型元素可以同名,但在同一个包中的模型元素不能同名。素不能同名。9.1.1 9.1.1 包的语义和表示包的语义和表示Home包的模型元素名前可以有可视性标记,分包的模型元素名前可以有可视性标记,分别用别用“+”、“#”、“-”表示可视性为表示可视性为“公共公共”、“保护保护”、“私用私用”,如图,如图9.29.2所所示。示。包只是一种组织模型元素的容器,它没有包只是一种组织模型元素的容器,它没有实例,只有内含的内容,即对象类、接口实例,只有内含的内容,即对象类、接口等模型元素。等模型元素。包纯粹是一种概念性的建模工具,它与组包纯粹是一种概念性的建模工具,它与组件不同。
7、包只在软件的开发过程中存在,件不同。包只在软件的开发过程中存在,它类似一个有标签的文件夹,其中包含有它类似一个有标签的文件夹,其中包含有包的名字和内容。而组件是系统的组成部包的名字和内容。而组件是系统的组成部分,既存在于软件的开发过程中,也存在分,既存在于软件的开发过程中,也存在于系统的运行期间。于系统的运行期间。包内的模型元素具有较强的内聚性,不同包内的模型元素具有较强的内聚性,不同的包的元素之间的耦合性很弱。的包的元素之间的耦合性很弱。9.1.1 9.1.1 包的语义和表示包的语义和表示Home图9.2 包中元素的可视性 包可以拥有其他包作为包内的元素,子包又可以拥有自包可以拥有其他包作为
8、包内的元素,子包又可以拥有自己的子包,这样可以构成一个系统的嵌套结构,以表达己的子包,这样可以构成一个系统的嵌套结构,以表达系统模型元素的静态结构关系。系统模型元素的静态结构关系。包的嵌套可以清晰地表现系统模型元素之间的相互关系。包的嵌套可以清晰地表现系统模型元素之间的相互关系。但嵌套不宜过深,包的嵌套层数一般以但嵌套不宜过深,包的嵌套层数一般以2 23 3层为宜。层为宜。例:图例:图9.39.3是包的嵌套的一个示例,它表示一个通用图形是包的嵌套的一个示例,它表示一个通用图形编辑器的组织结构。编辑器的组织结构。包与它的元素的组成关系可以用树形结构表示,这对于包与它的元素的组成关系可以用树形结构
9、表示,这对于表达概念模型是有用的。例如,图表达概念模型是有用的。例如,图9.49.4是图是图9.39.3的树形表的树形表示,只不过它不能表达子包之间的依赖联系。示,只不过它不能表达子包之间的依赖联系。对于一个包可视的元素,对于该包的内嵌套子包也是可对于一个包可视的元素,对于该包的内嵌套子包也是可视的。视的。9.1.2 9.1.2 包的嵌套包的嵌套Home例:包的嵌套示例,如图例:包的嵌套示例,如图9.39.3所示。所示。9.1.2 9.1.2 包的嵌套包的嵌套Home图9.3 包的嵌套示例例:包中元素的树形结构示例,如图例:包中元素的树形结构示例,如图9.49.4所示。它是图所示。它是图9.3
10、9.3的树形表示。的树形表示。9.1.2 9.1.2 包的嵌套包的嵌套Home图9.4 包中元素的树形结构 对于一个包可以加上构造型或标记值说明其特定的性质,如说明包对于一个包可以加上构造型或标记值说明其特定的性质,如说明包的开发者,包所提供的服务等。的开发者,包所提供的服务等。UMLUML预定义的用于包的构造型有:预定义的用于包的构造型有:facade、等。等。构造型构造型facade说明一个包仅仅是其他一些包的视图。说明一个包仅仅是其他一些包的视图。构造型构造型framework说明一个包代表模型架构。说明一个包代表模型架构。构造型构造型stub说明一个包是另一个包的公共内容的服务代理。说
11、明一个包是另一个包的公共内容的服务代理。构造型构造型subsystem说明一个包代表系统模型的一个独立部分,说明一个包代表系统模型的一个独立部分,即子系统。即子系统。构造型构造型system说明一个包代表系统模型。说明一个包代表系统模型。构造型构造型facade和和stub特别有助于管理大型系统模型。特别有助于管理大型系统模型。9.1.3 9.1.3 标准构造型标准构造型Home9.2 9.2 包的联系包的联系Home9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖9.2.2 9.2.2 泛化泛化9.2.3 9.2.3 合并合并包与包之间的联系主要有两种:依赖(尤其是包与包之间的联系主要有
12、两种:依赖(尤其是输入依赖)和泛化。输入依赖)和泛化。两个模型元素之间存在着依赖是指一个元素的两个模型元素之间存在着依赖是指一个元素的定义的改变会引起另一个元素发生相应改变。定义的改变会引起另一个元素发生相应改变。对于对象类来说,依赖联系有多种情况,如一对于对象类来说,依赖联系有多种情况,如一个类以另一个类作为其数据的一个部分,一个个类以另一个类作为其数据的一个部分,一个类用另一个类作为操作的参数等。类用另一个类作为操作的参数等。两个包之间存在着依赖通常是指这两个包所含两个包之间存在着依赖通常是指这两个包所含的模型元素之间存在着一个或多个依赖。的模型元素之间存在着一个或多个依赖。9.2.1 9
13、.2.1 依赖与输入依赖依赖与输入依赖Home对于由对象类组成的包,如果在两个包的任何对于由对象类组成的包,如果在两个包的任何对象类之间存在着任何一种依赖,则这两个包对象类之间存在着任何一种依赖,则这两个包之间存在着依赖。之间存在着依赖。包的依赖联系同样是用一条虚箭线表示,虚箭包的依赖联系同样是用一条虚箭线表示,虚箭线从依赖包(源)指向独立包(目标)。线从依赖包(源)指向独立包(目标)。包的依赖联系没有传递性。包的依赖联系没有传递性。例:例:“订货订货”包与包与“顾客顾客”包之间存在着依赖,包之间存在着依赖,如图如图9.59.5所示。所示。9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖H
14、ome例:包的嵌套与泛化示例,如图例:包的嵌套与泛化示例,如图9.59.5所示。所示。9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖Home图9.5 包的嵌套与泛化示例 包的依赖联系可以加上许多构造型规定它的语义,其中包的依赖联系可以加上许多构造型规定它的语义,其中最常见的一种依赖是输入依赖。最常见的一种依赖是输入依赖。输入依赖(输入依赖(Import DependencyImport Dependency)是包与包之间的一种存是包与包之间的一种存取(取(AccessAccess)依赖关系。输入(依赖关系。输入(ImportingImporting)是指允许一是指允许一个包中的元素存取另
15、一个包中的元素。输入依赖是单向个包中的元素存取另一个包中的元素。输入依赖是单向的。输入依赖没有传递性。的。输入依赖没有传递性。包的公共部分,即其可视性为包的公共部分,即其可视性为“公共公共”的模型元素,称的模型元素,称为包的输出(为包的输出(ExportExport)。)。包的输出只对另一个与它有输包的输出只对另一个与它有输入依赖的包才是可视的、可存取的。入依赖的包才是可视的、可存取的。输入依赖的表示方法是在虚箭线上标有构造型输入依赖的表示方法是在虚箭线上标有构造型Import,箭头从输入方的包指向输出方的包。箭头从输入方的包指向输出方的包。注意,存取依赖联系的另一个构造型注意,存取依赖联系的
16、另一个构造型 Access,与与Import的含义略有差别。的含义略有差别。9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖Home例:包的输入依赖示例,如图例:包的输入依赖示例,如图9.69.6所示。所示。9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖Home图9.6 包的输入依赖示例 泛化联系表达事物的一般与特殊的关系。如果两个包之泛化联系表达事物的一般与特殊的关系。如果两个包之间存在有泛化联系,意指其中的特殊性包必须遵循一般间存在有泛化联系,意指其中的特殊性包必须遵循一般性包的接口。性包的接口。实际上,对于一般性包可以加上一个性质说明实际上,对于一般性包可以加上一个性质说明“a
17、bstractabstract”,表明它只不过是定义了一个接口,该表明它只不过是定义了一个接口,该接口可以由多个特殊包实现。接口可以由多个特殊包实现。与类的继承相同,特殊包从一般包继承其所含的公共类,与类的继承相同,特殊包从一般包继承其所含的公共类,并且可以重载和添加自己的类。特殊包可以代替一般包,并且可以重载和添加自己的类。特殊包可以代替一般包,用在一般包使用的任何地方。用在一般包使用的任何地方。例如,在图例如,在图9.59.5中包中包“数据库接口数据库接口”与包与包“OracleOracle接口接口”、“SybaseSybase接口接口”之间存在泛化联系。其中,之间存在泛化联系。其中,“数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UML与系统分析设计第二版 第9章 包图 UML 系统分析 设计 第二
限制150内