类之间可能存在以下几种关系:关联(association)、依赖(dependency)、聚合(Aggregation,也有的称聚集)、组合(Composition)、泛化(generalization,也有的称继承)、实现(Realization)。
关联是指两个类之间存在某种特定的对应关系,例如客户和订单,一个订单只能属于某个客户,一个客户可能会有多张订单。根据方向,分为单向和双向。根据对应的数量分为一对一、一对多、多对多等。对应的UML图如下所示:
关联关系用实线+箭头表示。上图显示Customer和Order是双向一对多关联关系。对应的Java代码如下所示:
class Customer {
private Integer id;
private String name;
private Set<Order> orders;
public Set<Order> getOrders() {
return orders;
}
public void setOrders(Set<Order> orders) {
this.orders = orders;
}
}
class Order {
private Integer id;
private float money;
private Customer customer;
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
}
Customer和Order是双向一对多关联关系,那么在Customer中应该有Order的集合,在Order中应该Customer的属性。
依赖指的是类之间的调用关系。类A访问类B的属性或方法,或者类A负责实例化类B,那么就说类A依赖于类B。