如何看懂UML类图
一、定义
Unified Modeling Language (UML):统一建模语言,类图是使用频率最高的UML图之一。
二、类的UML图示
定义一个QtiPlayerComponent类类一般由三部分组成:
1、类名
2、属性(Attributes):可见性 名称:类型 [ = 缺省值 ]
① 可见性:public(+) 、private(-) 、protected(#)
② 名称:变量名/方法名
③ 类型:属性的数据类型,可以是基本数据类型,也可以是用户自定义类型
④ 缺省值:可选项,即属性的初始值
3、 方法(Operations):可见性 名称(参数列表) [ :返回类型]
① 参数列表:表示方法的参数,其语法与属性的定义相似,参数个数是任意的,多个参数之间用逗号隔开
② 返回类型:可选项,表示方法的返回值类型,可以是基本数据类型或用户自定义类型,还可以是空类型(void)。如果是构造方法,则无返回类型
三、类与类之间的关系
1、关联(Association)
表示一个类的属性保存了对另一个类的一个实例(或多个实例)的引用,当一个类知道另一个类时,可以用关联。
关联关系用实线箭头来表示。
关联关系有四种:双向关联、单向关联、自关联、多重性关联。
① 单向关联:用一个单向箭头的直线表示
② 双向关联:用一个双向箭头或不带箭头的直线表示
③ 自关联:用一个单向箭头的直线表示,单向箭头指向自己
④ 多重性关联:在多重性关系中,可以直接在关联直线上增加一个数字,表示与之对应的另一个类的对象的个数
汽车和司机:一辆汽车对应特定的司机,一个司机也可以开多辆车注:组合、聚合也属于关联关系,只是关联关系的类间关系比其他两种要弱。
2、聚合(Aggregation)
表示类之间整体与部分的关系,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。
聚合关系用带空心菱形的直线表示。
公交车司机和工衣、工帽:工衣、工帽可以穿在别的司机身上,公交司机也可以穿别的工衣、工帽聚合表示一种弱拥有关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。
3、组合(Composition)
表示类之间整体与部分的关系,但是整体与部分不可分开。整体和部分有一致的生存期,一旦整体对象不存在,部分对象也将不存在,是同生共死的关系。
组合关系用带实心菱形的直线表示。
人由头部和身体组成,两者不可分割,共同存在组合关系是一种强拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。
4、依赖(Dependence)
依赖关系是一种“使用”关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。假设A类的变化引起了B类的变化,则说明B类依赖于A类。
依赖关系用带箭头的虚线表示。
汽车依赖汽油,如果没有汽油,汽车将无法行驶大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。
5、继承(即泛化,Generalization)
表示父类与子类之间的关系,父类又称作基类,子类又称作派生类。继承关系中,子类继承父类的所有的功能,包括父类所具有的属性、方法,同时子类还包括额外的信息。
继承关系用带空心三角形的直线来表示。
公交车、出租车和小轿车都是汽车,他们都有名称,并且都能在路上行驶6、实现(Implementation)
表示接口和实现类的关系,接口(包括抽象类)是方法的集合。
在实现关系中,类实现了接口,类中的方法实现了接口声明的所有方法。
实现关系用带空心三角形的虚线来表示。
汽车和轮船都是交通工具,而交通工具只是一个可移动工具的抽象概念,船和车实现了具体移动的功能注:交通工具接口Vehicle,包含一个抽象操作run()。在类Ship和类Car中都实现了该run()操作,不过具体的实现细节将会不一样(多态)。
四、总结
这六种类关系中,组合、聚合和关联的代码结构一样,可以从关系的强弱来理解。
各类关系从强到弱依次是:继承 > 实现 > 组合 > 聚合 > 关联 > 依赖。
推荐绘图工具:ProcessOn,可在线画uml,UML类图等,支持思维导图,流程图绘制