- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.关联(relating)关联表示两个类的对象之间存在某种语义.ppt
类图由类及类与类之间的关系组成。常有关联、泛化(继承)、依赖和细化等4种关系。
1. 关联(relating)
关联表示两个类的对象之间存在某种语义上的联系。
(1) 普通关联(common relating)
只要在类与类之间存在连接关系就可以用普通关联表示。关联是双向的,可在一个方向上为关联起一个名字,在另一个方向上起另一个名字(也可不起名字)。为避免混淆,在名字前面(或后面)加一个表示关联方向的黑三角。
;
图9.6 普通关联示例;在表示关联的直线两端可以写上重数(multiplicity),它表示该类有多少个对象与对方的一个对象连接。重数的表示方法通常有:
0…1 表示0到1个对象
0…*或* 表示0到多个对象
1+或1…* 表示1到多个对象
1…15 表示1到15个对象
3 表示3个对象
如果图中未明确标出关联的重数,则默认重数是1。;(2) 关联的角色(Role of relating)
参与此关联的对象所扮演的角色(即起的作用),例如,图9.7是一个递归关联(即一个类与它本身有关联关系)的例子。一个人与另一个人结婚,必然一个人扮演丈夫的角色,另一个人扮演妻子的角色。如果没有显式标出角色名,则意味着用类名作为角色名。;
图9.7 关联的角色;(3) 限定关联(restrained relating)
通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。在类图中把限定词放在关联关系末端的一个小方框内。
例如,某操作系统中一个目录下有许多文件,一个文件仅属于一个目录,在一个目录内文件名确定了惟一一个文件。图9.8利用限定词“文件名”表示了目录与文件之间的关系,可见,利用限定词把一对多关系简化成了一对一关系。;
图9.8 一个受限的关联
由于目录加文件名可惟一地确定一个文件,因此,限定词“文件名”应该放在靠近目录的那一端。
;
(4) 关联类(class of relating)
为了说明关联的性质可能需要一些附加信息。可以引入一个关联类来记录这些信息。关联中的每个连接与关联类的一个对象相联系。关联类通过一条虚线与关联连接。;例如,图9.9是一个电梯系统的类模型,队列就是电梯控制器类与电梯类的关联关系上的关联类。从图中可以看出,一个电梯控制器控制着4台电梯,这样,控制器和电梯之间的实际连接就有4个,每个连接都对应一个队列(对象),每个队列(对象)存储着来自控制器和电梯内部按钮的请求服务信息。电梯控制器通过读取队列信息,选择一个合适的电梯为乘客服务。关联类与一般的类一样,也有属性、操作和关联。;
图9.9 关联类示例;2. 聚集(Aggregation)
聚集也称为聚合,是关联的特例。聚集表示类与类之间的关系是整体与部分的关系。在陈述需求时使用的“包含”、“组成”、“分为……部分”等字句,往往意味着存在聚集关系。除了一般聚集之外,还有两种特殊的聚集关系,分别是共享聚集和组合聚集。;
图9.10 共享聚集示例
(1) 共享聚集(Share Aggregation)
如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享聚集。一般聚集和共享聚集的图示符号,都是在表示关联关系的直线末端紧挨着整体类的地方画一个空心菱形。
;
图9.11 组合聚集示例
(2) 组合聚集(compose Aggregation)
如果部分类完全隶属于整体类,则该聚集称为组合聚集(简称为组成)。例如,窗口和它的组成部分之间存在着组合聚集关系。组成关系用实心菱形表示。
;3. 泛化(Generic)
UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系。在UML中,用一端为空心三角形的连线表示泛化关系,三角形的顶角紧挨着通用元素。
注意,泛化针对类型而不针对实例,一个类可以继承另一个类,但一个对象不能继承另一个对象。
泛化关系指出在类与类之间存在“一般-特殊”关系。泛化可进一步划分成普通泛化和受限泛化。;
图9.12 抽象类示例
(1) 普通泛化(Common Generic);
图9.13 复杂类图示例;(2) 受限泛化(Restrained Generic)
可以给泛化关系附加约束条件,以进一步说明该泛化关系的使用方法或扩充方法,这样的泛化关系称为受限泛化。预定义的约束有4种: 多重、不相交、完全和不完全。
多重继承指的是,一个子类可以同时多次继承同一个上层基类。
多重继承相反的是不相交继承,即一个子类不能多次继承同一个基类(这样的基类相当于C++语言中的虚基类)。
如果图中没有指定{多重}约束,则是不相交继承,一般的继承都是不相交继承。;
图9.14 多重继承示例; 完全
文档评论(0)