特性:临时、短暂、这种关系不需保存
依赖关系是对象之间最弱的一种关系,是临时性的。代码中一般指由:局部变量、函数参数、返回值建立的对于其他对象的调用关系
class A{ public B method(C c,D d){ E e = new E(); ... B b = new B(); ... return b; } }
这个代码块中表示类A依赖了类B/C/D/E
对象之间的一种引用关系,比如客户类和订单类之间的关系。这种关系通常使用类的属性来表达
关联可以有方向。一般不做说明的时候,导航可以时双向的,不需要在线上标出箭头,大部分情况下导航都是单向的,可以加一个箭头表示
class Employee{ private int eid;//员工编号 private String name;//员工姓名 private Computer coumputer;//员工所使用的电脑 //.... } class Computer{ }
class Husband{ private Wife wife; } class Wife{ private Husband husband; }
关联表示类之间的持久关系,这种关系一般表示重要的业务之间的关系,需要保存的,或者说需要持久化,也可以说需要保存到数据库中
聚合关系是关联关系的一种,聚合关系也是通过实例变量来实现这种关系的,关联关系和聚合关系从语法上来说是无法区分的,从语义上才能更好的去区分;
比如说汽车类和引擎类、轮胎类之间的关系就是整体和个体的关系
class Car{ private Engine engine;//引擎 private Tyre[] tyres;//轮胎 }
关联关系和聚合关系之间的区别:关联关系涉及到的两个对象是属于同一层级上的,比如人和车就是关联关系,而不是聚合关系,因为人不是由车组成的
而聚合关系涉及到的两个对象处于不平等的层级上,一个代表整体,一个代表一部分,比如电脑和他的显示器、键盘就是聚合关系
对象A包含对象B,对象B离开对象A就没有实际意义,是一种更强的关联关系,人包含手,手离开了人就失去了他应有的作用
组合类负责被组合类的声明周期,也使用属性表达组合关系,比关联关系、聚合关系更强的关联关系
class Window{ private Menu menu;//菜单 private Slider slider;//滑动条 private Panel panel;//工作区 }
类与类的继承关系,类与接口的实现关系
父与子、动物与人、植物与树