UML类图符号
在UML类图中,常见的有以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)
1、泛化(继承)
【箭头指向】:带三角箭头的实线,表示继承一个基类,B类继承A类。
【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
【泛化例子】:老虎是动物的一种,既有老虎的特性也有动物的共性。
2、实现
【箭头指向】:带三角箭头的虚线,箭头指向接口,表示C类实现接口的定义。
【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。
3、关联
【箭头指向】:带普通箭头的实线,指向被拥有者。
【关联关系】:是一种拥有的关系,它使一个类知道另一个类的特征和行为,关联分为单项关联和双向关联两种;双向关联可以用俩头带箭头的实现表示,也可以不要箭头。
【3.1】、单向关联:仅能从一个类访问到另一个类(前者的属性中有后者),B类单项关联A类(B中有属性a为类A的对象);如:学生与课程的单向关联。
【3.2】、双向关联:两个类之间能相互访问(两个类的属性中都有对方),B类关联A类(B中有属性a为类A的对象),A类关联B类(A中有属性bs为Set,Set包含B的对象),A和B是1对n(n>0)的关联;如老师与学生的双向关联。
【3.3】、自身关联:... ...
【代码体现】:成员变量
4、聚合
【箭头方向】:带空心菱形的实线,菱形指向整体;Wheel类扮演wheels角色,聚合4个到Car对象里面去。
【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如Car和Wheel是整体与部分的关系,Wheel离开Car仍然可以存在,并不随Car的创建而创建,销毁而销毁。
【代码体现】:成员变量
【聚合PK关联】:聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。
5、组合
【箭头方向】:带实心菱形的实线,菱形指向整体;Company对象完全由Department对象组成。
【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如Company和Department是整体与部分的关系,没有Company就没有Department,Department随Company的创建而创建,销毁而销毁。
【代码体现】:成员变量
【组合PK关联】:组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
6、依赖
【箭头指向】:带箭头的虚线,指向被使用者,
【依赖关系】:是一种使用关系,表示类之间的调用关系,即一个类的实现需要另一个类的协助,所以尽量不使用互相依赖。
【代码体现】:如果类A访问类B的属性或者方法,或者类A负责实例化类B,那么可以说类A依赖类B(局部变量、方法的参数或者对静态方法的调用)。
【依赖PK关联】:和关联关系不同,无须再类A中定义类B类型的属性。
各种关系的强弱顺序
泛化 == 实现 > 组合 > 聚合 > 关联 > 依赖
下面这张UML图,比较形象地展示了各种类图关系 :