注意:抽象类也是接口
泛化称为继承
根据类与类之间的耦合度从弱到强排列,
UML 中的类图有以下几种关系:
依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。
其中泛化和实现的耦合度相等,它们是最强的。
类之间的关系:
泛化关系(generalization)–>继承
is-a关系,泛化关系表现为继承非抽象类;
实现关系(realize)
一个抽象的概念,在现实中并无法直接用来定义对象;
只有指明具体的子类,才可以用来定义对象
实现关系表现为继承抽象类;
依赖关系(dependency)
B类有个局部变量A,B依赖A,B虚线箭头A
与关联关系不同的是,它是一种临时性的关系(形参,局部变量)只和朋友通信,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化;
关联关系(association)-->分为两种(聚合跟组合)
B类中有A这个属性(成员变量),B关联A,B实心箭头A,(空心菱形或则是实心菱形)一般关联是一条直线
在最终代码中,关联对象通常是以成员变量的形式实现的;
聚合关系(aggregation)
A聚合到B上,B由A组成。B实心箭头A,空心菱形
聚合关系用于表示实体对象之间的关系,表示整体由部分构成的语义;例如一个部门由多个员工组成;
一个部门由多个员工组成,那么就是部门由员工组成。部门是整体,员工是部分
与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在;例如, 部门撤销了,人员不会消失,他们依然存在;
组合关系(composition)
A聚合到B上,B由A组成。B实心箭头A,实心菱形
与聚合关系一样,组合关系同样表示整体由部分构成的语义;比如公司由多个部门组成;
但组合关系是一种强依赖的特殊聚合关系,如果整体不存在了,则部分也不存在了;例如, 公司不存在了,部门也将不存在了;