关于UML中类图关系的总结

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-10 23:07:45

关于UML中类图关系的总结

UML中的类图是一大难点,很多人对其中的六种关系的使用都分不清,看了网上的一些资料,感觉实用性都不是很大(我想我们在正常画图的时候应该遇不到鸭子和嘴这种情况),因此,笔者总结了一套自己的类图关系说明,希望可以跟大家分享一下,如果有说的不对的地方,请大家多多包涵。
基本概念
类图当中有六种关系,分别是依赖,关联,泛化,实现,聚合,组合。其中泛化和实现都非常好理解。泛化就是两个类之间有继承的情况,继承就是接口与实现之间的关系。这两种关系都非常好理解。接下来我们主要说说另外四种关系。
依赖
首先说依赖,它是这六种关系中依赖度最小的关系,我认为这种关系就是类与参数之间的关系,比如说我在第一个类中定义了一个int a的参数,而在第二个类中有一个函数save(a),也就是说第一个类的变量变成了第二个类的参数,同样的还有返回值之间的关系建立也是属于这种关系的,我认为这种关系就是所谓的依赖关系。也就是说,依赖关系就是不需要创建对象,直接可以使用的关系。
关联
首先要说明一下,组合和聚合都属于关联,换句话说关联包括三种类型,一般关联,聚合,组合。其关联度的强弱为:组合>聚合>一般关联。我认为关联与依赖的区别就是:关联的话就是说在一个类中定义了另一个类的对象,而依赖不定义对象的。
组合
首先从我认为最好理解的组合开始说起吧。我认为组合必须包含两个条件。1、必须是类与类之间的包含关系。2、必须存在声明周期,换句话说两个人必须是同生同死。基于以上原则,我认为符合这种情况的也必须满足两个要求。1、被包含类的建立和删除必须建立在包含类的构造和析构中。2、被包含类必须只在包含类中出现。不能被程序中其他类包含。
聚合
ok,当我们明白了组合,我们就比较好明白聚合的关系了。聚合关系与组合关系的区别在于把上述第二个条件拿掉。就是有类与类之间的包含关系,没有时间周期。基于以上原则,我认为符合这种情况满足两个要求。1、被包含类的建立和删除必须建立在包含类的构造和析构中。2、被包含类要在其他的类中定义成对象,这样即使该类在一处消失,也不妨碍在另一个类中继续生存。
一般关联
好了,最后说下一般关联。我个人觉得在我所遇到的大多数情况下都是一般关联。我个人觉得一般关联就是说必须要依赖第三方调用的情况才能使用。也就是说,该类要在函数中被创建或者析构。只是函数与类之间的关系。
最后多说一句,类图的关系每个人理解不同,甚至现在还有很多可以直接生成类图的工具,所以这只是我自己画类图的时候遵循的一些原则。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!