如何看懂UML类图

2020-04-13  本文已影响0人  小碗碗碗碗

一、定义

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类图等,支持思维导图,流程图绘制

上一篇下一篇

猜你喜欢

热点阅读