导语
在一些框架讲解、设计模式等技术帖子或者书中,经常出现UML图。以自己的经历来判断,一般情况下,看到这些图解都会选择性忽视。这算是惰性,也没有办法;如果突然有一天,非要使用UML图,那么这篇文章可能会有所帮助。
这个是starUML的下载地址
接口和类的简介
首先从最简单的入手:接口和类
Class典型的UML示范
从上到下分成了三个部分,分别是:
- 类名
- 属性
- 方法
属性和方法前面有#,-,+符号,分别表示:
- + –> public
- - –> private
- # –> protected
上面的UML图,翻译成Java代码如下:
public class Person {
private int age;
protected String name;
public int sex;
private int getAge() {
return age;
}
protected String getName() {
return name;
}
public int getSex() {
return sex;
}
}
interface典型的UML示范
《interface》很清楚地标明了这个是一个接口。上图翻译成Java代码如下:
public interface CallBack {
public void call();
}
继承和实现
继承
类与类之间的继承用空心三角形+实线表示,例如:
实现
类与接口之间的实现使用空心三角形+虚线表示,例如:
如果在使用starUML,会发现没有extends和implements相关的线条,因为不同的语言,这种表述不太一致,所以一般软件使用更加通用的名称来表示,具体来说就是:
- Generalization(泛化)–>extends
- Realization(实现)–>implements
依赖、关联、聚合和组合(Dependence、Association、Aggregation和Composition)
除了继承(泛化)和实现以外,一般类与类的关系还包括依赖、关联、聚合和组合。
这几种类与类之间的关系是有强弱之分的,可以大致排序为:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
依赖
依赖表示一个类的实现需要另一个类的协助,是类与类之间一种很弱的联系
表示方法:虚线+箭头,箭头指向被使用的对象
例如:
学生为了得到高分需要书本的协助,但这种协助的效果有限(这里只是举例子,不用较真)
关联
关联表示:一种拥有关系,一个类知道另一个类的属性和方法
表示方法:单向关联:实线+箭头;双向关联:只有直线
例如:
学生与老师之前是互动关系,是相互关联的;学生可以选课、逃课、翘课……是单向关联
聚合
聚合表示:一种整体与部分的关系,部分可以脱离整体而单独存在
表示方法:使用空心菱形链接
例如:
眼镜可以离开人体而单独存在。
组合
组合表示:一种整体与部分的关系,部分不能脱离整体而单独存在
表示方法:使用实心菱形
例如:
腿不能离开人体而单独存在
ps:不同工具可能在聚合和组合的线段展示上不太一致,但最重要的菱形的空心与实心分别代表聚合和组合是一致的
结语
UML类图的解读并不复杂,只需稍微看下,就可以掌握。另外,如果想自己制作UML类图,可以参考这篇文章。所使用的工具在这里下载
转载请标明出处:http://blog.youkuaiyun.com/qq_26411333/article/details/53507165