类的关系:泛化(继承) = 实现 > 组合 > 聚合 > 关联 > 依赖
泛化:(is-a),类与类、接口与接口的继承关系
实现:指的是一个class类实现interface接口(可以是多个)的功能
关联:A类作为B类的属性样式的存在,即“有”的关系
这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的。
分类:
多重性:
聚合:是比较强的关联关系,整体——部分
组合:是更强的关联关系,部分完全依赖整体存在
“整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在没有任何意义,是比较强的拥有关系
大雁类——翅膀类
聚合类:构造函数中包含了另一个类作为参数。 雁群类(GooseGroup)的构 造函数中要用到大雁(Goose)作为参数传递进来。大雁类(Goose)可以脱离雁群类而独立存在。
组合类:构造函数中包含了另一个类的实例化。 表明大雁类在实例化之前,一定要先实例化翅膀类(Wings),这两个类紧密的耦合在一起,同生共灭。翅膀类(Wings)是不可以脱离大雁类(Goose)而独立存在。
2.信息的封装性不同
聚合:客户端可以同时了解雁群类和大雁类,因为他们都是独立的。
组合:客户端只认识大雁类,根本就不知道翅膀类的存在,因为翅膀类被严密的封装在大雁类中。
依赖:(use-a),指一个类A使用到了另一个类B
特性:被使用的B类变化会影响到A类,这种关系是微弱的,偶然的
例如:人与车
关联和依赖: