
简介面向高校软件工程或相关专业学生的统一建模语言期末试题文档内容围绕UML核心考点展开既覆盖类图、顺序图、状态图、活动图等常用图形的应用又包含关联、聚合、继承、依赖等关系辨析并结合RUP阶段划分与部署图建模加以说明适合备考阶段用来查漏补缺与自测。文档为单个doc文件压缩包整体仅237KB内容紧凑完整试卷包含20道选择题以及基于“网上选课系统”的综合分析题题目覆盖统一建模语言概念、多重性、参与者、类图分层、动态建模和部署图等典型考点。资源在知识点解析的基础上配套试题可帮助读者先建立UML知识框架再通过实际案例和选项辨析强化理解检验掌握程度。已有715人浏览和学习该资源对于正在准备期末考试的读者来说是一份便于快速回顾重点、进行针对性练习的实用资料。1. 拿到一份「UML 期末试题(SDUT).doc」先别急着背题先拆考点期末前一周班里流传最广的材料往往是一份「UML 期末试题(SDUT).doc」。我见过不少同学拿到手就从头背一遍结果进考场发现原题一道没中白白浪费一个晚上。UML 这门课考的不是题目本身而是你对九种图、六种关系、四种可见性的掌握程度。一份旧试题真正的价值是帮你画出一张考点地图哪些题型稳定出现、哪类图判分最严、哪几个坑年年有人掉进去。这份材料适合两类人一类是临考冲刺想用旧题快速划定复习范围的同学另一类是准备系统架构师等考试、想把 UML 图论基础补扎实的从业者。下面我按拆解这类试题的习惯流程把它变成一套可以直接复现的复习方案——先拆卷子再攻三座图的大山最后用避坑清单收尾。2. SDUT 期末卷子的出题逻辑题型分布与知识点权重表拿到一份 .doc 旧试题第一件事不是看答案而是先拆卷子。一份旧题就是最廉价的考纲老师出题大概率延续前几年的大类和题型。SDUT 这类院校的 UML 期末多为闭卷笔试题型和考点分布相对稳定拆完之后复习顺序直接就能定下来。2.1 五种题型与常见分值区间UML 期末卷子基本跑不出下面这五类我把它们的分值区间、考查本质和优先级列成一张表方便你对照自己的卷子快速分类题型常见分值区间考查本质复习优先级选择题 / 判断题15~20 分概念辨析、图元名称、关系类型中填空题10~15 分术语、可见性、关系名、图元名高识图改错题15~20 分读懂类图/用例图/顺序图并找错高作图题25~35 分用例图、类图、顺序图的绘制高综合设计题15~25 分从需求描述到模型再到代码骨架高不同院校分值会变但权重规律一致作图题和综合题的比重永远大于概念题。原因不复杂——UML 课程考核的目标是建模输出能力不是背定义。识图题考你读模型作图题考你建模型综合题考你从需求到模型再到代码的完整链路。我一般建议按这个逻辑分配精力概念题只要做到不丢分不必花整块时间背作图题和综合题才是拉开差距的地方。准备系统架构师考试时我也沿用这套权重判断因为那里的 UML 考点同样集中在类图关系和用例图边界上。2.2 必考知识点类图、用例图、顺序图拆过几份不同年份的 UML 试卷之后核心考点非常集中类图几乎次次出现用例图和顺序图轮着做大题。这三张图共同构成了建模能力的三个侧面——结构建模、功能建模和行为建模。类图考的是六种关系箭头、可见性、多重性、抽象类和接口的标记。这是期末考试和系统架构师考试统一的高频区尤其是箭头含义选择题里考一遍作图题里又考一遍。用例图考的是参与者判断、用例命名和 include/extend 的方向。顺序图考的是生命线、激活条以及同步消息、异步消息、返回消息的区分。需要提醒的是23 种设计模式和 UML 类图经常在综合题里绑定出现。常见做法是拿一个设计模式当背景让你画出类图或补全类图比如观察者模式、策略模式、工厂方法模式都是高频背景。复习时不求背全 23 种把策略模式里 Context 和 Strategy 是什么关系观察者模式里 Subject 和 Observer 是什么关系这类常见骨架记熟综合题就不会慌。2.3 用一份旧试题倒推整门课五步频次法把旧试题变成复习地图我习惯用五步频次法全程不需要看懂答案第一遍通读题目把每道题对应的知识点写到题号旁边比如类图-泛化用例图-include。这一步不管会不会做只做标记。建一张频次表把图名、关系名、概念名分别计数。比如某份卷子里类图出现 3 次用例图出现 2 次顺序图出现 2 次状态图 0 次。按频次从高到低排序前 5 个知识点就是核心考点直接决定复习顺序。把连续多年重复出现的题型标红。比如近三年都有补全类图的可见性和多重性这个点就是稳定的送分题和送命题。拿频次表和教材目录对照频次高的章节精读加刷题频次低的章节只看概念。不要九种图均分时间这是最常见的备考误判。举个例子如果拆出来发现类图 3 道、用例图 2 道、顺序图 2 道、状态图 0 道那时间分配就应该是 5:2:3而不是从状态图开始啃。旧试题的价值就在这儿——它帮你在信息不足的情况下用最低成本判断老师的出题偏好。注意这里说的是判断不是押题复习范围还是要覆盖全课程只是优先级要拉开。3. 类图把箭头含义和关系强弱彻底分清判分最严的部分类图是 UML 期末里最绕不开的图选择题考、填空题考、作图题考、综合题还考。大多数人在这张图上的问题不是不会画而是六种关系箭头的方向、虚实、实心空心在考场上会瞬间失忆。改卷时这里的标准也最严关系类型画错一条连线基本就没有分了。3.1 六种关系的箭头画法与判分标准想要彻底分清这六种关系靠死记继承是三角、依赖是虚线不够要用一张表把图形、方向、语义和易错点放在一起对照关系图形表示箭头方向语义常见错误泛化继承空心三角 实线子类指向父类is-a三角压错端实现空心三角 虚线实现类指向接口接口约定画成实线关联实线可带箭头可不带双向或单向长期持有的关系多加菱形聚合空心菱形 实线整体指向部分has-a弱关系菱形画实心组合实心菱形 实线整体指向部分强 has-a同生共死菱形画空心依赖虚线 箭头使用者指向被用者临时使用画成实线判分的通常规则是关系类型错整条连线不给分方向错只给一半分或者不给分漏掉多重性说明扣细节分。所以把关系认准比把图画得漂亮有用得多。每年改卷都能看到把泛化画成普通箭头、把组合菱形画成空心的同学这类错大多发生在时间不够的时候属于会但慌的丢分。我自己的记忆口诀很简单子认父实线三角是泛化虚线三角是实现实心菱形同生共死空心菱形各自安好虚线箭头是临时依赖。考前把六种关系默画三遍比多看一遍课件管用。3.2 类图转代码UML 到 Java 的映射规则期末考试里常见两类题一类给你一张类图让你写出代码骨架另一类给你一段代码让你画出类图。方向相反底层却是同一套映射关系。先记清映射表再动手写UML 元素Java 代码落点判断线索泛化extends子类 is-a 父类实现implements类实现接口组合成员变量 new 初始化部分随整体创建销毁聚合成员变量 构造器/Setter 传入部分可以独立存在依赖方法局部变量 / 方法参数只在方法内使用关联成员变量长期持有生命周期独立可见性 -private属性私有可见性 public属性公有可见性 #protected受保护成员可见性 ~默认包内可见package-private下面这段 Java 骨架就是从一个典型类图映射来的里面集中了泛化、实现、组合、聚合和依赖五种关系// 由类图映射出的骨架代码重点看关系如何落地 public interface Flyable { void fly(); } public abstract class Animal { protected int age; // # age : int对应可见性 # public Animal(int age) { this.age age; } public abstract void speak(); } public class Bird extends Animal implements Flyable { private Wing leftWing; // 组合实心菱形随 Bird 创建 private ListFeather feathers; // 聚合可从外部传入独立存在 public Bird(int age, ListFeather feathers) { super(age); this.leftWing new Wing(); // 组合的典型初始化方式 this.feathers feathers; // 聚合的典型传入方式 } Override public void speak() { System.out.println(tweet); } Override public void fly() { Wind w checkWeather(); // 依赖局部变量不持久持有 } }这段代码的逻辑核心在于组合和聚合的区分。组合意味着部分随整体一起生死代码里表现为成员变量在构造器内部用 new 创建聚合意味着部分可以独立生存代码里表现为由外部传入比如ListFeather是外面塞进来的。这两种关系如果画反在综合题里就是整道大题的主要扣分点。参数层面的注意点有三个第一extends和implements分别对应泛化和实现改卷老师一眼扫过去看的就是这里第二可见性符号必须映射准确#是 protected、-是 private、是 public漏掉会在代码题里扣分第三组合关系里new的位置和聚合关系里构造器传入的位置是判分特征反过来画图时看到代码里有new就画实心菱形看到外部传入就画空心菱形。3.3 类图题易错点可见性、返回值与多重性类图作图题里最冤的丢分不是关系画错而是小标注写漏。三个点年年有人栽第一个是可见性。属性前面必须带-、、#或~很多同学画着画着就只写属性名。改卷时可见性占据标注完整度的分数漏一个就是稳定扣分。第二个是方法返回值。方法签名要写返回类型没有返回值也要写 void只写方法名等于没写完。第三个是多重性。关联两端的数字表达的是基数比如一个班级有多个学生班级端写 1学生端写 1..*很多人把这个方向写反。抽象类和接口的标记也是高频失分点。抽象类通常用斜体类名或{abstract}标注接口用interface标注泛化用实线三角实现用虚线三角这两种三角画反的概率非常高。另外综合题如果以设计模式为背景识别模式能大幅降低画图难度比如策略模式里 Context 聚合 StrategyConcreteStrategy 泛化 Strategy观察者模式里 Subject 关联 Observer这两个模式的关系骨架烂熟于心之后遇到同类题基本就是填空题。4. 用例图和顺序图两座大题堡垒怎么攻除了类图之外期末大题最爱用例图和顺序图。这两张图考察的是从场景描述还原模型的能力。读题不细画出来的图结构再完整也会被扣分。它们的共同难点不在图元而在素材判断谁是参与者、哪个是包含、哪个是扩展、消息先发还是后发。4.1 用例图参与者、用例和 include/extend 的方向用例图三件套参与者、用例、关系。参与者是系统外部与系统交互的角色可以是人、外部系统也可以是定时器这类非人角色。一个常见判断标准是只有直接向系统发起请求或接收系统输出的角色才算参与者。比如图书管理员代读者办理借书当前场景下参与者是管理员读者的角色并不直接和系统交互。用例必须用动词短语命名比如借书查询余额不能只写图书这种名词。判分看三点参与者是否画在系统边界外、用例是否在边界内、include 和 extend 的方向对不对。include 的方向是从基础用例指向被包含用例语义是主流程必须调用它不调用就跑不下去extend 的方向是从扩展用例指向基础用例语义是基础流程可以正常走完特定条件下才额外插一段。提示这两个方向是期末翻车重灾区。记不住的时候就问自己一句这个是必须还是可选必须的用 include可选的用 extend。举例更直观。办借书这个主用例每次都要先验证读者身份验证就是被包含用例箭头从办理借书指向验证读者身份如果读者有逾期未还的图书系统临时拦截借书这就是扩展用例箭头从拦截借书指向办理借书。方向反了整道作图题基本丢一半分。4.2 顺序图生命线、激活条与消息类型顺序图展示的是对象之间消息的时间顺序核心要素有三样生命线、激活条、消息箭头。生命线是一条垂直虚线表示对象在一段时间内存在激活条是生命线上的长矩形表示对象正在处理消息的时间范围消息箭头分三种——实线实心箭头表示同步调用调用方要等结果实线开放箭头表示异步消息发完不等虚线开放箭头表示返回消息。判分时最常看的两个点消息顺序是否正确、激活条是否覆盖处理时间。时间方向永远是自上而下消息编号必须和图形位置一致。读题的时候把动词按时间顺序梳理出来比如用户点击登录→登录控制器验证账号→返回结果→页面跳转这个序列就是顺序图的消息顺序。另一个高频错误是消息类型画错。只要涉及请求并等待响应就是同步消息实心箭头如果题干出现发送通知异步回调这类词对应的就是开放箭头。返回消息必须用虚线很多同学顺手画成实线一张图里好几个箭头类型是错的。4.3 画图顺序与读题技巧从题干名词到消息序列画用例图和顺序图我习惯走一条固定流程能避免绝大多数低级错误通读题干圈出名词这些是候选参与者或候选对象。圈出动词短语这些是候选用例或候选消息。圈出如果可选同时这类限定词这些是扩展点或分支。先画主干流程也就是主成功场景再补扩展流程。图元画完后逐根连线检查方向和标注不要只看整体结构。以自助售票机为例走一遍题干描述乘客选择车次、支付、出票支付失败可重试。名词有乘客、车次、支付、车票动词有选择、支付、出票。用例图里参与者是乘客用例是选择车次支付车票出票选择车次必然包含查询余票所以查询余票是被包含用例支付失败重试是可选分支画成扩展用例指向支付车票。顺序图里对象是界面、订单控制器、支付网关、车次库存。消息序列依次是乘客提交所选车次、控制器查询余票、库存返回可用状态、控制器发起支付、支付网关返回成功、控制器通知出票、票务模块返回结果。把这条序列写出来再落图比边画边想稳得多。5. 避坑UML 考场上最容易丢分的 5 个坑2024 血泪版改卷打分这件事多少有点玄学但丢分从来不玄学。以下 5 个坑是我翻过车、也看别人反复踩过的考前逐条过一遍能拦住大部分冤分。5.1 泛化箭头画反三角到底压在哪一端现象画泛化关系时空心三角压到了子类这一端箭头朝向父类。原因把继承理解成了从父类流向子类的数据传递画图时顺着脑补的方向就落了笔。解决记住子认父三个字。箭头永远从子类指向父类空心三角压在父类旁边。画完之后默念一句鸟 is-a 动物三角放在动物这边。实现关系同理三角压在接口那一端。5.2 include 和 extend 方向搞反两个尖括号引起的惨案现象用例图里extend箭头从基础用例指向扩展用例include箭头从被包含用例指向主用例。原因只记住了扩展是加功能、包含是借功能没记住箭头的方向约定。解决include 箭头从主用例指向被包含用例因为主用例依赖被包含用例的功能extend 箭头从扩展用例指向基础用例因为扩展用例是插队进来的分支。考前各举一个例子默写一遍比背定义管用。比如登录时验证密码是 include满足条件时发送验证码是 extend。5.3 顺序图消息序列错位画得好看不如画得对现象消息编号顺序正确但对应箭头在垂直方向上的位置和编号不一致或者激活条没有覆盖消息处理的时间段。原因先画完再编号编号时只按照头脑里的逻辑顺序没有回到图面去调整垂直位置。解决画图前先在草稿上列出消息序列清单逐条编号再按编号从上到下排布箭头。激活条要从收到消息开始画到发出返回消息为止宁可稍长不要偏短。5.4 可见性和多重性集体跑丢图纸完整却稳定扣分现象类图里属性只写名称没有-关联两端没有写 1、0..* 这类基数用例图边界外混进了系统内的按钮和页面名称。原因时间紧张时把标注当作加分项认为画完主体就能拿分于是选择性跳过细节。解决把可见性、多重性、参与者边界当成必答题而不是加分题。改卷时这些是图纸完整度的重要打分依据漏一项就是实打实扣一分。整套图画完专门留两分钟扫一遍标注。5.5 状态图和活动图混用思维惯性常常在这翻车现象状态图里出现泳道和判断分支活动图里出现状态迁移和事件触发。原因两图都涉及流程考试紧张时按第一感觉直接套用忽略了题目真正关心的对象。解决拿到题先判断对象。题目问的是这个对象有哪些状态、什么事件导致迁移用状态图题目问的是整个业务流程怎么走、谁负责哪一步用活动图。另一个区分点是图元状态图以状态框和迁移箭头为主活动图以活动节点和泳道为主。综合题里的设计模式背景也容易在这块犯错记住接口用虚线三角、抽象类用实线三角混用就是白丢分。6. 考前三天用「UML 期末试题(SDUT).doc」做一次对照式复盘旧试题到了考前三天用法要变不再逐题看而是做一次对照式复盘。复盘的核心不是我能不能做出这道题而是我能不能说出这道题在考什么、我上次错在哪一类。6.1 三步对照复盘法第一步限时作答。把旧试题当真题九十分钟内完整做一遍全程不翻书。做不完也先停笔真实考场就是这样限时的意义是暴露时间分配问题。第二步对答案时给每道题标考点。比如选择题标泛化方向作图题标组合 vs 聚合顺序题标异步消息。这一步的价值是把抽象的复习 UML变成具体的复习关系方向。第三步把做错的题归成三类关系方向类、标注缺失类、读题偏差类。归类后看哪类占比最高。如果错题全是标注缺失说明知识点没问题是习惯问题考前专门盯标注就行如果错题集中在关系方向回到第 3 章把六种关系重新默画两遍。6.2 考前一夜的自查清单我习惯在考前一晚用下面这张表做最后一遍自查每条过完打一个勾检查项自查内容过关标准六种关系箭头方向、虚实线、菱形实心空心1 分钟内默画无错可见性-#~的含义能说出对应代码关键字include/extend方向和适用场景能各举一例说明顺序图消息同步、异步、返回三种箭头看到句子能判断类型多重性1、0..、1..的语义两秒内给出答案状态图 vs 活动图各自适用场景与图元一句话能区分清楚最后分享一个我自己的考前习惯把六种箭头默画一遍边画边小声念口诀——子认父、实线三角是泛化虚线三角是实现实心菱形同生共死空心菱形各自安好虚线箭头是临时依赖。这个口诀看着玄学但每次都能让我避开最蠢的箭头错误。考前最怕的不是不会而是明明会的点因为手忙脚乱丢掉那才是最贵的后悔药。希望你也能靠这份旧试题把 UML 期末稳稳拿下。本文还有配套的精品资源点击获取