《第9章 包图优秀课件.ppt》由会员分享,可在线阅读,更多相关《第9章 包图优秀课件.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1页,本讲稿共52页在对一个大型的软件系统建立模型时往往需在对一个大型的软件系统建立模型时往往需要面对和处理大量的模型元素,如对象类、要面对和处理大量的模型元素,如对象类、接口、组件、节点、图等。接口、组件、节点、图等。UMLUML的包是一种对模型元素进行成组组织的通的包是一种对模型元素进行成组组织的通用机制,它把语义上相近的可能一起变更的模用机制,它把语义上相近的可能一起变更的模型元素组织在同一个包里,便于理解复杂的系型元素组织在同一个包里,便于理解复杂的系统,控制系统结构各部分间的接缝。统,控制系统结构各部分间的接缝。包可以用于组织一个系统模型。一个系统的包可以用于组织一个系统模型。一个
2、系统的框架、模型、子系统等也都可以看作是特殊框架、模型、子系统等也都可以看作是特殊的包。的包。第第第第9 9章章章章 包图包图包图包图Home第2页,本讲稿共52页第第第第9 9章章章章 包图包图包图包图9.1 9.1 包包9.2 9.2 包的联系包的联系9.3 9.3 包图包图9.4 9.4 包图的应用包图的应用Home第3页,本讲稿共52页9.1 9.1 包包包包Home9.1.1 9.1.1 包的语义和表示包的语义和表示9.1.2 9.1.2 包的嵌套包的嵌套9.1.3 9.1.3 标准构造型标准构造型第4页,本讲稿共52页E运用包可以把语义上相近的可能一起变更的模型运用包可以把语义上相
3、近的可能一起变更的模型元素组织在同一个包里,对包中的元素作为一个元素组织在同一个包里,对包中的元素作为一个整体对待,并且控制它们的可视性和存取。整体对待,并且控制它们的可视性和存取。E包的图标是一个大矩形(内容包的图标是一个大矩形(内容 框)的左上角带一个小矩形(框)的左上角带一个小矩形(名字框),如图名字框),如图9.19.1所示。所示。E包的名字可是一个简单名或路包的名字可是一个简单名或路 径名。在包名之后或之下,可径名。在包名之后或之下,可 用括在花括号中的文字(约束)用括在花括号中的文字(约束)说明包的性质,如说明包的性质,如“abstractabstract”、“versionver
4、sion”等。等。9.1.1 9.1.1 包的语义和表示包的语义和表示包的语义和表示包的语义和表示第5页,本讲稿共52页E一个包可以拥有一个或多个模型元素,包括一个包可以拥有一个或多个模型元素,包括对象类、接口、组件、节点、协同、对象类、接口、组件、节点、协同、Use Use CaseCase、图等,甚至拥有其他包。、图等,甚至拥有其他包。E所有所有UMLUML的模型元素都可以放入包内。通常,的模型元素都可以放入包内。通常,一个包拥有的是对象类或其他的包。一个包拥有的是对象类或其他的包。E包与它所含的模型元素之间的关系是一种包与它所含的模型元素之间的关系是一种组合联系,即一个包由一个或多个模型
5、元组合联系,即一个包由一个或多个模型元素组成。一个包消失了,它所拥有的全部素组成。一个包消失了,它所拥有的全部模型元素也随之消失。模型元素也随之消失。E不同包的模型元素可以同名,但在同一个包不同包的模型元素可以同名,但在同一个包中的模型元素不能同名。中的模型元素不能同名。9.1.1 9.1.1 包的语义和表示包的语义和表示包的语义和表示包的语义和表示Home第6页,本讲稿共52页E包的模型元素名前可以有可视性标记,分别用包的模型元素名前可以有可视性标记,分别用“+”、“#”、“-”表示可视性为表示可视性为“公共公共”、“保护保护”、“私用私用”,如图,如图9.29.2所示。所示。E包只是一种组
6、织模型元素的容器,它没有实例,只包只是一种组织模型元素的容器,它没有实例,只有内含的内容,即对象类、接口等模型元素。有内含的内容,即对象类、接口等模型元素。9.1.1 9.1.1 包的语义和表示包的语义和表示包的语义和表示包的语义和表示第7页,本讲稿共52页E包纯粹是一种概念性的建模工具,它与组件不包纯粹是一种概念性的建模工具,它与组件不同。包只在软件的开发过程中存在,它类似同。包只在软件的开发过程中存在,它类似一个有标签的文件夹,其中包含有包的名字一个有标签的文件夹,其中包含有包的名字和内容。而组件是系统的组成部分,既存在和内容。而组件是系统的组成部分,既存在于软件的开发过程中,也存在于系统
7、的运行于软件的开发过程中,也存在于系统的运行期间。期间。E包内的模型元素具有较强的内聚性,不同的包包内的模型元素具有较强的内聚性,不同的包的元素之间的耦合性很弱。的元素之间的耦合性很弱。9.1.1 9.1.1 包的语义和表示包的语义和表示包的语义和表示包的语义和表示第8页,本讲稿共52页E包可以拥有其他包作为包内的元素,子包又可包可以拥有其他包作为包内的元素,子包又可以拥有自己的子包,这样可以构成一个系统的以拥有自己的子包,这样可以构成一个系统的嵌套结构,以表达系统模型元素的静态结构关嵌套结构,以表达系统模型元素的静态结构关系。系。E包的嵌套可以清晰地表现系统模型元素之包的嵌套可以清晰地表现系
8、统模型元素之间的相互关系。但嵌套不宜过深,包的嵌间的相互关系。但嵌套不宜过深,包的嵌套层数一般以套层数一般以2 23 3层为宜。层为宜。9.1.2 9.1.2 包的嵌套包的嵌套包的嵌套包的嵌套Home第9页,本讲稿共52页E例:图例:图9.39.3是包的嵌套的一个示例,它表示一个是包的嵌套的一个示例,它表示一个通用图形编辑器的组织结构。通用图形编辑器的组织结构。E包与它的元素的组成关系可以用树形结构表示,包与它的元素的组成关系可以用树形结构表示,这对于表达概念模型是有用的。例如,图这对于表达概念模型是有用的。例如,图9.49.4是是图图9.39.3的树形表示,只不过它不能表达子包之间的树形表示
9、,只不过它不能表达子包之间的依赖联系。的依赖联系。9.1.2 9.1.2 包的嵌套包的嵌套包的嵌套包的嵌套第10页,本讲稿共52页E例:包的嵌套示例,如图例:包的嵌套示例,如图9.39.3所示。所示。9.1.2 9.1.2 包的嵌套包的嵌套包的嵌套包的嵌套第11页,本讲稿共52页E例:包中元素的树形结构示例,如图例:包中元素的树形结构示例,如图9.49.4所示。所示。它是图它是图9.39.3的树形表示。的树形表示。9.1.2 9.1.2 包的嵌套包的嵌套包的嵌套包的嵌套第12页,本讲稿共52页9.2 9.2 包的联系包的联系包的联系包的联系Home9.2.1 9.2.1 依赖与输入依赖依赖与输
10、入依赖9.2.2 9.2.2 泛化泛化9.2.3 9.2.3 合并合并第13页,本讲稿共52页E包与包之间的联系主要有两种:依赖(尤其包与包之间的联系主要有两种:依赖(尤其是输入依赖)和泛化。是输入依赖)和泛化。E两个模型元素之间存在着依赖是指一个元素两个模型元素之间存在着依赖是指一个元素的定义的改变会引起另一个元素发生相应改的定义的改变会引起另一个元素发生相应改变。变。E两个包之间存在着依赖通常是指这两个包两个包之间存在着依赖通常是指这两个包所含的模型元素之间存在着一个或多个依所含的模型元素之间存在着一个或多个依赖。赖。E对于由对象类组成的包,如果在两个包的对于由对象类组成的包,如果在两个包
11、的任何对象类之间存在着任何一种依赖,则任何对象类之间存在着任何一种依赖,则这两个包之间存在着依赖。这两个包之间存在着依赖。9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖依赖与输入依赖依赖与输入依赖第14页,本讲稿共52页E包的依赖联系同样是用一条虚箭线表示,虚包的依赖联系同样是用一条虚箭线表示,虚箭线从依赖包(源)指向独立包(目标)。箭线从依赖包(源)指向独立包(目标)。E包的依赖联系没有传递性。包的依赖联系没有传递性。E例:例:“订货订货”包与包与“顾客顾客”包之间存在着包之间存在着依赖,如图依赖,如图9.59.5所示。所示。9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖依赖与输
12、入依赖依赖与输入依赖Home第15页,本讲稿共52页E例:包的嵌套与泛化示例,如图例:包的嵌套与泛化示例,如图9.59.5所示。所示。9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖依赖与输入依赖依赖与输入依赖第16页,本讲稿共52页E包的依赖联系可以加上许多构造型规定它的语义,其包的依赖联系可以加上许多构造型规定它的语义,其中最常见的一种依赖是输入依赖。中最常见的一种依赖是输入依赖。E输入依赖是包与包之间的一种存取依赖关系。输输入依赖是包与包之间的一种存取依赖关系。输入指允许一个包的元素存取另一个包的元素。输入指允许一个包的元素存取另一个包的元素。输入依赖是单向的。输入依赖没有传递性。入
13、依赖是单向的。输入依赖没有传递性。E包的公共部分,即其可视性为包的公共部分,即其可视性为“公共公共”的模型元素,的模型元素,称为包的输出。包的输出只对另一个与它有输入依赖的称为包的输出。包的输出只对另一个与它有输入依赖的包才是可视的、可存取的。包才是可视的、可存取的。E输入依赖的表示方法是在虚箭线上标有构造型输入依赖的表示方法是在虚箭线上标有构造型,箭头从输入方的包指向输出方的包。,箭头从输入方的包指向输出方的包。9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖依赖与输入依赖依赖与输入依赖第17页,本讲稿共52页E例:包的输入依赖示例,如图例:包的输入依赖示例,如图9.69.6所示。所示。
14、9.2.1 9.2.1 依赖与输入依赖依赖与输入依赖依赖与输入依赖依赖与输入依赖第18页,本讲稿共52页E泛化联系表达事物的一般与特殊的关系。如泛化联系表达事物的一般与特殊的关系。如果两个包之间存在有泛化联系,意指其中的果两个包之间存在有泛化联系,意指其中的特殊性包必须遵循一般性包的接口。特殊性包必须遵循一般性包的接口。E与类的继承相同,特殊包从一般包继承其所含与类的继承相同,特殊包从一般包继承其所含的公共类,并且可以重载和添加自己的类。特的公共类,并且可以重载和添加自己的类。特殊包可以代替一般包,用在一般包使用的任何殊包可以代替一般包,用在一般包使用的任何地方。地方。E例如,在图例如,在图9
15、.59.5中包中包“数据库接口数据库接口”与包与包“OracleOracle接口接口”、“SybaseSybase接口接口”之间存在之间存在泛化联系。其中,泛化联系。其中,“数据库接口数据库接口”包是一般包是一般包,包,“OracleOracle接口接口”包和包和“SybaseSybase接口接口”包是包是特殊包。特殊包。9.2.2 9.2.2 泛化泛化泛化泛化第19页,本讲稿共52页E例:包的嵌套与泛化示例,如图例:包的嵌套与泛化示例,如图9.59.5所示。所示。9.2.2 9.2.2 泛化泛化泛化泛化第20页,本讲稿共52页E包之间的合并联系也是一种依赖关系,它用一包之间的合并联系也是一种
16、依赖关系,它用一条带有构造型条带有构造型的虚箭线表示,从接的虚箭线表示,从接受合并包指向被合并包。受合并包指向被合并包。E包合并联系允许被合并包的内容与接受合并包合并联系允许被合并包的内容与接受合并包的内容合并,即(在概念上而非物理上)包的内容合并,即(在概念上而非物理上)把被合并包中的全部元素合并加入到接受合把被合并包中的全部元素合并加入到接受合并包中,而被合并包与接受合并包中的那些并包中,而被合并包与接受合并包中的那些具有相同名称的元素则合并成一个唯一的元具有相同名称的元素则合并成一个唯一的元素,它拥有两者的特征。素,它拥有两者的特征。E当定义在不同的包中的模型元素具有相同的名当定义在不同
17、的包中的模型元素具有相同的名称并且表达相同的概念时,就需要使用包合并称并且表达相同的概念时,就需要使用包合并联系。联系。9.2.3 9.2.3 合并合并合并合并第21页,本讲稿共52页9.2.3 合并合并E例:在图例:在图9.79.7中,包中,包P P和和Q Q与包与包W W之间存在合并联系,之间存在合并联系,如图如图9.79.7(a a)所示。它的含义是(在概念上)包)所示。它的含义是(在概念上)包P P和和Q Q中的全部模型元素中的全部模型元素类类A A、B B、C C合并到包合并到包W W中,其中合并后包中,其中合并后包W W的类的类A A的内容是包的内容是包P P和和Q Q各各自的类自
18、的类A A与包与包W W中原来的类中原来的类A A(可分别记作(可分别记作P P:A A、Q Q:A A和和W W:A A)合并的结果,类)合并的结果,类W W:A A的属性和操的属性和操作来自作来自P P:A A、Q Q:A A和和W W:A A,如图,如图9.79.7(b b)所示。)所示。第22页,本讲稿共52页例:包例:包P P和和Q Q中的类中的类A A、B B、C C合并到包合并到包W W中,如图中,如图9.79.7所示。所示。9.2.3 9.2.3 合并合并合并合并WASno:IntSname:StringDeptno:IntOp1()Op2()CBDPASno:IntSname
19、:StringOp1()BADeptno:IntOp2()QCWDA(a)(b)第23页,本讲稿共52页E包图由包和包之间的联系构成。包图的图形节点是包图由包和包之间的联系构成。包图的图形节点是包,节点之间用弧(依赖或泛化)连接。包,节点之间用弧(依赖或泛化)连接。E包图是维护和控制系统总体结构的重要建模工包图是维护和控制系统总体结构的重要建模工具。具。E包在很多方面与对象类相似,但是在建立系统模型包在很多方面与对象类相似,但是在建立系统模型时特别要注意区别包与类。时特别要注意区别包与类。E对象类是问题领域或解决方案中的事物的抽象,对象类是问题领域或解决方案中的事物的抽象,包是把这些事物组织成
20、模型的一种机制。包是把这些事物组织成模型的一种机制。E包可以没有标识,因为它没有实例,在运行系统中包可以没有标识,因为它没有实例,在运行系统中不可见;类必须有标识,它有实例,类的实例(对象)不可见;类必须有标识,它有实例,类的实例(对象)是运行系统的组成元素。是运行系统的组成元素。9.3 9.3 包图包图包图包图第24页,本讲稿共52页9.4 9.4 包图的应用包图的应用包图的应用包图的应用Home9.4.1 9.4.1 包图的建立包图的建立9.4.2 9.4.2 系统建模系统建模9.4.3 9.4.3 开发跟踪开发跟踪第25页,本讲稿共52页使用包的目的是把模型元素组织成组,为其命使用包的目
21、的是把模型元素组织成组,为其命名,以便作为整体处理。名,以便作为整体处理。对于一个大型的复杂的系统,常需要把系统设对于一个大型的复杂的系统,常需要把系统设计模型中的大量的模型元素组织成包和子系统计模型中的大量的模型元素组织成包和子系统(子系统是特殊的包),给出它们之间的联系,(子系统是特殊的包),给出它们之间的联系,以方便理解和处理整个模型。以方便理解和处理整个模型。Home9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第26页,本讲稿共52页建立包图的具体的做法如下:建立包图的具体的做法如下:(1 1)分分析析系系统统模模型型元元素素(通通常常是是对对象象类类),把把概概念
22、念上或语义上相近的模型元素纳入一个包。上或语义上相近的模型元素纳入一个包。(2 2)对对于于每每一一个个包包,标标出出其其模模型型元元素素的的可可视视性性:公共、保护或私用。公共、保护或私用。(3 3)确定包与包之间的依赖联系,特别是输入依赖。)确定包与包之间的依赖联系,特别是输入依赖。(4 4)确确定定包包与与包包之之间间的的泛泛化化联联系系,确确定定包包元元素素的的多态性与重载。多态性与重载。(5 5)绘制包图。)绘制包图。(6 6)包图精化。)包图精化。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第27页,本讲稿共52页1.1.将模型元素打包将模型元素打包包是一种通用
23、的组织机制,可以运用于多种组包是一种通用的组织机制,可以运用于多种组织模型图。例如类图中的类、用例图中的用例、织模型图。例如类图中的类、用例图中的用例、构建图中的构件。构建图中的构件。划分包的基本原则就是把关系较为密切的模型划分包的基本原则就是把关系较为密切的模型元素组织到同一个包中元素组织到同一个包中,使每个包尽可能使,使每个包尽可能使高内聚高内聚的,不同的包之间尽可能是的,不同的包之间尽可能是低耦合低耦合的。的。在数量上,每个包内的模型元素宜控制在在数量上,每个包内的模型元素宜控制在7272的范围内。的范围内。以下分别讨论对类图和用例图中的模型元素打包以下分别讨论对类图和用例图中的模型元素
24、打包的策略。的策略。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第28页,本讲稿共52页1.1 1.1 对类图中的模型元素打包对类图中的模型元素打包1 1)参照类图中的各种关系)参照类图中的各种关系类之间的关系主要是泛化、聚合、关联和依赖。类之间的关系主要是泛化、聚合、关联和依赖。这些关系是在类图中划分包的重要依据。特别是,这些关系是在类图中划分包的重要依据。特别是,由继承关系所形成的一般、特殊结构和由集合关由继承关系所形成的一般、特殊结构和由集合关系所形成的整体系所形成的整体-部分结构更是一些在概念、结构部分结构更是一些在概念、结构上联系非常紧密的类的集合。上联系非常紧密
25、的类的集合。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第29页,本讲稿共52页9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立ABDCEFWBAVECSFD第30页,本讲稿共52页ABDCEFWDAVEBSFC9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第31页,本讲稿共52页这些关系的图形表示法都是一些线条,观察各这些关系的图形表示法都是一些线条,观察各个类之间线条的多少就可以知道他们之间关系个类之间线条的多少就可以知道他们之间关系的强弱。的强弱。把关系密切的类组织到同一个包中,把关系密切的类组织到同一个包中,则跨越包的关系就比较少,
26、从而达到高内聚、则跨越包的关系就比较少,从而达到高内聚、低耦合的效果。低耦合的效果。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第32页,本讲稿共52页2 2)参照各种实际因素)参照各种实际因素(1 1)对象来源)对象来源模型中各个类所描述的对象可能来自问题域的不模型中各个类所描述的对象可能来自问题域的不同方面。同方面。把来自同一个部门、机构或者业务领域把来自同一个部门、机构或者业务领域的对象类组织到同一个包中的对象类组织到同一个包中,可以比较自然地体,可以比较自然地体现问题域中事物的实际划分。如此划分的包既容现问题域中事物的实际划分。如此划分的包既容易理解,也便于开展工作
27、,因为分析工作常常就易理解,也便于开展工作,因为分析工作常常就是按照这样的划分而分工、分块进行,并且可能是按照这样的划分而分工、分块进行,并且可能按照同样的办法来划分子系统。按照同样的办法来划分子系统。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第33页,本讲稿共52页(2 2)功能类别)功能类别如果一组类的对象所提供的功能属于同一类如果一组类的对象所提供的功能属于同一类业务,则可把它们组织到同一个包中。业务,则可把它们组织到同一个包中。例如,在银行业务系统中,有些对象处理存款例如,在银行业务系统中,有些对象处理存款业务,有些对象处理信贷业务,有些对象处理业务,有些对象处理
28、信贷业务,有些对象处理代理收费业务。每一类业务还可能包括若干不代理收费业务。每一类业务还可能包括若干不同的品种,通过一组对象来提供各种功能。则同的品种,通过一组对象来提供各种功能。则可以把处理上述三类业务的对象类分别组织到可以把处理上述三类业务的对象类分别组织到三个包中。三个包中。如此划分的包能够自然地体现系统功能的划如此划分的包能够自然地体现系统功能的划分,并且常常能体现子系统的划分。分,并且常常能体现子系统的划分。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第34页,本讲稿共52页(3 3)通信频繁程度)通信频繁程度如果一组类的对象之间的通信比较频繁,或者如果一组类的对
29、象之间的通信比较频繁,或者要传送大量的数据,则尽可能把他们组织到同要传送大量的数据,则尽可能把他们组织到同一个包中一个包中。这样的包有利于系统性能的改进,。这样的包有利于系统性能的改进,对设计和实现阶段构件的组织和部署也有较强对设计和实现阶段构件的组织和部署也有较强的指导意义。的指导意义。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第35页,本讲稿共52页3 3)并发和分布情况)并发和分布情况分布到不同处理机上的类通常都应该划分到不分布到不同处理机上的类通常都应该划分到不同的包中。同的包中。例如在客户例如在客户-服务器结构中,应该把客户机上实现服务器结构中,应该把客户机上实
30、现的类与服务器上实现的类划分到不同的包中。的类与服务器上实现的类划分到不同的包中。在划分包的时候注意到这一点对以后的构件实现在划分包的时候注意到这一点对以后的构件实现和部署将带来便利和部署将带来便利每个包中的模型元素都是每个包中的模型元素都是在同一台处理机上运行的,因此在定义构件时不在同一台处理机上运行的,因此在定义构件时不必为考虑分布问题而把一个包拆开。必为考虑分布问题而把一个包拆开。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第36页,本讲稿共52页1.2 1.2 对用例图中的模型元素打包对用例图中的模型元素打包在用例图中需要被打包的模型主要是用例,其次在用例图中需要被
31、打包的模型主要是用例,其次是参与者。是参与者。对用例打包,考虑的首要因素是它们对用例打包,考虑的首要因素是它们所描述功能之间关系的紧密程度。所描述功能之间关系的紧密程度。在用例图中,在用例图中,用例之间的关系以及用例与参与者之间的关系用例之间的关系以及用例与参与者之间的关系也是重要的参考因素。也是重要的参考因素。(1 1)功能类别)功能类别如果一组用例所描述的功能如果一组用例所描述的功能属于同一类业务属于同一类业务,则可把它们组织到同一个包中。这样划分的包可则可把它们组织到同一个包中。这样划分的包可以自然地体现系统功能的划分。以自然地体现系统功能的划分。9.4.1 9.4.1 包图的建立包图的
32、建立包图的建立包图的建立第37页,本讲稿共52页(2 2)用例之间的扩展和包含关系)用例之间的扩展和包含关系用例图中出现的扩展和包含关系实际上是功用例图中出现的扩展和包含关系实际上是功能上的依赖关系在模型中的体现。能上的依赖关系在模型中的体现。把存在着扩把存在着扩展或者包含关系的用例组织到同一个包中是正确展或者包含关系的用例组织到同一个包中是正确的和必须的的和必须的。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第38页,本讲稿共52页(3 3)参与者与用例之间的关系)参与者与用例之间的关系考察每一类参与者将参与哪些用例所描述的交互,考察每一类参与者将参与哪些用例所描述的交互
33、,对包的划分也有很好的参考意义。对包的划分也有很好的参考意义。可以针对每一可以针对每一类参与者组织一个包类参与者组织一个包,把它参与的所有用例组织,把它参与的所有用例组织到这个包中。这样的包能够集中地体现系统对一到这个包中。这样的包能够集中地体现系统对一类参与者所提供的全部功能。类参与者所提供的全部功能。用例图中的参与者一般不需要单独地打包。用例图中的参与者一般不需要单独地打包。在对在对用例打包时,只要把参与各个用例的参与者用例打包时,只要把参与各个用例的参与者也带到相应的包中即可。也带到相应的包中即可。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第39页,本讲稿共52页1
34、.3 1.3 包的内容交叉问题包的内容交叉问题在进行包的划分时,经常会遇到这样的情况:某些在进行包的划分时,经常会遇到这样的情况:某些模型元素既应该出现在这个包中,也应该出现在另模型元素既应该出现在这个包中,也应该出现在另外的包中,无论哪个包缺少了他们都显得不够完整。外的包中,无论哪个包缺少了他们都显得不够完整。例如,在教学管理系统中,例如,在教学管理系统中,“学生学生”这个类既需这个类既需要在要在“课程管理课程管理”包中出现,也需要在包中出现,也需要在“学籍管理学籍管理”包中出现。这常常使建模者在决定包的划分包中出现。这常常使建模者在决定包的划分时陷入两难的境地。要使每个包都具有完整的时陷入
35、两难的境地。要使每个包都具有完整的含义并且容易被理解,就只能允许这个类在这含义并且容易被理解,就只能允许这个类在这些包中重复出现。也就是说,允许两个(或者些包中重复出现。也就是说,允许两个(或者多个)包的内容有交叉的部分。多个)包的内容有交叉的部分。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第40页,本讲稿共52页问题是,如果允许同一个模型元素出现在多个问题是,如果允许同一个模型元素出现在多个包中,就可能给模型的阅读者造成一种误解包中,就可能给模型的阅读者造成一种误解似乎建模者犯了对同一个模型成分似乎建模者犯了对同一个模型成分重复定义的重复定义的错误错误,或者以为建模者的
36、本意是要求在系统的多,或者以为建模者的本意是要求在系统的多个包中把个包中把同样一个模型元素实现多次同样一个模型元素实现多次。对此问题的解决办法是:当多个包中都需要对此问题的解决办法是:当多个包中都需要含有同一个模型元素时,选择或者随意指定含有同一个模型元素时,选择或者随意指定其中一个包正式的拥有这个元素,使其他包其中一个包正式的拥有这个元素,使其他包只是拥有它的只是拥有它的副本副本,表示这里出现的模型元素,表示这里出现的模型元素只是一个便于阅读的副本,并不要求实现。表示只是一个便于阅读的副本,并不要求实现。表示的方法如下图:的方法如下图:9.4.1 9.4.1 包图的建立包图的建立包图的建立包
37、图的建立第41页,本讲稿共52页类名类名副本副本用例名用例名副本副本课程管理课程管理教师教师学生学生课程课程学籍管理学籍管理学历学历学位学位学生学生副本副本9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第42页,本讲稿共52页以上用类图和用例图为例讨论了包的划分策略。以上用类图和用例图为例讨论了包的划分策略。运用不同的策略可以得到不同的结构。人们可以运用不同的策略可以得到不同的结构。人们可以从不同的角度观察问题并考虑包的划分。不能说从不同的角度观察问题并考虑包的划分。不能说哪种划分方式绝对正确或者绝对错误。哪种划分方式绝对正确或者绝对错误。评判划分结构优劣的大致准则是:高内聚
38、、评判划分结构优劣的大致准则是:高内聚、低耦合,易于理解,便于实现。低耦合,易于理解,便于实现。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第43页,本讲稿共52页4.4.建立包之间的关系建立包之间的关系1 1)引入关系)引入关系在两个包之间,如果以下三个条件都能满足,在两个包之间,如果以下三个条件都能满足,则可以建立他们之间的引入关系:则可以建立他们之间的引入关系:源包中的模型元素需要引用目标包中的模型源包中的模型元素需要引用目标包中的模型元素;元素;9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第44页,本讲稿共52页目标包中被引用的模型元素与源包中所
39、有模型目标包中被引用的模型元素与源包中所有模型元素的名字不发生冲突(即没有同名现象),而元素的名字不发生冲突(即没有同名现象),而且与同一个源包所引入的其他目标包的模型元素且与同一个源包所引入的其他目标包的模型元素的名字也不发生冲突。的名字也不发生冲突。系统开发者希望通过引入关系来简化对目系统开发者希望通过引入关系来简化对目标包模型元素的引用。标包模型元素的引用。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第45页,本讲稿共52页9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立A+VB+WC+V+L+L第46页,本讲稿共52页2 2)依赖关系)依赖关系通过考
40、察属于不同包的模型元素之间的关系,通过考察属于不同包的模型元素之间的关系,可以判断包之间是否存在依赖关系。可以判断包之间是否存在依赖关系。在类图中,依赖关系主要体现于对象之间的在类图中,依赖关系主要体现于对象之间的各种关系,即各种关系,即泛化、聚合、关联泛化、聚合、关联。在泛化关系。在泛化关系中特殊类依赖一般类;在聚合关系中部分对象的中特殊类依赖一般类;在聚合关系中部分对象的类依赖整体对象的类;在关联关系中要看具体的类依赖整体对象的类;在关联关系中要看具体的实现决策,可能单向依赖,也可能双向依赖。实现决策,可能单向依赖,也可能双向依赖。对于由类组成的包,如果两个包中的某些类之间对于由类组成的包
41、,如果两个包中的某些类之间有以上几种关系,则可建立这两个包之间的依赖有以上几种关系,则可建立这两个包之间的依赖关系。关系。9.4.1 9.4.1 包图的建立包图的建立包图的建立包图的建立第47页,本讲稿共52页在用例图中,用例之间的依赖关系主要体现于在用例图中,用例之间的依赖关系主要体现于扩扩展和包含展和包含。基用例依赖扩展用例,基用例依赖。基用例依赖扩展用例,基用例依赖包含用例。如果两个包中的某些用例之间存在包含用例。如果两个包中的某些用例之间存在着扩展或者包含关系,则可建立这两个包之间着扩展或者包含关系,则可建立这两个包之间的依赖关系。的依赖关系。9.4.1 9.4.1 包图的建立包图的建
42、立包图的建立包图的建立第48页,本讲稿共52页企业企业职能职能部门部门员工员工经理经理副经理副经理11.n10.2工作工作任务任务赢利赢利公关公关后勤后勤保障保障1.n1.n承担承担资源资源经费经费技术技术方法方法员工员工练习练习练习练习第49页,本讲稿共52页企业企业资源资源工作任务工作任务职能部门职能部门经费经费技术方法技术方法员工员工副本副本员工员工经理经理副经理副经理赢利赢利公关公关后勤保障后勤保障练习练习练习练习第50页,本讲稿共52页系统诊断系统诊断挂号挂号网上就诊网上就诊查询查询病人账户管理病人账户管理实时监测实时监测网络呼叫网络呼叫系统设置系统设置帐号管理帐号管理备份数据备份数
43、据网络在线医务服务系统网络在线医务服务系统extendincludeextend病人病人系统管理员系统管理员专家系统专家系统医生医生护士护士练习练习练习练习第51页,本讲稿共52页网络在线医务服务系统网络在线医务服务系统系统管理员功能包系统管理员功能包备份数据备份数据病人账户管理病人账户管理系统设置系统设置实时监测实时监测帐号管理帐号管理病人功能包病人功能包查询查询副本副本病人账户管理病人账户管理副本副本网上就诊网上就诊挂号挂号系统诊断系统诊断网上就诊网上就诊医生、护士功能包医生、护士功能包网上就诊网上就诊挂号挂号系统诊断系统诊断副本副本网上就诊网上就诊副本副本网络呼叫网络呼叫查询查询与专家系统的接口与专家系统的接口系统诊断系统诊断副本副本第52页,本讲稿共52页