📌 本文参考侯爱民、欧阳骥、胡传福编著的《面向对象分析与设计(UML)(第2版·题库版)》课后习题与知识点,系统整理了面向对象方法、UML基础、用例图、类图、包与组件、设计模式等关键内容,以简答题形式呈现。所有笔记均来自课本知识梳理与课堂总结,适合期末复习与面试准备,希望能帮助大家快速掌握UML与面向对象设计的核心要点。
一、🔍 面向对象概述
1.1 结构化方法与面向对象方法的对比
📸笔记页:结构化vs面向对象

|
核心 |
算法与步骤 |
对象与类 |
|
数据与操作 |
分离 |
封装一体 |
|
复用扩展性 |
差 |
强 |
|
适用系统 |
需求稳定型 |
需求多变的复杂系统 |
|
可视化建模 |
较弱 |
强(UML) |
一句话总结:结构化方法重步骤,面向对象方法重实体,UML是面向对象建模的标准语言。
1.2 面向对象的六大基本概念
📐核心公式(Peter Coad & Edward Yourdon): 面向对象 = 对象 + 类 + 继承 + 消息通信
📸笔记页:面向对象六大基本概念

| 对象 | 系统基本单位,由静态属性与动态行为构成 |
| 类 | 具有相同属性和行为的对象的抽象模板 |
| 封装 | 将属性与行为结合为独立单元,隐藏内部细节 |
| 继承 | 子类复用父类全部属性与行为 |
| 多态 | 同一消息被不同对象接收时产生不同响应(重载/覆盖) |
| 消息通信 | 对象间通过发送含对象名、操作、参数的消息请求服务 |
关系辨析:
-
对象 vs 类:类是抽象模具,对象是实例化铸件
-
封装 vs 信息隐藏:信息隐藏是封装的核心内涵
1.3 面向对象设计的六大基本原则
📸笔记页:六大原则笔记

| 开放封闭原则(OCP) | 对扩展开放,对修改关闭 |
| 单一职责原则(SRP) | 一个类只负责一项职责 |
| 依赖倒置原则(DIP) | 依赖抽象,不依赖具体实现 |
| 里氏替换原则(LSP) | 子类对象可替换父类对象 |
| 迪米特法则(LoD) | 类只与直接朋友通信 |
| 接口隔离原则(ISP) | 使用多个专用接口,避免臃肿接口 |
✅ 这六条原则是代码设计的“尺子”,写代码前先问问自己:当前设计是否违反了其中某一条?
二、📐 统一建模语言 UML 概述
2.1 UML 概念模型的三大组成部分
📸笔记页:UML架构图


一、基本构造块(UML的基础建模元素)
-
事物(4类):
-
结构事物:模型的静态名词(类、接口、用例、组件)
-
行为事物:模型的动态动词(交互、状态机、活动)
-
分组事物:模型的组织单元(核心为包)
-
注释事物:模型的解释说明(核心为注解)
-
-
关系(4种):
-
依赖:表示使用关系
-
关联:表示类与类的连接交互
-
泛化:表示继承关系
-
实现:表示类与接口的实现关系
-
-
图(常用7种):
-
用例图 → 描述系统功能需求
-
类图 → 描述系统静态结构
-
顺序图 → 描述对象交互时序
-
协作图(通信图)→ 侧重对象连接结构与消息传递
-
状态图 → 描述对象生命周期
-
活动图 → 描述业务/操作流程
-
部署图 → 描述系统物理部署结构
-
二、语义规则(规范UML元素的使用)
5个核心方面:名字、作用域、可见性、完整性、执行。保证模型的合法性与一致性。
三、公共机制(增强UML的灵活性与可扩展性)
4部分构成:规格说明、修饰、通用划分、扩展机制(构造型/标记值/约束)
2.2 UML 核心图对比(6种常用图)
| 用例图 | 描述系统功能需求 | 需求分析 |
| 类图 | 描述系统静态结构 | 概要设计 |
| 顺序图 | 描述对象交互时序 | 详细设计 |
| 协作图 | 侧重对象连接与消息传递 | 详细设计 |
| 状态图 | 描述对象生命周期状态变化 | 详细设计 |
| 活动图 | 描述业务/操作流程 | 业务建模 |
三、📋用例图详解
3.1 用例的核心定义
简答:用例是从参与者视角描述的系统功能单元,核心是用例与参与者的交互行为,用于表达系统的功能需求,与具体实现无关。
3.2 用例描述的组成
简答:用例描述的核心组成包括:
-
用例名
-
参与者
-
前置条件
-
后置条件
-
主事件流
-
子事件流
3.3 用例图、用例模型、用例建模的关系
📸笔记页:用例笔记

| 用例图 | 可视化表达,由参与者、用例、关系、系统边界组成 |
| 用例模型 | 用例图 + 用例描述,是系统功能需求的抽象模型 |
| 用例建模 | 创建用例模型的过程,用于梳理系统边界、明确功能需求 |
3.4 用例之间的三种关系
📸笔记页:用例笔记

