资源预览内容
第1页 / 共22页
第2页 / 共22页
第3页 / 共22页
第4页 / 共22页
第5页 / 共22页
第6页 / 共22页
第7页 / 共22页
第8页 / 共22页
第9页 / 共22页
第10页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第四章 聚集、组成、接口和实现在这一章中,你将学习下述内容: 聚集。 组成。 语境。 接口。 实现。 可见性。本章中,你将学习有关类图的最后一些内容,包括前面还没介绍的一些关系以及其他问题。最终的目标是要建立系统的静态视图,完成系统类之间的所有连接关系。4.1 聚集一个类有时是由几个部分类组成的。这种特殊类型的关系被称为聚集。部分类和由它们组成的类之间 是一种整体部分关联。例如家用计算机系统(Home computer)是一个聚集体,它是由主机箱、键盘(Keyboard)、鼠标(Mouse)、显示器(Monitor)、CDROM驱动器、一个或多个硬盘驱动器(Hard drive)、调制解调器(Modem)、软盘驱动器(Diskette drive)、打印机(Printer)组成,还可能包括几个音箱(Speaker)。而主机箱内除cpu外还带着一些驱动设备,例如显示卡(Graphics card)、声卡Sound card)和其他组件。按照聚集关系的表示法,聚集关系构成了一个层次结构。“整体”类(例如,家用计算机系统)位于层次结构的最顶部,以下依次是各个“部分”类。整体和部分之间用带空心菱形箭头的连线连接,箭头指向整体。下图示意了家用计算机系统的组成。聚集具有传递性,换句话说,如果类3是类2的部分类并且类2是类1的部分类,那么类3是类1的部分类。在前面的例子中,鼠标按钮和鼠标球是鼠标的一部分,并且也是计算机系统的一部分。有时一个聚集体可能有多种部分体组成,这些部分体之间是“or(或)”关系。例如在某些餐馆中,一顿饭包括汤(Soup)或者沙拉(Salad)、主食(Main course)和甜点(Dessert)。要对这顿饭建模,必须使用一个约束在两个整体部分关系线之间加上一花括号括起来的“or”来表示这个约束,并用虚线连接两个关系线。4.2 组成组成是强类型的聚集。聚集中的每个部分体只能属于一个整体。例如,咖啡桌(CoffeeTable)是一个组成体,它的部分体有桌面(TableTop)和桌腿(Leg)。组成的表示法和聚集的表示法类似,但是菱形箭头是实心。4.3 语境在对系统建立模型时,类通常以类族的形式出现,这些类族中的类之间常常有聚集或组成关系。有时 可能需要集中考察其中的某个类族,UML语境图提供了这种建模特征。组成语境图在UML语境图中占很大比重。语境图就有点像幅大图中某个局部的子图。有时需要将一个大图中某些局部“放大”来获取详细信息。举个例子,假设你要建立一个衬衫(Shirt)的类模型,并要说明衬衫的尺寸和组成。一种类型的语境图就是将衬衫类画成一个大矩形框,里面嵌套了该衬衫的各个组成部分的类图。里面的类图说明了衬衫的各个组成部分之间如何关联。这就是一张组成语境图 (composit context diagram),因为衬衫“拥有”每一个组成部分。组成语境图重点关注衬衫和衬衫的内部构成。如果要展示衬衫加上衣挂,挂在衣架上,放在衣柜中的 情形,那么必须要扩大建模范围。系统语境图(system context diagram)可以用来为此建模。它可以说明衬衫类如何与衣柜(Wardrobe)和衣挂类(Outfit)关联。4.4 接口和实现在你建立了几个类之后,你可能会发现它们并不与某个特定的父类相关,但是它们的行为中可能包括同样的操作和同样的型构。可以对其中的某个类编码,然后在其他的类中重用这些编码。另一种可能的情况是开发了一个系统中类的一组操作并在另一个类中可以重用这些操作。不管是哪种方式,你都需要这些可重用的操作集。接口是能够让你达到此目的的UML组件。接口(interface)是描述类的部分行为的一组操作,它也是一个类提供给另类的一组操作。举个例子来阐明接口这个概念。用来和计算机通信的键盘(keyboard)就是一个可重用的接口。键盘的击键(Keystroke)操作可以被打字机(Typewriter)重复使用。键盘上各个键的位置和打字机上键的位置相同,但是更重要的一点是击键操作从一个系统被移植到另一 个系统中。接口中的其他操作,例如Shift键操作、Caps lock键操作和Tab键操作都是对打字机上对应键功能定义的重用。当然,计算机键盘上提供的许多操作在打字机上是没有的:Control、Alt、PageUp、PageDown以及更多。接口只是某个类全部操作的一个子集,并不一定要包括类的所有操作。接口的模型表示法和类大致相同,都是用一个矩形图标来代表。和类的不同之处在于,接口只是组操作,没有属性。前面曾说到过,类可以来用省略表示法,类可以省略属性只表示出操作或者什么也不表示。如果一个类的表示省略了属性,那么怎么把这个 类和接口区分开呢?一种办法是使用构造型interface,把它放在矩形框中接口的名字之上。另一个办法 是接口的名字以大写字母“I”开头。在某种意义上,仿佛计算机键盘保证了它自己的部分行为能够“实现”打字员的行为。因此,类和接口之间的关系被称为实现。实现关系用一个带空心三角形箭头来表示,箭头的方向指向接口。另一种表示法(省略表示法)是将接口表示为个小圆圈,并和实现它的类用一条线连起来。注意实现的符号和继承的符号有相似之处。两者的唯一差别是实现关系用虚线表示,继承关系用实线 表示。表示法的异同暗示了这两种关系的相似性(和差异)。可以把继承看成是双亲与孩子的关系:双亲遗传了物理属性给孩子(例如,眼睛的颜色、头发的颜色等等),孩子同样也继承双亲的一些行为。而实现关系可以比做学生和教师之间的关系:教师并没有把自己的物理属性传递给学生,但是学生从教师那里学到了一些行为和过程。一个类可以实现多个接口,一个接口也可以被多个类实现。4.4.1 可见性与接口和实现密切相关的是可见性概念。可见性(visibility)可应用于属性或操作,它说明在给定类的属性和操作(或者接口的操作)的情况下,其他类可以访问到的属性和操作的范围。可见性有3种层次(级别)。在公有(public)层次上,其他类可以直接访问这个层次中的属性和操作。在受保护(protected)的层次上,只有继承了这些属性和操作的子类可以访问最初类的属性 和操作。在私有(private)层次上,只有最初的类才能访问这些属性和操作。实现关系意味着接口中的所有操作都是公有的。将这些操作对外界隐蔽起来没有什么意思,因为接口本来就是为了让外界不同的类来实现它而定义的。UML中,属性或操作名前面带个“+”号,则指明该操作或属性是公有的。同样,“#”号和“-”分别代表受保护的和私有的。下图示意了电视机类和汽车类中的公有、受保护的和私有操作。4.4.2 作用域作用域(scope)是与属性和操作相关的又一个重要概念。存在两种可能的作用域。在实例(instance)作用域下,类的每个实例对象都有自己的属性值和操作。 在分类(classfier)作用域下,一个类的所有实例只存在一个属性值和操作。具有分类作用域的属性和操作名字要带下划线。这种类型的作用域通常用在一组特定 的实例(不包括其他的实例)必须共享某个私有属性值的情况下。而实例作用域是最普通的作用域类型。4.5 小结要充分理解类和类之间如何连接,必须理解另外一些关系。聚集是一个整体部分关联:“整体”类是由“部分”类组成的。聚集体中的部分体可以是多个不同整体的一部分。组成是一种强类型的聚集,因 为组成体的部分体只能属于一个整体。聚集的UML表示法与组成的UML表示法类似。从部分到整体的关联线上带有一个菱形箭头。聚集关系的菱形箭头是空心的,而组成关系的菱形箭头是实心的。语境图重点展示系统中一个具体的类。组成语境图类似于一个大图中某个局部的详细放大图。它表示 嵌套在个矩形类图标中的一个类图。系统语境图展示了组成类图如何与系统中其他的类相关联。实现是类和接口之间的一个关联,接口是可供其他类使用的一个操作集。接口用没有属性的类表示。为了区分接口和在图中省略了属性的类,应使用构造 型interface。将这个构造型放在接口名之上或者接口的名字以大写字母“I”开头。在UML中实现关系用一条虚线连接类和接口,虚线靠近接口的一端带有一个空心三角形箭头指向接口。另一种表示实现的方法是用一条直线连接小圆圈,小圆圈表示接口。在可见性术语中,接口中的所有操作都是公有的,以使任何类都可以访问接口中的操作。另外两种层 次的可见性是受保护(属性或操作只能用于该类自身的子类)和私有(属性或操作只能用于类本身)。“+”号表示公有可见性,“#”号表示受保护可见性,“-”号表示私有可见性。作用域是属性和操作的又一个重要特征。在实例作用域下,个类的每个对象都有自己各自的属性值和操作。在分类符作用域,一个类的所有实例对象的某些属性或操作共享同一个值。不属于这组对象的其他对象不能访问分类符作用域值。作业:1. 类图标中可以指明哪些信息?2. 如何发现类之间的继承关系?3. 为你在学校所学过的所有科目和课程建立UML模 型。注意抽象类的使用。在这个模型中要包括依赖 关系(例如某些课程是不是要求有先修课程?)。4. 什么叫实现?实现和继承有何相似之处?两者又有何 不同之处?5. 建立杂志类(magezine)的组成语境图。要考虑到杂 志中的Table of Contents(目录)、Editorial(社论)、 Article(一般文章)、Column(专栏)。建立一个系统语 境图,图中要展示出magezine类与Subscriber(订阅者) 类和NewsstandBuyer(普通购买者)类之间的关系。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号