uml类图(Class Diagram)中类与类之间的关系及表示方式
类之间大体分为5种关系:
1,依赖关系(Dependency),单向
public class Fork { public void useFork(){ System.out.println("Use fork to eat!"); } }
public class People { public void eat(Fork fork){ fork.useFork(); } }
如果A依赖于B,则B表现为A的局部变量,方法参数,静态方法调用等
2,关联关系(Association),单向或双向,依赖关系的一种
public class Product { }
public class Order { public void getOrderDes(){ Prodeuct p = new Product(); ... } }
即"has a"关系,如果A单向关联B,则可以说A has a B
3,聚合关系(Aggregation),单向,关联关系的一种:
Goods是Market的组成部分,但是Goods可以不在Market初始化的时候初始化。
public class Goods { }
public class Market { public Goods goods; public Goods getGoods(){ goods = new Goods(); return goods; } }
通常表现为成员变量
4,组合关系(Composition),单向,关联关系的一种:
public class Head { }
public class Body { public Head head; public Body(){ head = new Head(); } }
通常表现为成员变量,并且和所属类具有相同的生命周期
5,继承关系(Inheritance)
类实现接口,类继承抽象类,类继承父类都属于这种关系
可以分得更细:
实现(Realization):类实现接口属于这种关系
泛化(Generalization):即"is a"关系,类继承抽象类,类继承父类都属于这种关系
PS:
聚合和组合都属于关联关系,他们之间的区别为:
聚合:聚合关系的2个类生命周期不同
组合:组合关系的2个类生命周期相同