要点:

  • UML画图 40% ZJH:
    • 用例图:
      • 命名规范
      • 用例之间的关系(include、extend,没有把握的时候不标出来)
      • 椭圆
    • 类图:
      • 属性、方法 5 个以上
      • 可见性要表达出来(- +)
      • 继承关系中,子类无需再重复写继承的字段
      • 框框规范,分三层
      • 最好写英文,可以全部都缩写
      • 关联关系的数量可以不标出来(虚线)
      • 整体部分关系,用聚合就行了
    • 活动图:
      • 5 个活动以上
      • 画主要的(登录之类的就算了)
    • 状态图:
      • 状态实体只需要写状态名,内部不需要内容
      • 状态实体圆角矩形
    • 时序图:
      • 返回可以不用画

UML

Unified Modeling Language,统一建模语言。

用例图

好多概念,用例,用例实例,文字描述序列,不想管= =
只讲画用例图的要点。

基本认识

用例图有活动和活动参与者——角色
image.png

基本规范要求

  1. 命名格式:使用主动语句:主语 + 宾语。

image.png

  1. 命名用词:慎用弱动词弱名词。因为会掩盖真正的业务。

image.png

  1. 有意义的目标:

image.png

  1. 从用户的角度描述:站在执行者的角度。用例图的执行者是用户,所以也可以说站在用户的角度。用例图展示的是用户使用系统。

image.png

用例之间的关系

包括关联、泛化、包含和扩展。
image.png

包含和扩展的区别

image.png
包含关系是执行基本用例时,必须执行其中一个子用例。
扩展关系是执行基本用例时,扩展用例可择的,可执行也可不执行。

用例文档描述

要求:

  1. 说人话。
  2. 使用主动语句,执行者为主语。
  3. 是一个交互过程。
  4. 每一句都要朝目标迈进,避免琐碎步骤的描述。
  5. 连贯地描述主要事件流,循环跟着描述出来,分支放在扩展路径。
  6. 不涉及界面细节。

例子:
ATM取款案例1
Use Case:取款
Actor:储户
主事件流:
1、储户插入ATM卡,并键入密码;
2、储户按“取款”按钮,并键入取款数目;
3、储户取走现金、ATM卡并拿走收据;
4、储户离开。
问题:只描述了参与者的动作序列,而没有描述系统的行为。
修改后:
主事件流:
1、通过读卡机,储户插入ATM卡;
2、ATM系统从卡上读取银行ID、帐号、加密密码、并用主银行系统验证银行ID和帐号;
3、储户输入密码,ATM系统根据上面读出的卡上加密密码,对密码进行验证;
4、储户按“快速取款”按钮,并键入取款数量,取款数量应该是100的倍数;
5、ATM系统通知主银行系统,传递储户帐号和取款数量,并接收返回的确认信息和储户帐户余额;
6、ATM系统输出现金、ATM卡和显示帐户余额的收据;
7、ATM系统记录事务到日志文件;

类图

画过都知道,不说了= =
类与类之间有 5 种关系。

  1. 关联。
  2. 组合。
  3. 聚合。
  4. 继承。
  5. 实现。

    时序图

    时序图也叫顺序图,它显示对象之间的交互,这些对象是按时间顺序排列的,重点描述对象之间传递消息的时间顺序。
    image.png
    两个维度:垂直线代表生命线,水平线代表时间线。
    **1.findClient() 表示 Clerk 调用 :CheckoutMgr 中的方法!!!

    活动图

    活动图是特殊的状态图,描述系统的工作流程并发行为。

普通活动图


image.png
普通活动图一般有起始状态,活动,分支,分叉与汇合,结束状态。

  • 只能有一个起始状态,可以有多个结束状态。
  • 分支和分叉的区别:分支是有条件的,可以有多个分支,但是每次只能走其中一个分支。分叉是无条件的,可以有多个分叉,但是每次都会走所有分叉(并发执行),并在汇合点汇合。
  • 分叉情形:

image.png

泳道图

image.png
根据职责进行划分,不是根据类!

状态图

状态图描述对象在事件的驱动下,发生的状态变化
状态图描述一个对象在其生命期内响应事件所经历的状态序列,以及对这些事件所做出的反应。

事件

事件分为 4 大类,调用事件,变化事件,事件事件和信号事件。

1、调用事件

格式:eventName(arg1, arg2)
image.png
Manual 状态下调用 startAutopilot(normal) 转换为 Automatic 状态。

2、变化事件

格式:when(条件)/action
image.png
当温度超过 120 就调用 alarm() 发出警报。

3、时间事件

格式:

  • when(时间条件)/action
  • after(时间条件)/action

image.png

4、信号事件

与调用事件相似,表示格式一样,区别在于信号事件是异步事件,调用事件一般是同步事件。

状态

保留关键字:entry/进入动作、exit/退出动作、do/活动(活动不中断,活动序列会中断)
image.png

状态转换

image.png