说明出处:看懂UML类图和时序图-Graphic Design Patterns
从一个示例开始:
- 车的类图结构为《adstract》,表示车是一个抽象类;
- 它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;
- 小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;
- 小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;
- 学生与班级之间是聚合关系,使用带空心箭头的实线表示;
- 学生与身份证之间为关联关系,使用一根实线表示;
- 学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示;
小结:
- 接口和它的实现之间是实现关系:空心箭头,虚线。
- 父类和子类之间是继承关系:空心箭头,实现。
- 聚合关系:空心菱形,实线;组合关系:实心菱形,虚线。两者意义上很接近,但是存在差别,对于聚合关系,如果整体不存在了,部分依然可以存在;对于组合关系,如果整体不存在了,部分就不存在了。
- 关联关系:实线,可以没有箭头。通常和运行状态没有关系,表达两者在常识上存在关联关系。
- 依赖关系:带箭头的虚线。描述一个对象在运行期间会用到另外一个对象,依赖是有方向的,依赖的方向为调用方向。注意双向依赖是一种非常糟糕的结构,应该尽量避免。