| 包含(include) | 基本用例执行时,包含用例必定执行 | 必须执行,用于复用公共流程 |
| 扩展(extend) | 为基本用例补充额外功能,受扩展点条件约束 | 可选执行,条件满足才触发 |
| 泛化(generalization) | 子用例继承父用例,可覆盖父用例功能 | 一般-特殊继承关系,子用例可单独执行 |
核心区别:包含是“必定执行”,扩展是“可选执行”,泛化是“继承关系”。
四、🏛️类图与包/组件
4.1 类的属性描述
简答:UML中类的属性描述标准格式为:
text
[可见性] 属性名 [: 类型] [多重性] [=初始值] [(约束特性)]
核心成分:
-
可见性:+(public)、#(protected)、-(private)
-
属性名:标识属性的名称
-
类型:属性的数据类型
-
多重性:属性实例的数量范围
-
初始值:属性的默认取值
-
约束特性:附加规则说明(如只读)
示例:+ origin: Point(public可见性,属性名origin,类型Point)
4.2 类的操作描述
简答:UML中类的操作描述标准格式为:
text
[可见性] 操作名 [(参数列表)] [: 返回类型] [(约束特性)]
核心成分:
-
可见性:控制操作的访问权限
-
操作名:标识操作的名称
-
参数列表:操作的输入参数(含类型)
-
返回类型:操作执行后的返回值类型
-
约束特性:附加规则说明(如异常)
示例:+ move()(public可见性,操作名move,无参数,无返回值)
📸笔记页:属性与操作格式笔记



4.3 包(Package)与组件(Component)
📸笔记页:包与组件对比笔记

简答:
| 定义 | 分组机制,聚拢关联模型元素 | 软件系统部署的基本单元 |
| 组成 | 类、接口、子包等 | 供给接口、需求接口、内部实现 |
| 作用 | 简化模型,划分逻辑模块 | 描述物理架构,独立部署替换 |
| 关系 | 依赖、泛化 | 依赖、实现、组装、泛化 |
| 层面 | 逻辑层面(开发阶段) | 物理层面(部署阶段) |
核心区别:包是逻辑层面的分组机制,组件是物理层面的部署单元。
五、⚙️设计模式简析(抽象工厂 & 访问者)
5.1 🏭抽象工厂模式(创建型)
简答:
四大角色:
抽象工厂:声明一族产品的创建方法
具体工厂:实现接口,生产同一产品族全部产品
抽象产品:定义某类产品公共规范
具体产品:产品具体实现,由对应具体工厂产出
优点:保证同产品族产品配套,新增产品族遵循开闭原则 缺点:新增产品等级时,所有工厂类都要修改 适用场景:需要成套、一组相关联产品,存在多个产品族
5.2 🧳访问者模式(行为型)
简答:
五大角色:
抽象访问者:为每类元素定义访问方法
具体访问者:实现各类元素的具体操作
抽象元素:提供 accept() 方法接收访问者
具体元素:实现 accept(),传入访问者
对象结构:保存全部元素,遍历元素供访问
优点:新增操作只需新增访问者,不用改动元素类;同类操作集中在访问者 缺点:新增元素种类困难,全部访问者都要补充方法 适用场景:元素结构固定,经常新增操作
📸笔记页:抽象工厂&访问者笔记


六、🎓心得体会(复习建议)
通过整理这本教材的笔记,我有几点深刻体会:
理解比死记更重要:UML的包含与扩展关系,光背定义不够,最好画几张用例图才能真正区分“必定执行”与“可选执行”。
设计模式要结合类图学:只看文字很难体会访问者模式的“双重分派”机制,画一遍类图就明白了。
六大原则是代码设计的“尺子”:每当设计一个类,想想它是否违背了单一职责、是否需要依赖抽象而非具体。
包与组件不要混淆:记住“包是逻辑分组(开发时),组件是物理部署(运行时)”,这个区别面试经常问。
建议你也动手画一画用例图、类图,用 StarUML 或 Draw.io 实践一下,效果会更好。期末考试前把这份简答题背熟,基本能覆盖 UML 与面向对象的核心考点。
七、📚 参考文献
侯爱民, 欧阳骥, 胡传福. 面向对象分析与设计(UML)(第2版·题库版)[M]. 北京: 清华大学出版社, 2021.
本书是清华大学出版社“计算机系列教材”之一,2021年12月第2版。全书共524页,配套有完整的题库系统,含填空题142题、选择题214题、判断题110题、简答题123题、简单分析题66题,合计655题。本书系统介绍了面向对象技术的基本概念、方法和语言,全面介绍了UML的构成、视图、模型元素、图以及公共机制等核心知识,并重点介绍了UML各种图模型的建模技术与应用,同时涵盖了软件设计模式、Rational统一过程、数据建模等相关内容,适合计算机、软件工程专业学生使用。
谭云杰. 大象——thinking in UML[M]. 2版. 北京: 中国水利水电出版社, 2012.
UML官方文档. OMG UML Specification[EB/OL]. About the Unified Modeling Language Specification Version 2.5.1
课堂笔记及教师PPT课件
如果本文对你有帮助,欢迎 点赞 👍 + 收藏 ⭐,你的支持是我持续分享的动力。今天在学院公众号看到一篇考研推广推文,好多熟悉的学姐,其中有一个学姐的观点给我带来一点启发,分享给大家,胜兵先胜而后求战,败兵先战而后求胜,行动是打破焦虑的最好方法。
💾 资源下载:本文完整笔记的 Word 版(《UML与面向对象设计简答题整理(背诵版)》)已上传至 CSDN 资源,欢迎免费下载:点击下载。
🔗下载链接:https://download.csdn.net/download/2601_95769388/92934725


