版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章第四章 聚集、组成、接口和实现聚集、组成、接口和实现 聚集(聚合)聚集(聚合) 组成(复合)组成(复合) 语境语境 接口接口 实现实现 可见性可见性 学习类图的最后一些内容,包括前面还没学习的一些学习类图的最后一些内容,包括前面还没学习的一些关系以及其他问题。关系以及其他问题。最终的目标是要建立系统的静态视图,最终的目标是要建立系统的静态视图,完成系统类之间的所有连接关系。完成系统类之间的所有连接关系。4.1 聚集(聚集(Aggregate) 一个类有时是由几个部分类组成的。这种特殊类型的关一个类有时是由几个部分类组成的。这种特殊类型的关系被称为聚集系被称为聚集。部分类和由它们组成的类之
2、间是一种整体与。部分类和由它们组成的类之间是一种整体与部分的关联。部分的关联。 例如家用计算机例如家用计算机(Home computer)是一个聚集体,它是由是一个聚集体,它是由主机箱、键盘主机箱、键盘(Keyboard)、鼠标鼠标(Mouse)、显示器显示器(Monitor)、CDROM驱动器、一个或多个硬盘驱动器驱动器、一个或多个硬盘驱动器(Hard drive)、调制解调器调制解调器(Modem)、软盘驱动器软盘驱动器(Diskette drive)、打印打印机机(Printer)组成,还可能包括几个音箱组成,还可能包括几个音箱(Speaker)。而主机而主机箱内除箱内除CPU外还带着一
3、些驱动设备,例如显示卡外还带着一些驱动设备,例如显示卡(Graphics card)、声卡声卡Sound card)和其他组件。和其他组件。 按照聚集关系的表示法,聚集关系构成了一个层次结按照聚集关系的表示法,聚集关系构成了一个层次结构构。“整体整体”类类(例如,家用计算机系统例如,家用计算机系统)位于层次结构的位于层次结构的最顶部最顶部,以下依次是各个,以下依次是各个“部分部分”类。类。整体和部分之间用整体和部分之间用带空心菱形箭头的连线连接,箭头指向整体带空心菱形箭头的连线连接,箭头指向整体。下图示意了。下图示意了家用计算机系统的组成。家用计算机系统的组成。KeyboardMonitorH
4、omeComputer11HardDriverDisketteDriverRAMCD-ROMGraphicsCardCPUBox11 111.*111ButtonMouseBallMouse111.3111111.311111*1.*1Speaker2 2Soundcard1 1is connected to 聚集具有传递性,换句话说,如果类聚集具有传递性,换句话说,如果类3是类是类2的部分的部分类类,并且类并且类2是类是类1的部分类,那么类的部分类,那么类3是类是类1的部分类。的部分类。在在上面的例子中,鼠标按钮和鼠标球是鼠标的一部分,并上面的例子中,鼠标按钮和鼠标球是鼠标的一部分,并且也是
5、计算机系统的一部分。且也是计算机系统的一部分。 有时一个聚集体可能有多种部分体组成,这些部分体有时一个聚集体可能有多种部分体组成,这些部分体之间是之间是“or(或或)”关系。关系。例如在某些餐馆中,一顿饭包括例如在某些餐馆中,一顿饭包括汤汤(Soup)或者沙拉或者沙拉(Salad)、主食主食(Main course)和甜点和甜点(Dessert)。要对这顿饭建模,必须使用一个约束要对这顿饭建模,必须使用一个约束在在两个整体两个整体部分关系线之间加上一花括号括起来的部分关系线之间加上一花括号括起来的“or”来表示这个约束,并用虚线连接两个关系线。来表示这个约束,并用虚线连接两个关系线。 4.2
6、组成组成(复合复合Composition) 组成是强类型的聚集。聚集中的每个部分体只能属于一组成是强类型的聚集。聚集中的每个部分体只能属于一个整体个整体。例如,咖啡桌。例如,咖啡桌(CoffeeTable)是一个组成体,它的部是一个组成体,它的部分体有桌面分体有桌面(TableTop)和桌腿和桌腿(Leg)。组成的表示法和聚集的组成的表示法和聚集的表示法类似,但是菱形箭头是实心。表示法类似,但是菱形箭头是实心。TableTopLegCoffeeTable1141144.3 语境语境(组成结构图组成结构图) 在对系统建立模型时,类通常以类族的形式出现,这些在对系统建立模型时,类通常以类族的形式出
7、现,这些类族中的类族中的类之间常常有聚集或组成关系类之间常常有聚集或组成关系。有时可能需要集中。有时可能需要集中考察其中的某个类族,考察其中的某个类族,UML语境图提供了这种建模特征。语语境图提供了这种建模特征。语境图有点像一幅大图中某个局部的子图。境图有点像一幅大图中某个局部的子图。有时需要将一个大有时需要将一个大图中某些局部图中某些局部“放大放大”来获取详细信息。来获取详细信息。 举个例子,假设你要建立一个衬衫举个例子,假设你要建立一个衬衫(Shirt)的类模型,并的类模型,并要说明衬衫的尺寸和组成。要说明衬衫的尺寸和组成。一种类型的语境图就是将衬衫类一种类型的语境图就是将衬衫类画成一个大
8、矩形框,里面嵌套了该衬衫的各个组成部分的类画成一个大矩形框,里面嵌套了该衬衫的各个组成部分的类图。图。下图说明了衬衫的各个组成部分之间如何关联下图说明了衬衫的各个组成部分之间如何关联。ShirtButtonHoleButton11ButtonSystem111Sleeve11Collar10,2,3Body15,612112is sewn on11is sewn on11is sewn on11is sewn on5,61is sewn on0,2,31111buttons into1 组成语境图组成语境图重点关注衬衫和衬衫的内部构成重点关注衬衫和衬衫的内部构成。如果要展示衬衫加上衣挂,挂在衣
9、架上如果要展示衬衫加上衣挂,挂在衣架上,放在衣柜放在衣柜中的情形,那么必须要扩大建模范围。系统语境图中的情形,那么必须要扩大建模范围。系统语境图(system context diagram)可以用来为此建模。它可以可以用来为此建模。它可以说明衬衫类如何与衣柜说明衬衫类如何与衣柜(Wardrobe)和衣挂类和衣挂类(Outfit)关联。关联。4.4 接口和实现接口和实现 我们建立了几个类之后,可能会发现这些类我们建立了几个类之后,可能会发现这些类并不与某个并不与某个特定的父类相关,但是它们的行为中可能包括同样的操作和特定的父类相关,但是它们的行为中可能包括同样的操作和同样的型构,同样的型构,可
10、以对其中的某个类编码,然后在其他的类中可以对其中的某个类编码,然后在其他的类中重用这些编码重用这些编码。另一种可能的情况是。另一种可能的情况是开发了一个系统中类的开发了一个系统中类的一组操作并在另一个类中可以重用这些操作一组操作并在另一个类中可以重用这些操作。 不管是哪种方式,都需要这些不管是哪种方式,都需要这些可重用可重用的操作集。的操作集。接口可接口可以达到此目的。以达到此目的。 接口接口(interface)是描述是描述类的部分行为的一组操作类的部分行为的一组操作,也是一,也是一个类个类提供给另一个类的一组操作提供给另一个类的一组操作。 例如,用来和计算机通信的键盘例如,用来和计算机通信
11、的键盘(keyboard)就是一个就是一个可重用的接口。键盘的击键可重用的接口。键盘的击键(Keystroke)操作可以被打字机操作可以被打字机(Typewriter)重复使用。键盘上各个键的位置和打字机上键重复使用。键盘上各个键的位置和打字机上键的位置相同,但是更重要的一点是击键操作从一个系统被的位置相同,但是更重要的一点是击键操作从一个系统被移植到另一个系统中。接口中的其他操作,例如移植到另一个系统中。接口中的其他操作,例如Shift键操键操作、作、Caps lock键操作和键操作和Tab键操作都是对打字机上对应键键操作都是对打字机上对应键功能定义的重用。功能定义的重用。 当然,计算机键盘
12、上提供的许多操作在打字机上是没当然,计算机键盘上提供的许多操作在打字机上是没有的:有的:Control、Alt、PageUp、PageDown以及更多。接口以及更多。接口只是某个类全部操作的一个子集,并不一定要包括类的所只是某个类全部操作的一个子集,并不一定要包括类的所有操作。有操作。 接口的模型表示法和类大致相同,都是用一个矩形图标接口的模型表示法和类大致相同,都是用一个矩形图标来代表,来代表,和类的不同之处在于,接口只是一组操作,没有属和类的不同之处在于,接口只是一组操作,没有属性性。前面学过,前面学过,类可以来用省略表示法(类可以省略属性只类可以来用省略表示法(类可以省略属性只表示出操作
13、或者什么也不表示)。如果一个类的表示省略了表示出操作或者什么也不表示)。如果一个类的表示省略了属性,那么怎么把这个类和接口区分开呢属性,那么怎么把这个类和接口区分开呢?一种办法是使用构造型一种办法是使用构造型interface,把它放在矩形框中接把它放在矩形框中接口的名字之上。另一个办法是接口的名字以大写字母口的名字之上。另一个办法是接口的名字以大写字母“I”开头。开头。 在某种意义上,仿佛计算机键盘保证了它自己的部分行在某种意义上,仿佛计算机键盘保证了它自己的部分行为能够为能够“实现实现”打字员的行为。因此,打字员的行为。因此,类和接口之间的关系类和接口之间的关系被称为实现被称为实现。实现关
14、系用一个带空心三角形箭头来表示,箭实现关系用一个带空心三角形箭头来表示,箭头的方向指向接口头的方向指向接口。KeyBoardbrandNamenumberOfKeysCtrl()Alt()PgUp()PgDown()TypeWriterKeyStroke()WashingMachineControlKnob 另一种表示法另一种表示法(省略表示法省略表示法)是将接口表示为一个小圆圈,是将接口表示为一个小圆圈,并和实现它的类用一条线连起来。并和实现它的类用一条线连起来。 注意实现的符号和继承的符号有相似之处。注意实现的符号和继承的符号有相似之处。两者的唯一两者的唯一差别是实现关系用虚线表示,继承关
15、系用实线表示。差别是实现关系用虚线表示,继承关系用实线表示。 表示法的异同暗示了这两种关系的相似性表示法的异同暗示了这两种关系的相似性(和差异和差异)。可。可以把继承看成是双亲与孩子的关系:双亲遗传了物理属性给以把继承看成是双亲与孩子的关系:双亲遗传了物理属性给孩子孩子(例如,眼睛的颜色、头发的颜色等等例如,眼睛的颜色、头发的颜色等等),孩子同样也继,孩子同样也继承双亲的一些行为。承双亲的一些行为。 而实现关系可以比做学生和教师之间的关系:教师并没而实现关系可以比做学生和教师之间的关系:教师并没有把自己的物理属性传递给学生,但是学生从教师那里学到有把自己的物理属性传递给学生,但是学生从教师那里
16、学到了一些行为和过程。了一些行为和过程。 一个类可以实现多个接口,一个接口也可以被多个类实一个类可以实现多个接口,一个接口也可以被多个类实现。现。4.4.1 可见性可见性 与接口和实现密切相关的是可见性概念。可见性与接口和实现密切相关的是可见性概念。可见性(visibility)可应用于属性或操作,可应用于属性或操作,它说明在给定类的它说明在给定类的属性和操作属性和操作(或者接口的操作或者接口的操作)的情况下,其他类可以的情况下,其他类可以访问到的属性和操作的范围。访问到的属性和操作的范围。可见性有可见性有3种层次种层次(级别级别):v在公有在公有(public)层次上层次上,其他类可以直接访
17、问这个层次中,其他类可以直接访问这个层次中的属性和操作。的属性和操作。v在受保护在受保护(protected)的层次上的层次上,只有继承了这些属性和,只有继承了这些属性和操作的子类可以访问最初类的属性和操作。操作的子类可以访问最初类的属性和操作。v在私有在私有(private)层次上层次上,只有最初的类才能访问这些属,只有最初的类才能访问这些属性和操作。性和操作。实现关系意味着接口中的所有操作都是公有的实现关系意味着接口中的所有操作都是公有的。将。将这些操作对外界隐蔽起来没有什么意思,因为接口本来这些操作对外界隐蔽起来没有什么意思,因为接口本来就是为了让外界不同的类来实现它而定义的。就是为了让
18、外界不同的类来实现它而定义的。 UML中,属性或操作名前面带个中,属性或操作名前面带个“+”号,则指号,则指明该操作或属性是公有的。同样,明该操作或属性是公有的。同样,“#”号和号和“-”分分别代表受保护的和私有的。下图是电视机类和汽车类别代表受保护的和私有的。下图是电视机类和汽车类中的公有、受保护的和私有操作。中的公有、受保护的和私有操作。钥匙 Protected闭合的锁 Private 4.4.2 作用域作用域 作用域作用域(scope)是与属性和操作相关的又一个重要概念。是与属性和操作相关的又一个重要概念。存在两种作用域:存在两种作用域:v 在实例在实例(instance)作用域下作用域
19、下,类的每个实例对象都有自,类的每个实例对象都有自己的属性值和操作。己的属性值和操作。v在分类在分类(classfier)作用域下作用域下,一个类的所有实例只存在一,一个类的所有实例只存在一个属性值和操作。个属性值和操作。 具有分类作用域的属性和操作名字要带下划线具有分类作用域的属性和操作名字要带下划线,通常,通常用在一组特定的实例用在一组特定的实例(不包括其他的实例不包括其他的实例)必须共享某个私必须共享某个私有属性值的情况下有属性值的情况下。而实例作用域是最普通的作用域类型。而实例作用域是最普通的作用域类型。4.5 小结小结 要理解类和类之间如何连接,以及另外一些关系。要理解类和类之间如何
20、连接,以及另外一些关系。聚集是一个整体聚集是一个整体部分关系:部分关系:“整体整体”类是由类是由“部分部分”类组成的。聚集体中的部分体可以是多个不同整体的一部类组成的。聚集体中的部分体可以是多个不同整体的一部分分。组成是一种强类型的聚集,因为组成体的部分体只能组成是一种强类型的聚集,因为组成体的部分体只能属于一个整体属于一个整体。聚集的。聚集的UML表示法与组成的表示法与组成的UML表示法表示法类似。从部分到整体的关联线上带有一个菱形箭头。类似。从部分到整体的关联线上带有一个菱形箭头。聚集关系的菱形箭头是空心的,而组成关系的菱形箭聚集关系的菱形箭头是空心的,而组成关系的菱形箭头是实心的头是实心的。 语境图重点展示系统中一个具体的类。组成语境图类似于一语境图重点展示系统中一个具体的类。组成语境图类似于一个大图中某个局部的详细放大图。它表示嵌套在个大图中某个局部的详细放大图。它表示嵌套在个矩形类图标个矩形类图标中的一个类图。系统语境图展示了组成类图如何与系统中其他的中的一个类图。系统语境图展示了组成类图如何与系统中其他的类相关联。类相关联。 实现是类和接口之间的一个关联,接口是可供其他类使用的实现是类和接口之间的一个关联,接口是可供其他类使用的一个操作集。一个操作集。接口用没有属性的类表示接口用没有属性的类表示。为了区分接口和在图中为了区分接口和在图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学期班级工作计划模板汇编
- 县人口和计划生育局行政效能建设工作总结
- 中学春季传染病防控教育培训工作计划范文
- 家庭亲子读书计划范本 书香家庭亲子读书计划
- 工作计划书模板范文
- 口腔医学院工会2019年工作计划
- 2021下半年工作计划例文
- 经发办工作总结及工作计划范文
- 农村禁毒工作计划样本
- 幼儿园家长工作计划
- 巴兰兹亚之石代码
- 人体工程学与景观设计课件
- 食材供应服务理念及优势
- 小学生安全教育完整课件
- 国家开放大学电大《课程与教学论》形考任务4试题及答案
- 航空航天概论试卷-带答案
- 绿化养护技术投标书
- 污水处理厂自动化控制基础知识课件
- 新苏教版三上科学10.《固体的混合与分离》教案
- 交换机测试报告
- 热管及热管换热器课件
评论
0/150
提交评论