类图是面向对象系统建模中最重要的图,是定义其它图的基础。类图主要是用来展现软件系统中的类、接口以及它们之间的静态结构。
类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法
类图中的“类”与面向对象面向对象面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象
1、类
- 从上到下分为三部分,分别是类名、属性和操作。类名是必须有的
- 类如果有属性,则每一个属性必须有一个名字,另外还可以有其他的描述信息,如可见性、数据类型、缺省值等
- 类如果有操作,则每一个操作也都有一个名字,其他可选的信息包括可见性、参数的名、参数类型、参数缺省值和操作的返回值的类型等
2、接口
一组操作的集合,只有操作的声明而没有实现
3、抽象类
不能被实例化的类,一般至少包含一个抽象操作
4、模板类
一种参数化的类,在编译时把模板参数绑定到不同的数据类型,从而产生不同的类
在uml类图中,类之间关系有如下:
- 泛化(generalization)
- 实现(realization)
- 关联(association)
- 聚合(aggregation)
- 组合(composition)
- 依赖(dependency)
1、泛化(generalization)
泛化是继承关系的一种,子类继承父类的所有行为和属性,子类可以新增新的功能或者重写父类功能。
uml中使用带空心三角箭头的实线标示
【箭头指向】:箭头指向父类
2、实现(realization)
实现是接口和类的关系,是指类实现了接口中定义的接口,uml中用带空心三角箭头的虚线
【箭头指向】:箭头指向接口类
3、关联(association)
在建模过程中必然存在类之间的联系,使类可以感知其他类的行为和属性,关联分为双向和单向关联.
单向关联
对于一个单向关联来说也是两个类是相关的,但是只有一个类知道这种联系的存在
双向关联(标准)
对于双向关联来说被关联的两个类可以感知对方的存在
关联关系的表示方法如下:
表示 |
含义 |
0..1 |
0个或1个 |
1 |
只能1个 |
0..* |
0个或多个 |
* |
0个或多个 |
1..* |
1个或多个 |
3 |
只能3个 |
0..5 |
0到5个 |
5..15 |
5到15个 |
4、聚合(aggregation)
聚合是关联关系的一种,聚合主要描述整体与部分直接的关系。需求陈述中常使用“包含”、“组成”、“分为…部分”等字句。除了基本(一般)聚集之外,还有共享聚集和组合聚集。
在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在
在uml中,聚合关系用带
空心菱形 的直线表示
5、组合(composition)
组合聚合是聚合的一种特殊情况,成员对象与整体对象之间具有同生共死的关系,uml中使用一条从整体类到部分类的实线,并在整体类的关联末端画一个实心棱形标识
6、依赖(dependency)
依赖即一个类的实现需要其他类的协助,通常代码表现为方法参数,局部变量,静态方法调用,util类调用,uml中使用一条箭头的虚线,从依赖方指向被依赖的类