一、UML概述
UML,统一建模语言(Unified Modeling Language)是用来软件的可视化建模语言。
从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、时序图、协作图、构件图、部署图。
二、类图
Class diagram 是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及与类之间的关系。
1、类的表示
类使用包含类名、属性和方法且带有分割线的矩形来表示。
例如下图的Employee类,包含name、age和address这三个属性,以及work()方法。
属性/方法前的加号减号表示了可见性。
+ :表示public
- :表示private
# :表示protected
什么都不加表示default
属性的完整表示方式是: 可见性 名称 :类型[= 缺省值]
方法的完整表示方式是:可见性 名称(参数列表) [:返回类型]
注:中括号里的内容可以省略。
也可将类型写在变量名前面,返回值类型写在方法名前面。
2、类与类的关系表示
包含关联关系、聚合关系、组合关系、依赖关系、继承关系(泛化关系)、实现关系。
其中耦合性最低的是依赖关系,耦合性最强的是继承关系(泛化关系)和实现关系。
(1)关联关系
关联关系是是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,比如老师和学生、师傅和徒弟、丈夫和妻子等。
关联关系分为一般关联关系、聚合关系和组合关系。
一般关联关系分为单向关联、双向关联、自关联。
a.单向关联
在UML类图中,单向关联用一个带箭头的实线表示。例如下图,每个顾客都有一个地址。
b.双向关联
在UML类图中,双向关联用一个不带箭头的直线表示。例如下图,Customer类中维护了一个List<Product>,表示一个顾客可以买多个商品,在Product类中,维护一个Customer类型的成员变量,表示这个产品被哪个顾客所购买。
c.自关联
在UML类图中,自关联用一个带有箭头且指向自身的线表示。例如下图,Node类包含类型为Node的成员变量,自己包含自己。
(2)聚合关系
聚合关系是强关联关系,是整体与部分的关系。
聚合关系是通过成员对象来实现的,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。例如,学校和老师的关系,学校包含老师,但是如果学校停办了,老师依然存在。
在UML中,聚合关系用带空心菱形的实线来表示,菱形指向整体。例如下图,大学和老师:
(3)组合关系
组合关系也是表示类之间整体与部分之间的关系,是一种更强烈的聚合关系。
在组合关系中,整体对象可以控制部分对象的生命周期,一旦整体对象不存在了,不分对象也会不存在,部分对象不能脱离整体对象而存在。例如头和嘴的关系,没有了头,嘴也就不存在了。
在UML中,组合关系用带实心菱形的实线来表示,菱形指向整体。例如下图,头和嘴的关系图:
(4)依赖关系
依赖关系是一种使用关系,是对象之间耦合度最弱的一种关联方式,是临时性的关联。
某个类的方法通过局部变量、方法的参数或者对静态方法的调用来访问另一个类(被依赖的类)中的某些方法来完成一些功能。
在UML图中,依赖关系使用带箭头的虚线表示,剪头从使用类指向被依赖类。例如下图,是司机和汽车的关系图,司机驾驶汽车:
(5)继承关系(泛化关系)
继承关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类和子类之间的关系。
在UML中,泛化关系用带空心三角形箭头的实线表示,箭头从子类指向父类。例如下图,Student类和Teacher类都是Person类的子类。
(6)实现关系
实现关系是接口与实现类之间的关系。类实现了接口,类中的操作实现了接口中所声明的所有的抽象操作。
在UML图中,实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口。例如下图,汽车和船实现了交通工具类:
三、