Skip to content
难度基础(★)
建议时长45分钟

11.3.1 例题1:用例图与类图

用例图与类图组合题,是 UML 建模题里很典型的一类。用例图回答“系统对外提供什么功能”,类图回答“系统内部有哪些业务概念及关系”。考试通常会扣掉用例名、类名、扩展条件,让你从题干中提取。

本类题的分值结构

课程中的例题是在线销售学术出版物系统,题目结构很典型:

问题填空内容分值线索
问题 1用例图中 4 个用例名4 分
问题 2扩展用例的扩展条件4 分
问题 3类图中 7 个类名7 分

合计 15 分。可以看出,绝大多数分数不是考“画法”,而是考你能不能从题干中提取词语并放到图中正确位置。

先识别用例图

用例图填空优先找动词短语。题干里的“浏览或检索出版物”“添加到购物车”“注册”“登录”“结账”“选择收货地址”“选择付款方式”都属于系统功能,适合作为用例名。

题干表达用例候选说明
未注册客户可以浏览或检索出版物浏览/检索出版物动词 + 名词
将出版物添加到购物车添加出版物到购物车多个角色都可能使用,可抽成同一用例
注册客户登录之后可以结账登录、结账直接功能动词
从地址列表选择收货地址选择收货地址结账过程的一部分
支持信用卡或银行转账选择付款方式结账过程的一部分

做题时不要机械抄长句。长句往往要压缩成“动词 + 名词”的用例名。

include 与 extend 在题干中的信号

结账流程包含若干必走步骤,适合用 include。题干中的“结账操作具体流程如下”就是强信号:后面的选择收货地址、选择付款方式、确认提交订单等都是结账过程的一部分。

扩展关系通常由条件触发。课程例题里有两个典型句式:

题干条件扩展用例基本用例
如果没有地址信息,则可以添加新地址添加新地址选择收货地址
若没有付款方式,则可以添加新的付款方式添加新的付款方式选择付款方式

注意箭头方向:extend 箭头指向基本用例。扩展用例是条件满足才执行的可选行为。

mermaid
flowchart LR
  Checkout["结账"] -. "<<include>>" .-> Address["选择收货地址"]
  Checkout -. "<<include>>" .-> Pay["选择付款方式"]
  NewAddress["添加新地址"] -. "<<extend>>\n没有地址信息" .-> Address
  NewPay["添加新的付款方式"] -. "<<extend>>\n没有付款方式" .-> Pay

再识别类图

类图填空优先找名词。课程例题中,类名主要来自以下几类:

题干名词类图含义
学术出版物父类
论文、学术报告、讲座资料学术出版物的子类
客户、未注册客户、注册客户泛化关系
购物车存放待购买出版物
订单结账后生成,记录收货地址、付款方式、出版物
学术出版物目录维护出版物集合

当题干出现“包括 A、B、C”或“分为 A 和 B”时,经常对应泛化关系:

mermaid
classDiagram
  class AcademicPublication
  class Paper
  class AcademicReport
  class LectureMaterial
  AcademicPublication <|-- Paper
  AcademicPublication <|-- AcademicReport
  AcademicPublication <|-- LectureMaterial

“在线销售的学术出版物包括论文、学术报告、讲座资料”,语义就是“论文是一种学术出版物,学术报告是一种学术出版物,讲座资料是一种学术出版物”。

类名位置怎么判定

类名不是只找到词就完了,还要放到正确位置。可以借助关系定位:

图上关系填空判断
泛化箭头指向空位空位是父类
空位在泛化箭头尾部空位是子类
菱形在某个空位旁空位是整体
关联到订单且承载地址、付款方式空位可能是订单
与出版物集合存在整体-部分空位可能是目录/列表

课程中特别提醒:论文、学术报告、讲座资料这些子类顺序通常不强求;但父类位置不能填错。

用例规约怎么写

题目有时会让细化用例描述,也叫用例规约。基本结构:

项目内容
用例名称例如“购买饮料”“结账”
参与者使用该用例的外部角色
主要事件流正常情况下的步骤
备选事件流条件不满足、异常、可选流程

用例规约不是散文,要把题干流程压缩成清晰步骤。条件句放到备选事件流中。

做题步骤

  1. 读问题,先知道要补用例名、扩展条件还是类名。
  2. 圈题干动词短语,作为用例候选。
  3. 圈条件句,判断是不是 extend 的触发条件。
  4. 圈名词,作为类名候选。
  5. 看类图关系,把父类、子类、整体、部分放到正确位置。
  6. 最后检查答案是否直接来自题干或由题干合理压缩。

例题

单选
补用例图时,较稳妥的做法是:
单选
“如果没有地址信息,则可以添加新地址”更适合建模为:

自查要点

  1. 用例名为什么通常从动词短语中提取?
  2. “包括 A、B、C”和“分为 A、B”为什么常对应泛化?
  3. extend 的扩展条件通常在题干哪里出现?
  4. 类图填空为什么要同时看名词和关系位置?