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 总结
二、类图
2.1 类图
(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类产生了依赖
(2)最好的办法是将提供食物作为抽象接口给提取出来,KFC和接口之间是继承关系,学生和接口之间是依赖关系,注意eat接口的变化。
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)结束状态:是一种伪状态,只是表示从这里要结束(可选)
更复杂的举例:
五、活动图
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 定义
部署图用于表示部署软件应用的物理设备信息