uml-basic

常用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)
      • 鸟和翅膀的关系
      • 鸟没了翅膀不能飞翔,翅膀没了鸟这个载体也将毫无意义;二者同生共死,生命周期相互关联;
      • 前端中,父子组件如果生命周期一致可以用组合来表示,某子组件消失,会直接导致父组件消失
    • 依赖、关联、聚合、合成表现的都是类之间的关系
      • 关系强弱(由强到弱)
        • 合成(同生共死)>聚合(整体和部分的关系)>关联(关系对等)>依赖(依赖关系是具有偶然性的、临时性的、非常弱)

时序图(sequence)

  • 描述多组件协作关系
  • 角色Actor
    • 可以是人、系统
  • 对象Object
    • 提供操作的对象
  • 生命线LifeLine
    • 表示对象的存在时间
  • 控制焦点Focus of Control
    • 表示时间段用,对象在相应时间内的操作,用小矩形表示
  • 消息Message
    • 表示对象之间相互传递的信息
    • 消息种类
      • 同步消息(Synchronous Message)
        • 消息的发送者把消息传递给接收者后,然后停止自身活动,等待接收者返回消息
      • 异步消息(Asynchronus Message)
        • 消息的发送者把消息传递给接收者后,然后继续自身活动,不等待接收者返回消息
      • 返回消息(Return Message)
        • 表示消息从过程调用返回
      • 自关联消息(Self Message)
        • 表示方法的自身调用及一个对象的一个方法调用另外一个方法

活动图(activity)

  • 类似流程图
  • 描述流程用
  • 组成
    • 活动状态Activity
      • 可拆分的动作,例如请假,请假有审批和不审批两种
    • 动作状态Action
      • 不可拆分的动作,例如不审批
    • 动作流control flow
      • 动作之间的转换为动作流,用箭头表示
    • 开始节点Initial
      • 起点,只有一个
    • 结束点Final
      • 结束点,可以有多个
    • 分支Decision
      • 决策点,会产生分歧的地方,菱形表示
    • 分叉与汇合Fork and Join
      • 用来同步(控制流全部完成再执行下一步)多个并行的控制流
    • 泳道Partition
      • 划分活动图中的活动用
      • 可以理解为分组
  • 注意
    • 活动图目的在表达流程完整性而非活动细节
    • 活动图中的元素不需要考虑复用性
    • 如果出现了分叉点,就一定要有一个汇合点与之对应

用例图(use case)

  • 描述系统拥有哪些角色,每个角色拥有哪些功能(用例)
  • 一般用在需求分析阶段
  • 关系

    • 关联association

      • 单向箭头表示(角色指向用例)
      • 表示角色启动对应用例
      • 除了包含和扩展用例外,其余用例都有角色启动他
    • 包含include

      • 一般指两个用例之间的关系
      • 代表一个用例的行为包含了另外一个用例的行为,箭头指向为包含者指向被包含者
    • 扩展extend

      • 两个用例之间的关系
      • 用来描述一个用例是另外一个用例的增量扩展
      • 这个功能是非必须的功能,例如找回密码对部分用户来说并不是每次都用到的,所以他是一个在登录之上扩展的一个功能
    • 泛化generalize
      • 两个用例是一个继承关系,父用例一般为抽象用例,子用例为具体用例;例如预定是一个抽象用例,具体用例可为电话预定和网上预定

组件图(component)

  • 用来表示系统的模块化部分
  • 每个组件有暴露给外部用的接口(用圆球表示),和需要别的组件提供的接口(半圆表示),二者连接起来代表一方使用了另外一方提供的接口了
  • 例如下图,购物车组件提供了加入购物车接口,同时他也使用了库存系统的商品库存接口
  • 例如购物车依赖订单系统的结算接口

参考案例

  • 以下链接是一个常用uml图的demo源文件,可以使用Enterprise Architect打开
    demo.ea