常用UML图
类图(class)
- 场景
- 可以用来描述前端组件间关系
- 传统类图之间的关系
- 继承(Generalization)/泛化(Generalization)
- 鸟继承了动物
- 前端一般使用在明确声明了继承关系的情况下
- Vue.extends、class api的extends
- 实现(Realization)
- 一般是类实现了某个接口
- 大雁实现了飞翔这个接口
- 依赖(Dependency)
- 动物依赖水、氧气
- 表现在代码层面,为类B作为参数被类A在某个method方法中使用,可以说类A依赖类B
- 依赖关系是具有偶然性的、临时性的、非常弱,因为可以随便改变入参类,只要其能提供需要的数据
- 前端一般用在方法A调用时,B做为参数传入,则可以称A依赖B
- 关联(Association)
- 企鹅需要知道气候才迁移
- 表现在代码层面,关联类B以类属性的形式出现在关联类A中,也可能是关联类A引用了一个类型为被关联类B的全局变量;关联的类一般是对等的
- 一个类持有了另外一个类
- 聚合(Aggregation)
- 雁群和大雁的关系,公司和部门的关系,整体和部分的关系,二者生命周期没有关联,一只大雁离开了,雁群并不会消失;一个部门撤了,并不会影响公司的存在;
- 二者生命周期独立
- 前端中,若父组件拥有多个子组件,其中某个子组件的消失并不会影响父组件时,则可以称二者拥有聚合关系
- 合成/组合(Composition)
- 鸟和翅膀的关系
- 鸟没了翅膀不能飞翔,翅膀没了鸟这个载体也将毫无意义;二者同生共死,生命周期相互关联;
- 前端中,父子组件如果生命周期一致可以用组合来表示,某子组件消失,会直接导致父组件消失
- 依赖、关联、聚合、合成表现的都是类之间的关系
- 关系强弱(由强到弱)
- 合成(同生共死)>聚合(整体和部分的关系)>关联(关系对等)>依赖(依赖关系是具有偶然性的、临时性的、非常弱)
- 关系强弱(由强到弱)
- 继承(Generalization)/泛化(Generalization)
时序图(sequence)
- 描述多组件协作关系
- 角色Actor
- 可以是人、系统
- 对象Object
- 提供操作的对象
- 生命线LifeLine
- 表示对象的存在时间
- 控制焦点Focus of Control
- 表示时间段用,对象在相应时间内的操作,用小矩形表示
- 消息Message
- 表示对象之间相互传递的信息
- 消息种类
- 同步消息(Synchronous Message)
- 消息的发送者把消息传递给接收者后,然后停止自身活动,等待接收者返回消息
- 异步消息(Asynchronus Message)
- 消息的发送者把消息传递给接收者后,然后继续自身活动,不等待接收者返回消息
- 返回消息(Return Message)
- 表示消息从过程调用返回
- 自关联消息(Self Message)
- 表示方法的自身调用及一个对象的一个方法调用另外一个方法
- 表示方法的自身调用及一个对象的一个方法调用另外一个方法
- 同步消息(Synchronous Message)
活动图(activity)
- 类似流程图
- 描述流程用
- 组成
- 活动状态Activity
- 可拆分的动作,例如请假,请假有审批和不审批两种
- 动作状态Action
- 不可拆分的动作,例如不审批
- 动作流control flow
- 动作之间的转换为动作流,用箭头表示
- 开始节点Initial
- 起点,只有一个
- 结束点Final
- 结束点,可以有多个
- 分支Decision
- 决策点,会产生分歧的地方,菱形表示
- 分叉与汇合Fork and Join
- 用来同步(控制流全部完成再执行下一步)多个并行的控制流
- 泳道Partition
- 划分活动图中的活动用
- 可以理解为分组
- 活动状态Activity
- 注意
- 活动图目的在表达流程完整性而非活动细节
- 活动图中的元素不需要考虑复用性
- 如果出现了分叉点,就一定要有一个汇合点与之对应
用例图(use case)
- 描述系统拥有哪些角色,每个角色拥有哪些功能(用例)
- 一般用在需求分析阶段
关系
关联association
- 单向箭头表示(角色指向用例)
- 表示角色启动对应用例
- 除了包含和扩展用例外,其余用例都有角色启动他
包含include
- 一般指两个用例之间的关系
- 代表一个用例的行为包含了另外一个用例的行为,箭头指向为包含者指向被包含者
扩展extend
- 两个用例之间的关系
- 用来描述一个用例是另外一个用例的增量扩展
- 这个功能是非必须的功能,例如找回密码对部分用户来说并不是每次都用到的,所以他是一个在登录之上扩展的一个功能
- 泛化generalize
- 两个用例是一个继承关系,父用例一般为抽象用例,子用例为具体用例;例如预定是一个抽象用例,具体用例可为电话预定和网上预定
组件图(component)
- 用来表示系统的模块化部分
- 每个组件有暴露给外部用的接口(用圆球表示),和需要别的组件提供的接口(半圆表示),二者连接起来代表一方使用了另外一方提供的接口了
- 例如下图,购物车组件提供了加入购物车接口,同时他也使用了库存系统的商品库存接口
- 例如购物车依赖订单系统的结算接口
参考案例
- 以下链接是一个常用uml图的demo源文件,可以使用Enterprise Architect打开
demo.ea