一、前言

类图是UML结构图,在类和接口的层次上显示设计系统的结构,显示它们的特性、约束和关系等,是定义其它图的基础。

二、类图

UML_03_类图-LMLPHP

如上图,在类图中表示方法如下:

三、关系

在uml类图中,类之间关系有如下:

1.泛化:

泛化是继承关系的一种,子类继承父类的所有行为和属性,子类可以新增新的功能或者重写父类功能。

  • 表示
  • 示例

    UML_03_类图-LMLPHP

2.实现

实现是接口和类的关系,是指类实现了接口中定义的接口

  • 表示
  • 示例

    UML_03_类图-LMLPHP

3.关联

在建模过程中必然存在类之间的联系,使类可以感知其他类的行为和属性,关联分为双向和单向关联

3.1 双向关联(标准)

对于双向关联来说被关联的两个类可以感知对方的存在

UML_03_类图-LMLPHP

上面多重值为0…*,其实还有其他多重值如下表:

n只能n个
0…n0到n个
0…*0个及以上
n…*n个以上
============================================================
0…10个或1个
1只能1个
0…*0个或多个
*0个或多个
1…*1个或多个
3只能3个
0…50到5个
5…155到15个

3.2 单向关联

对于一个单向关联来说也是两个类是相关的,但是只有一个类知道这种联系的存在

UML_03_类图-LMLPHP

如图,对于单向关联表示为一条带有指向已知类的开放箭头实线,单向关联只包含一个角色名和多重值,一个人可以有0个或者多个账户,人可以感知到账户的存在,但是账户却感知不到人的存在。

UML_03_类图-LMLPHP

4. 聚合

聚合是关联关系的一种,聚合主要描述整体与部分直接的关系,聚合有分为基本聚合和组合聚合

4.1 基本聚合

通常也称之为聚合

对应基本聚合来说,部分类的生命周期独立于 整体类 的生命周期

  • 表示
  • 示例

    UML_03_类图-LMLPHP

一个汽车有4个轮子组成,轮子的生命周期不依赖与车的,因为车轮可以独立于车独立存在。

4.2 组合

组合聚合是聚合的一种情况,不同在于部分类的生命周期依赖整体类。

  • 表示

UML_03_类图-LMLPHP

一个公司有至少一个部门组成,部门要依赖于公司的存在而存在,不会存在一个部门而它不属于某一个公司。

4.3 自身关联

自身关联涉及到一个类,是类自己关联自己的情况

UML_03_类图-LMLPHP

一个雇员可以有0个或者多个管理者,而管理者本身也是雇员的一种。

5.依赖

依赖即一个类的实现需要其他类的协助,通常代码表现为方法参数局部变量静态方法调用util类调用

  • 表示

UML_03_类图-LMLPHP

四、实例

1.官方域模型

Domain Model Diagram

UML_03_类图-LMLPHP

下面围绕类Library类分析下这个图

下面围绕Catalog分析

2.大话设计模式

下图摘自《大话设计模式》

UML_03_类图-LMLPHP

六、参考资料

  1. https://www.uml-diagrams.org/
  2. UML教程-w3cschoolUML教程-w3cschool
  3. UML建模图实战笔记-ifeve
05-21 23:39