UML描述的类之间的关系主要有六种,分别是继承,实现,依赖,关联,聚合以及组合,并分别用各种不同的图案来表示。
1.继承
指类B(子类)继承类A(父类),并获得父类的功能,Java里面用extends关键字表示。
public class A {
}
public class B extends A{//类B继承类A
}
2.实现
指类B实现了一个接口A,Java当中用implements关键字表示。
public interface A {
public void print();
}
public class B implements A {//实现A接口
@Override
public void print() {
System.out.println("B");
}
}
3.依赖
可以理解为类A里面用到了类B,所以类A依赖于类B,这种关系是临时性的,很弱的一种关系。在代码上的表现为类B作为参数在类A当中使用。
public class B {
}
public class A {
public void print(B b) {//依赖与类B
}
}
4.关联
比依赖的关系要强,属于长期性的,双方的关系是平等的。在代码上的表现是类B作为类A的属性出现。
public class B {
}
public class A {
public B b;//作为A的属性
}
5.聚合
表现的是整体与部分的关系,整体和部分可以分离,比如一个家庭拥有两个小孩,家庭和小孩之间就是聚合关系。代码表现上和关联关系一样,只能通过语义来分别。图片中类A表示家庭,类B表示孩子。
public class Child {
}
public class Family {
public List<Child> children;//聚合关系
}
6.组合
表现的也是整体和部分的关系,整体和部分不可分离,整体和部分拥有相同的生命周期,比如一个人拥有一个脑袋,人和脑袋就是组合关系。代码表现上和关联关系一样,也只能通过语义来分别。图中类A表示人,类B表示脑袋。
public class Brain {
}
public class Person {
private Brain b;//组合关系
}
总结
这六种关系当中,继承和实现是最好判断的,另外剩余的这四中关系,其关系强度为 组合>聚合>关联>依赖 。