- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UML之C++类图关系全面剖析
UML的类图关系分为:关联、聚合/组合、依赖、泛化(继承)。而其中关联乂分为双向关联、 单向关联、自身关联;下面就让我们一起來看看这些关系究竟是什么,以及它们的区别在哪里。
1、关联
双向关联:
C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。
在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于 描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用 或指针。对彖引用本身就是有向的,更适合表达我们所讨论的那种关系。所以这种关系在设计的 时候比较少用到,关联一般都是有向的。
使用ROSE生成的代码是这样的:
class Cl
EE. . . {
I public:
I C2* theC2;
class C2
匚田…{
I public:
I Cl* theCl;
I
*■};
双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。
单向关联:
C3-C4:表示相识关系,指C3知道C4, C3可以调用C4的公共属性和方法。没有生命期的依赖。
一般是表示为一种引用。
生成代码如下:
class C3
EE. . . {
I public:
I C4* theC4;
I
F
class C4
EE . . {
I
小
无所知。自身关联(反身关联):自己引用自己,带着一个自己的引用。代码如下:class C14EE... {I public:I C14* theC14;I叽就是在自己的内部有着一个自身的引用。2、聚合/组合
无所知。
自身关联(反身关联):
自己引用自己,带着一个自己的引用。
代码如下:
class C14
EE... {
I public:
I C14* theC14;
I
叽
就是在自己的内部有着一个自身的引用。
2、聚合/组合
当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。
C9
C9
聚合:表示C9聚合CIO,但是CIO可以离开C9而独立存在(独立存在的意思是在某个应用的问 题域中这个类的存在有意义。这句话怎么解,请看下面组合里的解释)。
代码如下:
class C9
匚田…{
I public:
I CIO theClO;
I
L);
class CIO
Pf+i I
组合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7 包容,而HC8不能离开C7而独立存在。但这是视问题域而定的,例 如在关心汽车的领域里, 轮胎是一定耍组合在汽车类中的,因为它离开了汽车就没冇意义了。但是在卖轮胎的店铺业务里, 就算轮胎离开了汽车,它也是有意义的,这就可以用聚合了。在《敏捷开发》中还说到,A组 合B,则A需要知道B的牛存周期,即可能A负责牛成或者释放B,或者A通过某种途径知道B 的生成和释放。
他们的代码如下:
class C7
匚国…{
I public:
I C8 theC8;
I
L};
class C8
EE [
可以看到,代码和聚合是一样的。具体如何区别,可能就只能用语义来区分了。
3、依赖
依赖:
指C5可能要用到C6的一些方法,也可以这样说,要完成C5里的所有功能,一定要有C6的方法 协助才行。C5依赖于C6的定义,一般是在C5类的头文件中包含了 C6的头文件。ROSE对依赖关 系不产生属性。
注意,要避免双向依赖。一般来说,不应该存在双向依赖。
ROSE生成的代码如下:
// C5. h
iiinclude 〃C6. h〃
class C5
EE... {
I F
// C6. h
Sinclude 〃C5.h
class C6
FRl (
虽然ROSE不生成属性,但在形式上一般是A中的某个方法把B的对象作为参数使用(假设A依赖 于B)。如下:
Sincludc B. h〃
class A
void Func(B b);
那依赖和聚合\组合、关联等有什么不同呢?
关联是类之间的一种关系,例如老师教学生,老公和老婆,水壶装水等就是一种关系。这种关系 是非常明显的,在问题领域中通过分析直接就能得出。
依 赖是一种弱关联,只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候(可 以说是“uses” 了那个类),就可以把这种关系看成是依赖,依赖也可说是一种偶然的关系, 而不是必然的关系,就是“我在某个方法中偶然用到了它,但在现实中我和它并没多大关系”。 例如我和锤子,我和锤子本来是没关系的,但在有一次要钉钉子的时候,我用到了它,这就是 一种依赖,依赖锤子完成钉钉子这件事情。
组合是一种整体-部分的关系,在问题域中这种关系很明显,直接分析就可以得出的。例如轮胎 是车的一部分,树叶是树的一部分,手脚是身体的一部分这种的关系,非常明显的整
您可能关注的文档
- UML新编实验指导书(实验三类图).docx
- Unit1单元综合检测试卷.docx
- Unit2巩固提升测试题.docx
- Unit3GoingHome单元检测三同步练习.docx
- unit3笔记及重点词汇.docx
- Unit3单词讲解吉林通化丁云鹏.docx
- Unit3单元测试卷(人教PEP六下).docx
- Unit4UnforgettableFilms单元检测同步练习.docx
- Unit4一体化教学设计.docx
- Unit5AppreciatingClassics单元检测(五)同步练习.docx
- 鹤壁山城鹤鑫化工有限责任公司“9·29”较大中毒事故调查报告.pdf
- 露天矿山边坡稳定性分析评估工作指南.doc
- 汽车先进动力系统技术发展报告(2025版).pdf
- 中国人寿财产保险股份有限公司福建省(不含厦门)商业性奶牛养殖淘汰保险条款.doc
- 1.3 美国内战 课件 2025--2026学年统编版九年级历史下册.pptx
- 4.14 法西斯国家的侵略扩张 课件 2025-2026学年统编版九年级历史下册.pptx
- 6.21 冷战后的世界格局 课件 2025---2026学年统编版九年级历史下册.pptx
- 第14课《古诗二首 绝句》-课件-2025-2026学年二年级语文下册统编版.pptx
- 19.《蜘蛛开店》--(课件)-2025-2026学年二年级语文下册统编版.pptx
- 18.《大象的耳朵》第2课时(课件)-2025-2026学年二年级语文下册统编版.pptx
最近下载
- 中国人民财产保险股份有限公司城乡居民安全保障保险条款(社会综合治理专用).pdf VIP
- 成都市大邑县雾中山国际乡村旅游度假区旅游基础配套设施策划.doc
- 大连理工大学2025年专职组织员招聘备考题库及1套完整答案详解.docx VIP
- 丽水市遂昌县事业单位招聘考试题目及答案2025.docx VIP
- 2019-2020学年北京市西城区四年级(上)期末数学试卷.pdf VIP
- 激光设备角度调试作业指南.docx VIP
- D702-1-2-3常用低压配电设备及灯具安装(2004).docx VIP
- 大连理工大学2025年专职组织员招聘备考题库参考答案详解.docx VIP
- 文件gew紫外线干燥系统电子砖触摸屏软件用户手册工程.pdf VIP
- 新商务星球版八年级上册地理全册精编知识点合集.pdf
原创力文档


文档评论(0)