UML类图中的关联

UML类图中的关联

ID:37940705

大小:278.83 KB

页数:9页

时间:2019-06-03

UML类图中的关联_第1页
UML类图中的关联_第2页
UML类图中的关联_第3页
UML类图中的关联_第4页
UML类图中的关联_第5页
资源描述:

《UML类图中的关联》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、UML类图中的关联、聚合和组合UML类图中的关联、聚合和组合李云Email:yunli.sharing@gmail.comBlog:yunli.blog.51cto.com摘要本文介绍了UML关联的三种形式,此外,通过给出例子和相应的程序源代码帮助读者加深理解。关键词UML关联聚合组合缩略语UMLUnifedModelingLanguage统一建模语言参考资料《OMGUMLSuperstructureversion2.2》1类图中的关联关联(association,请参见Superstructure的7.3.3节)表示两个或多

2、个类实例之间所存在的一种语义关系(sematicrelationship)。一个关联至少有两个用属性(property,请参见Superstructure的7.3.44节)表达的终端(end)。一个关联关系表明了多个所关联类实例(instance)之间的连接(link),也就是说关联是连接的集合。一个连接是一个包含两个关联终端的值的元组,每一个关联终端的值表示一个末端类型的实例。图1中,连接类Car和类Window的直线就表示一个关联关系,这个关联关系只有一个连接,因为只有两个类。连接的两个末端分别是car_和windows_

3、,car_是终端类Car的实例(名),而windows_是终端类型Window的实例(名)。在1.3节讨论关联的元数时,我们会进一步讨论连接与关联的关系。一个关联可以包含多个终端(或说多个类),且关联终端可以是相同的类型(或相同的类)。Carcar_Windowwindows_图1关联在我们的语言中的表现形式是什么样子的呢?下面先看看用VisualParadigmforUML生成图1中的C++代码是怎么样的,在VisualParadigmforUML中选择相应的C++代码生成菜单,如图2所示。█1UML类图中的关联、聚合和组合

4、图2此时,将出现如图3所示的对话框,选择所需生成代码的元素和被生成代码的存放路径后,点击“Generate”按钮。之后,在相应的目录中将生成四个文件,分别是Car.h、Car.cpp、Window.h和Window.cpp。2█UML类图中的关联、聚合和组合图3为了看一看所生成的代码中关联是如何表达的,我们需要查看一下Car.h和Window.h。其代码如图4所示。从图4中可以看出关联关系在类中表现为一个成员变量或说是属性。Car.h00001:#include00002:#include000

5、03:#include00004:usingnamespacestd;00005:00006:#ifndef__Car_h__00007:#define__Car_h__00008:00009://#include"Window.h"00010:00011:classWindow;00012:classCar;00013:00014:classCar00015:{00016:private:Window*windows_;00017:};00018:00019:#endifWindow.h00001:#i

6、nclude00002:#include00003:#include00004:usingnamespacestd;00005:00006:#ifndef__Window_h__00007:#define__Window_h__00008:00009://#include"Car.h"00010:00011:classCar;00012:classWindow;00013:00014:classWindow00015:{00016:private:Car*car_;0001

7、7:};0001800019:#endif图4█3UML类图中的关联、聚合和组合1.1关联的可导航性可导航性(navigability)表示一个关联中连接的一端在运行时是否能被另一端有效的存取。或者通俗的说可导航性的意思就是一个类能否通过所关联的类实例来调用类的方法。对于图1,如果没有指明可导航性,则默认是双向都可导航的,这也是为什么生成的代码会互相拥有一个对方类型的指针变量的原因。对于图4,从导航性角度来说,由于类Car和类Window之间的关系是相互可导航的,所以类Car可以通过windows_变量调用类Window的方法

8、(或说是函数)。反之,类Window也可以通过car_变量来调用类Car的方法。回到图1中的类图,我们看一看是不是有些东西可以更加的精确。比如,车(用类Car表示)可能需要调用窗户(用类Window表示)的成员函数以实现窗户的开关,但窗户却不需要调用车的任何函数去实现特定的功

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。