泛化 (继承)== 实现(接口) > 组合(强关联) > 聚合(次强关联) > 关联 (普通关联)> 依赖(不是关联但仿佛是弱关联)
聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
关联是一种拥有关系
依赖是一种使用关系,是类的调用,即一个类的实现需要另一个类的协助,和关联关系不同,无须在类A(依赖)中定义类B(被)类型的属性。表现为B作为局部变量、方法的参数或者对B静态方法的调用。
uml类图经常会用到,了解其符号的含义很有必要。
谁被箭头指,那就是受,就是被实现被继承被聚合被组合,受是轮子,轮子被箭头指,轮子被聚合(逻辑关系,脱离汽车还是能作为独立的存在)。攻是发起者有主动性,但是有得必有失,属于依赖受(汽车依赖轮子)。
泛化(继承):
实现(接口):
与上图类似,实线改为虚线即可。
关联:
实线,三角箭头换为^折线箭头(开放箭头)即可。双向关联不需要箭头,直接一跟实线相连。箭头指着谁谁被关联被包含、
聚合:
关联的基础上箭头对面加个空心菱形即可、
组合:
关联的基础上箭头对面加个实心菱形即可。箭头指着谁谁被组合被包含、
依赖:
虚线化关联的线就ok了。
最后来个终极必杀图总结一下:
动物依赖氧气依赖水,依赖关系
鸟继承动物,图中继承太多不说了。
大雁继承鸟类的同时实现了飞翔的接口,鸭子没有,淘汰的玩意
鸟类组合了翅膀,整体的对象(鸟)负责代表部分的对象(翅膀)的生命周期。没有鸟翅膀也没有意义,超强关联-组合
雁群聚合了大雁,大雁不在雁群依然是高逼格的存在。逻辑上是聚合的。
企鹅关联了气候。气候会对企鹅造成影响。表现在代码里就是被箭头指的是被作为成员变量的关系.
KO!@ got it!