- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
类图中的关联类
UML 类图中的关联类
UML 类图中的关联类
李 云
Blog:
摘要
本文基于UML 规范,介绍了类图中的关联类。此外,通过举例来帮助读者加深理解。
关键词
UML 类图 关联类
缩略语
UIS UML Infrastructure Specification UML 基础结构规范
UML Unifed Modeling Language 统一建模语言
USS UML Superstructure Specification UML 上层结构规范
参考资料
《UML Infrastructure Specification, v2.2》
《UML Superstructure Specification, v2.2》
《UML 类图中的关联、聚合和组合》
《UML 类图中的泛化》
《UML 类图中的类》
1 关联类
关联类 (association class,参见USS 的7.3.4 节)是一个拥有关联和类特性的模型元素。一
个关联类可以看作是一个拥有类特性的关联,或者可以看作是一个拥有关联特性的类。它不仅仅是用于
连接一些分类器,而是还定义了属于关联关系本身的特征,这些特征是只属于关联关系本身而不属于任
何关联分类器的。
为了更好的说明关联类先看一看图 1 的这个例子,其中的Job 类就是关联类。从图中我们可以看出,
类 Person 和类 Company 是存在关系的,但为什么存在关系?是因为工作的缘故。要建模 Person 和
Company 之间的这种工作关系,很重要的一个内容是工作岗位和这一岗位的工资。如果没有关联类,那
么将工资这一属性放在Person 类或是Company 类都不合适。那很自然,这一属性应当放在关联关系上,
这就是关联类的由来。从图中可以看出 Job 类是即是一个关联关系也是一个类,是为了描述类 Person
与类Company 之间的关联关系的。
图 1 关联类的一个例子
图 2 是UML 规范中对于关联类的语法定义,根据我们在《UML 类图中的泛化》中所描述的“是
一个(种)”准则,我们可以说关联类是一个类也是一个关联。对于类和关联的进一步理解你可能需
█ 1
UML 类图中的关联类
要分别参照《UML 类图中的类》和《UML 类图中的关联、聚合和组合》两篇文章。
Class Association
AssociationClass
图 2 UML 规范中关联类的语法
接下来,我们看一看关联类所生成的代码是什么样子的,以便我们加深理解。图 3 列出了我们前面
的例子所对应的C++代码。为了看出关联类与关联所生成的代码的不同之处,你需要看一看在《UML 类
图中的关联、聚合和组合》一文中所给出的例子及其生成的代码。与关联所不同的是,类 Person 与类
Company 在其代码中并没有各自生成company 和person 属性,而这些属性是被放到了类Job 中去。而
类Person 和类Company 都有一个类型是Job 的属性job 。此外,在类Job 中还自动生成了getCompanies
()、setCompanies ()、getPersons ()和setPersons ()等函数。
Person.h
00021: class Person:
00022: {
00025: AssociationClass::Job** job;
00026: };
Company.h
00011: namespace Associati
文档评论(0)