前言
UML四大关系中,包括:泛化,实现,关联,依赖。
泛化就是我们在面向对象中提到的继承,而实现则更多的体现在类和接口之间的关系。
关联和依赖相对于上边两个关系,则表现的不是很容易理解,所以我们今天来深入学习一下。
关联
它表示类与类之间的连接,它使得一个类知道另一个类的属性和方法。
关联可以用单向箭头表示单向关联,使用双箭头表示双向关联(不建议)。
关联是类与类,类与接口之间的一种比较强烈的关系,它不是临时性的,而是长期性的。
代码体现:
1.B作为A的属性出现在了A中
2.关联类A引用了被关联类B的全局变量
它的两个特例:
1.聚合:空心菱形箭头
它也是关联关系的一个特例(has-a),但是此时整体和部分是分离的,有各自的声明周期。
代码体现:通过实例变量来体现
2.组合:实心菱形箭头
是关联关系的一个特例(contain-a),比聚合关系更强,它和聚合最大的区别就是:整体和部分是不可分的(就好比人和氧气一样!)
代码体现:它的体现在代码段和聚合并没有很大的区别,唯一的区别就是:部分和整体的声明周期是一致的。
依赖
它表示类与类之间的连接,表示一个类依赖于另外一个类的定义,方向是单向的。(可以简单理解为:我吃饭用到筷子,所以在吃饭这件事上,我依赖于筷子,但是我不吃饭我就不依赖于它了!)
它具有偶然性,临时性,而且这种关系非常弱。但是类B(筷子)的变化会影响类A(我)。(如果没有筷子,我吃饭就会受到影响)
表示方法:虚线箭头
它分为四种:
1.精化
2.跟踪
3.包含
4.延伸
代码体现:
1.A方法的参数是B(耦合)
2.A方法的参数是B的属性(紧耦合)
3.A方法中实例化了B
4.A方法的返回值是B
关系强弱排序:组合>聚合>关联>依赖
虽然知识点不是很多,但是博主感觉都是挺重要的点。
想要深入的理解这种关系,我们还是要多去实践,在代码中体会它们的异同,纸上学来终觉浅,绝知此事要躬行!加油!
感谢大家认真阅读和点赞鼓励!有什么问题欢迎大家和我交流!