我们知道,面向对象的特性就是封装、继承和多态,而为了使这些关系呈现的更加清晰,经常采用UML类图的形式来表示。常见的几种关系如下:
1. 类(Class): 表示对某种对象的封装。具体表示如下图,
最上面一格代表类名,斜体表示该类为抽象类;第二格表示该类的特性,就是常说的字段和属性;第三格表示类的操作,
即方法和行为。前面的+号表示public,-表示private,#表示protected。
2. 接口(Interface): 是指一系列方法的声明,没有实现,实现该接口的类负责实现该接口的方法。
其中,最上面一格表示接口名称,第二格表示该接口定义的一些方法。
3. 继承(Inheritance):是指使用已存在的类的定义作为基类,可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。具体表示方法是空心三角形+实线。
当然,Java语言中为了实现类似C++的多继承机制,还有个实现(Implements)接口的类图,具体表示方法是空心三角形+虚线或者下图的棒棒糖表示法。
4.关联(Association):当一个类需要“知道”另一个类时,就可以用关联来表示,使用实线箭头来表示。
5.聚合(Aggregation):是一种弱的“拥有”关系,相当于包含,但不是其中的一部分,以便和合成区分开来,使用空心菱形+实线箭头来表示。
6.合成(Composition):也叫组合,是一种强的“拥有关系”,体现的是一种局部和整体的关系,其生命周期和整体一样,使用实心的菱形+实线箭头来表示。其中连线两段的数字表示基数,表明一个类可以有几个实例,一个人有一个脑袋,所以用1:1表示。
7.依赖(Dependency):比如,人类要喝水,要吃饭等,体现的是一种依赖关系,使用虚线箭头来表示。
注:由于本人的visio功能有限,4和5中的图形画不出,全部出自互联网,如有问题,概不负法律责任。