UML图画法

UML图画法

作者:wlai
发布:2025-03-12
更新:2025-03-12

一、4+1视图对应的描述工具

1.1 逻辑架构

(1)静态方面

  • 组件图
  • 包图
  • 类图
  • 对象图

(2)动态方面

  • 时序图
  • 协作图
  • 状态图
  • 活动图

1.2 开发架构

  • 包图
  • 类图
  • 组件图

1.3 物理架构

  • 部署图
  • 组件图

1.4 运行架构

  • 部署图
  • 组件图

1.5 数据架构

1.6 总结

UML图汇总

二、类图

2.1 类图

UML类图

(1)可见性

  • +表示公有public属性
  • -表示私有private属性
  • #表示受保护protected属性

2.2 继承(泛化,Generalization)关系

泛化关系

语义:
(1)类和子类的关系,接口和子接口的关系
(2)一个类(子类、子接口)继承另外一个类(父类、父接口)的功能,并可以增加它自己的新功能

符号:一条带空心三角箭头的实线,线中带Extends单词,从子类(子接口)指向父类(父接口)

2.3 实现(Implementation)关系

实现关系

语义:
(1)类和接口之间的关系;
(2)一个类可以实现多个接口,实现所有接口的功能;体现了规范和实现分离的原则

符号:一条带空心三角箭头的虚线表示,从类指向实现的接口

2.4 依赖(Dependency)关系

语义:
(1)一个类A使用到了另一个类B,但是这种使用关系是具有偶然性的、临时性的、非常弱的,但是类B的变化会影响到类A;

语法:
(1)类B作为类A的方法的参数(或者局部变量)存在;

符号:
(1)由类A指向类B的带箭头虚线表示,线中带了Use单词

举例:
(1)学生到KFC吃东西,由此对KFC类产生了依赖
依赖关系1

(2)最好的办法是将提供食物作为抽象接口给提取出来,KFC和接口之间是继承关系,学生和接口之间是依赖关系,注意eat接口的变化。
依赖关系2

2.5 关联(Association)关系

语义:
(1)比依赖关系强,必然的,长期的,强烈的

语法:
(1)类B作为成员变量形式存在于类A中

符号:
(1)由类A指向类B的带箭头实线表示,

举例:
(1)在购物场景中,顾客、订单、商品之间形成了强的依赖关系
关联关系

2.6 聚合(Aggregation)关系

语义:
(1)关联关系的一种特例(一个类作为另一个类的成员变量)
(2)整体和部分的关系
(3)整体部分可分离,整体的生命周期和部分生命周期不同,属于has-a的关系
(4)比如计算机与CPU、公司与员工、班级和学生的关系

语法:
(1)类B(部分)作为成员变量的形式存在于类A中

符号:
(1)空心棱形加实线

举例:
(1)球队和球员、教练、队医之间是整体与部分之间的关系
聚合关系

2.7 组合(Composition)关系

语义:
(1)关联关系的一种特例
(2)是整体和部分的关系,但是整体和部分不可分离,关联比聚合关系更强,是contains-a的关系;
(3)整体和部分的生命周期相同;

语法:
(1)类B(部分)作为成员变量的形式存在于类A中

符号:
(1)实心棱形加实线

举例:
(1)人和头、心脏之间是组合关系
组合关系

2.8 类图总结

分类 关系 表示方法
继承 继承(Generalization)关系 一条带空心三角箭头的实线,线中带Extends单词,从子类指向父类
实现 实现(Implementation)关系 一条带空心三角箭头的虚线表示,从类指向实现的接口
依赖 依赖(Dependency)关系 由类A指向类B的带箭头虚线表示,线中带了Use单词
关联(Association)关系 由类A指向类B的带箭头实线表示,
聚合(Aggregation)关系 空心棱形加实线
组合(Composition)关系 实心棱形加实线

三、用例图

3.1 定义

用例图是指由参与者、用例、边界以及它们之间的关系构成的用于描述系统功能的视图

用例图

用例图主要用来描述角色以及角色与用例之间的连接关系。说明是谁要使用系统,以及使用该系统可以做些什么。

一个用例图包含了多个模型元素,比如系统、参与者、用例。并显示这些元素之间的各种关系,如泛化、关联和依赖。它展示了一个外部用户能够观察到的系统功能模型。

用例图的用途:帮助开发团队以一种可视化的方式理解系统的功能需求。

3.2 元素

(1)参与者(Actor):与应用程序或系统进行交互的用户、组织或者外部系统,用小人表示。

(2)用例(Use Case):用例就是外部可见的系统功能,对系统提供的服务进行描述,用椭圆表示。

(3)子系统:用来展示系统的一部分功能,这部分功能联系紧密。

3.3 元素之间的关系

元素之间的关系

四、状态图

4.1 定义

状态图用来描述一个特定的对象所有可能的状态,以及哪些事件将导致状态改变

4.2 状态图所包含的元素

(1)箭头表示一个转换/一个动作;
(2)箭头上的文字表示一个事件;
(3)长方形表示某种状态;
(4)起始状态:是一种伪状态,只是表示从这里要开始(可选)
(5)结束状态:是一种伪状态,只是表示从这里要结束(可选)

状态图1

更复杂的举例:
状态图2

五、活动图

5.1 定义

活动图是UML的动态规图之一,用来描述事物或者对象的活动变化流程。类似流程图,描述从一个动作转移到另一个动作,阐明了业务用例实现的工作流程。

5.2 活动图的元素

(1)开始:线条表示

活动流(ActionFlow)描述活动之间的关系,表示一个活动向另一个活动之间的转移,用带箭头的实线表示。

活动图-开始

(2)结束
活动图-结束

(3)活动
活动图-活动

(4)条件转移(分支):表示从一个活动按照某种条件转移到几个不同的活动。
活动图-条件转移

(5)分劈和汇合:表示并发的同步行为,用同步杆表示
活动图-分批和汇合

举例:
活动图举例

六、时序图

6.1 定义

时序图(Sequence Diagram),又名序列图,循序图,是一种UML交互图,当用户进行某个操作的时候,按照时间顺序看,各个模块之间如何调用的。描述了方法的调用过程,程序的执行流程,以及方法执行结束的返回值情况。所以用例图当中的一个用例会对应一个时序图,该时序图描述的是该功能/用例具体是怎么实现的,流程是什么。严格情况下,肯定是先设计再开发。

6.2 时序图的元素

(1)角色
时序图-角色

(2)对象
时序图-对象

(3)生命线
时序图-生命线

(4)控制焦点
时序图-控制焦点
控制焦点可以体现生命周期

(5)消息
时序图-消息

举例:
时序图-举例

七、组件图

7.1 定义

组件图用来建立系统各个组件之间的关系(网站分了多少层,每层有多少组件),它们是通过功能或者文件组织在一起,使用组件图可以帮助读者了解某个功能位于软件包的哪一位置,以及各个版本的软件包包含哪些功能。如JavaBean、EJB、JSP都是组件。

7.2 元素

(1)组件
组件图-组件

组件图可以用来帮助设计系统的整体架构。

举例:
组件图-举例

八、部署图

8.1 定义

部署图用于表示部署软件应用的物理设备信息
部署图


UML图画法
https://wlai.me/uml-0/
作者
wlai
发布于
2025年3月12日
许可协议