UML类图,描写叙述对象和类之间相互关系的方式包含:依赖(Dependency)、关联(Association)、聚合(Aggregation)、组合(Composition)、泛化(Generalization)、实现(Realization)等。
依赖(Dependency)
class B { public void doSth() { System.out.println("do sth in class b."); } } // class A { public void doSthInA(B b) { b.doSth(); // others } }
泛化(Generalization)
就是通常所说的继承关系,不必多解释了。uml中用带空心箭头的实线线表示Generalization关系,箭头指向被继承的类。
// 形状 class Shape { } // 方形继承自Shape class Square extends Shape{ }
实现(Realize)
public interface Runnable { public abstract void run(); } // 实现Runnable接口 public class Thread implements Runnable { @Override public void run() { // do sth } }
关联(Association)
class Book { } // class People { // 学生能够独立于老师而存在 List<Book> mBooks = new ArrayList<Book>(); }
聚合(Aggregation)
UML中用带空心菱形头的实线
class Wheel { } class Car { List<Wheel> mWheels = new ArrayList<Wheel>(); }
组合(Composition)
组合是聚合关系的变种,表示元两者之间具有更强的聚合关系,它通常要求总体代表部分的生命周期。
假设是组合关系,部分(个体)不能独立于总体而存在。
UML中用带实心菱形头的实线表示Composition关系。
菱形头指向总体。
class Hand { } class People { List<Hand> mHands = new ArrayList<Hand>(); }
当中依赖(Dependency)的关系最弱,而关联(Association)。聚合(Aggregation),组合(Composition)表示的关系依次增强。换言之关联,聚合,组合都是依赖关系的一种,聚合是表明对象之间的总体与部分关系的关联。而组合是表明总体与部分之间有同样生命周期关系的聚合。
各种关系的强弱顺序:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
參考推荐: