依赖(Dependency)
- 表示一个类使用(Use )另一个类,是四种关系中最弱的一种关系
- 依赖关系是单向的
- 例如动物依赖水,汽车依赖汽油等
- 具体代码有三种形式(被依赖的类作为局部变量)
- water是公共的类,animal可以调用
- water是animal的一个方法中的变量
- water是animal函数的参数或者返回值
关联(Association)
- 表示一个类拥有(has)另一个类,关系相对于依赖来说大大增强
- 分为聚合和组合,例如雁群和大雁(聚合),大雁和翅膀(组合)
- 这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的
- 具体代码表现为被关联类作为一个全局变量或属性
泛化(generalization)
- 是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力
- 继承是类与类或者接口与接口之间最常见的关系
- 是一种父子关系,两个类之间的关系非常强
- 例如鲨鱼继承鱼,麻雀继承鸟
- 代码上表现为继承,在java中使用extends关键字
实现(realization)
- 是一个类(class)实现一个或多个接口(interface)的功能(是类与接口的关系)
- 是一种最常见的关系,设计时鼓励使用
- 接口可以说是对一种功能的抽象,比如有两个接口:飞翔、捕食,一个鸟(class)类可以实现这两个接口,实现以后,就具有这两个接口所具有的两个功能
- 在UML中的体现
- 在java代码中使用关键字implements表示