第05章UML聚集、组成、接口和实现

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第5章聚集、组成、接口和实现第5章聚集、组成、接口和实现第5章聚集、组成、接口和实现2在本章中,你将学习如下内容:如何对接口以及与其相关联的类建模。如何对包含其他类的类建模。可见性的概念。最终的目标是要建立系统的静态视图,完成系统类之间的所有连接关系。5.1聚集第5章聚集、组成、接口和实现3一个类有时是由几个部分类组成的。这种特殊类型的关系被称为聚集(aggregation)。部分类和由它们组成的类之间是一种整体——部分(part-whole)关联。例如:家用计算机系统(homecomputer)是一个聚集体,它是由主机箱、键盘(keyboard)、鼠标(mouse)、显示器(monitor)、CD一ROM驱动器、一个或多个硬盘驱动器(harddrive)、调制解调器(modem)、软盘驱动器(diskdrive),打印机(printer)组成,还可能包括几个音箱(speaker)。而主机箱内除CPU外还带着一些驱动设备,例如显示卡(graphicscard)、声卡(soundcard)和其他组件。第5章聚集、组成、接口和实现4按照聚集关系的表示法,聚集关系构成了一个层次结构。“整体”类(例如,家用计算机系统)位于层次结构的最顶部,以下依次是各个“部分”类。整体和部分之间用带空心菱形箭头的连线连接,箭头指向整体。下图示意了家用计算机系统的组成。第5章聚集、组成、接口和实现5尽管这个例子中的每个部分体都属于一个整体,但聚集关系并不是只有这种情况。例如,在一个家庭影院系统中,电视机和录像机可以共用同一个遥控器,那么这个遥控器既是电视机的组成部分,也是录像机的组成部分。第5章聚集、组成、接口和实现6聚集上的约束有时一个聚集体可能由多种部分体组成,这些部分体之间是“Or(或)”关系。例如在某些餐馆中一顿饭包括汤(soup)或者沙拉(salad),主食(maincourse)和甜点(dessert)。要对这顿饭建模,必须使用一个约束。我们在两个整体——部分关系线之间加上一花括号括起来的“or”来表示这个约束,并用虚线连接两个关系线,如下图所示。5.2组成第5章聚集、组成、接口和实现7组成是强类型的聚集。聚集中的每个部分体只能属于一个整体。例如,咖啡桌(coffeetable)是一个组成体,它的部分体有桌面(tabletop)和桌腿(leg)。除了菱形箭头是实心之外,组成和聚集的表示法相同,如下图所示。5.3组成结构图第5章聚集、组成、接口和实现8组成是展示一个类的构件的一种方式。如果希望能够展示类的内部结构,就需要进一步借助UML2.0的组成结构图(compositestructurediagram)。例如,假设要对一件衬衫建模。右图显示了使用一个大的矩形来表示衬衫类,而它的各个组成部分都嵌入在矩形之中。嵌套在其中的图展示了衬衫的各个组成部分之间的关系。组成结构图重点关注衬衫及其内部组成部分。5.4接口和实现第5章聚集、组成、接口和实现9接口(interface)是描述类的部分行为的一组操作,它也是一个类提供给另一个类的一组操作。汽车和电视机都通过一个接口接收消息,也就是执行一个操作的请求。如洗衣机的操作,从某种意义讲,洗衣机的控制柄的操作是抽象的。关闭或切断电源也好,顺时针或逆时针旋转也好,如果不和某种事物联系起来,它们并不能完成任何有价值的事情。第5章聚集、组成、接口和实现10一个类和它的接口之间的关系叫做实现(realization)。在洗衣机的例子中,我们说洗衣机保证了它的部分行为能够“实现”控制柄的行为。在整个这个例子中,也许会注意到对一个接口的操作频繁引用,但却无关乎它的属性。这是因为就所关心的范围而言,还没有涉及到它的属性。当然,控制柄有半径和厚度,并且可能会有make和model这样的属性。关键是我们不关心这些。当它以接口的方式存在,我们所关心的只是它的操作。第5章聚集、组成、接口和实现11接口的模型表示法接口的模型表示法和类大致相同——用一个矩形图标来代表。和类的不同之处在于,接口只是一组操作,没有属性。注意:类可以采用省略表示法。类可以省略属性只表示出操作或者什么也不表示。如果一个类的表示省略了属性,那么怎么把这个类和接口区分开呢?o一种办法是使用构造型Interface,把它放在矩形框中接口的名字之上。o另一个办法是接口的名字以大写字母“I”开头。第5章聚集、组成、接口和实现12表示类和接口之间的实现关系的符号和继承关系的符号有些相似,只不过它是一个带空心三角形的箭头,箭头的方向指向接口。下图示意了WashingMachine和ControlKnob之间的实现关系。第5章聚集、组成、接口和实现13另一种表示法(省略表示法)是将接口表示为一个小圆圈,并和实现它的类用一条线连起来,如下图所示。这种图有时候被形象地称作棒糖图(lollipopdiagram)。第5章聚集、组成、接口和实现14继承和实现由于实现的符号和继承的符号有相似之处,则二者的区别是:继承:父类将物理属性和行为传递给子类。双亲对子女实现:父类只将行为或过程传递给子类。教师对学生。一个类可以实现多个接口,一个接口也可以被多个类实现。接口无处不在我们周围到处是接口。实际上,我们习惯于把接口和它所关联的物体视为一个整体,因此对它熟视无睹。第5章聚集、组成、接口和实现15由于Person要依靠接口实现洗衣机的操作,我们把通过接口的交互建模为一种依赖。依赖的符号就是一条带箭头的虚线。下图示意了这种关系。上图使用依赖符号,对通过接口和类的交互来建模。在UML1.x中,表示依赖关系的箭头,可以和完整的或是省略的接口符号一起工作。在UML2.0引入了“球窝”符号来作为省略版本,如下图所示。5.5接口和端口第5章聚集、组成、接口和实现16UML2.0允许接口和类之间的关联建模,从而使接口的概念得到更深刻的体现。例如:把鼠标看作是计算机的接口。你可以用它来做几件事情,指示和点击。这些操作本身毫无意义,只有计算机能够“实现”它们,它们才有价值。也就是说,可以能够用这些操作来定位光标和选取对象。鼠标是如何连接到计算机的?沿着鼠标后面的线缆,在计算机的后面,会看到一个端口(port),也就是鼠标插入的地方。计算机正是通过这些端口和外界的环境交互。第5章聚集、组成、接口和实现17UML2.0提供了一个符号用来对这些交互点建模。如下图所示,端口符号是位于类符号边缘上的一个小方格,这个小方格连接到接口。5.5.1可见性第5章聚集、组成、接口和实现18可见性(visibility)可应用于属性或操作,它说明在给定类的属性和操作(或者接口的操作)的情况下其他类可以访问到的属性和操作的范围。可见性有3种层次(级别):在公有(public)层次上,其他类可以直接访问这个层次中的属性和操作。在受保护(protected)的层次上,只有继承了这些属性和操作的子类可以访问最初类的属性和操作。在私有(private)层次上,只有最初的类才能访问这终属性和操作。例如:在电视机(television)类中,changeVolume()(改变音量)和changeChannel()(改变频道)是公有操作,paintImageOnScreen()(显示画面)是私有的。在汽车(automobile)类中,accelerate()(加速)和brake()(刹车)是公有操作,而updateMileageCount()(修改里程表计数值)是一个受保护操作。第5章聚集、组成、接口和实现19应该注意,实现关系意味着接口中的所有操作都是公有的。将这些操作对外界隐蔽起来没有什么意义,因为接口本来就是为了让外界不同的类来实现它而定义的。属性或操作名前面带个“+”号,则指明该操作或属性是公有的。同样,“#”号和“-”分别代表受保护的和私有的。下图示意了前面提到的电视机类和汽车类中的公有、受保护的和私有操作。5.5.2作用域第5章聚集、组成、接口和实现20存在两种可能的作用域。在实例(instance)作用域下,类的每个实例对象都有自己的属性值和操作。在分类符(classifier)作用域下,一个类的所有实例只存在一个属性值和操作。具有分类作用域的属性和操作名字要带下划线。分类作用域通常用在一组特定的实例(不包括其他的实例)必须共享某个私有属性值的情况下,而实例作用域是最普通的作用域类型。

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功