软件设计师“面向对象设计”真题考点分析——求三连
一、考点分值占比与趋势分析
综合知识历年考察统计
年份 | 考题数 | 分值 | 占比 | 考察重点 |
---|---|---|---|---|
2018 | 3 | 3 | 4% | 继承类型、设计原则 |
2019 | 4 | 4 | 5.3% | 多态实现、类关系 |
2020 | 5 | 5 | 6.7% | 设计模式应用、接口隔离 |
2021 | 3 | 3 | 4% | 消息通信、封装特性 |
2022 | 6 | 6 | 8% | 开闭原则、组合模式 |
2023 | 5 | 5 | 6.7% | 模板方法、适配器模式 |
2024 | 4 | 4 | 5.3% | 单一职责、里氏替换 |
案例题考察统计
年份 | 题型 | 分值 | 考察形式 |
---|---|---|---|
2018 | 类图设计 | 15 | UML建模 |
2019 | 设计模式 | 15 | 模式选择 |
2020 | 接口设计 | 15 | 原则应用 |
2021 | 架构重构 | 15 | 模式组合 |
2022 | 组件交互 | 15 | 时序图 |
2023 | 微服务设计 | 15 | 类职责划分 |
2024 | 重构策略 | 15 | 模式优化 |
趋势分析:近三年综合知识考查更注重设计原则与模式的结合应用(如2022年开闭原则与组合模式的综合题),案例题呈现从单一模式向复合模式、从类图向交互图发展的趋势。分布式系统设计(如微服务)成为新热点。
二、真题考点深入挖掘
从知识库真题可见以下命题规律:
- 继承机制:反复考查继承类型的辨析(如slice1),特别关注非常规继承形式(如分布式继承)的排除
- 设计阶段活动:强调设计阶段的具体任务(slice2),常与分析阶段、实现阶段的活动形成对比干扰项
- 设计原则应用:通过完形填空形式(slice3)考查"开闭原则"、"里氏替换"等原则的实际应用
- 对象通信机制:结合具体场景(slice4学生管理系统)考查消息传递机制的实现
- 模式复用性:高频出现设计模式的选择与组合(slice5),特别关注通用性(general)与特定性(specific)的平衡
典型命题组合:
- 继承类型(单重/多重)+ 设计原则(接口隔离)
- 消息传递机制 + 封装特性
- 设计模式(如策略模式)+ 开闭原则
- 类关系(组合/聚合) + UML表示法
三、WWWH简述
是什么(What)
面向对象设计是通过抽象、封装、继承、多态等机制,将系统分解为相互作用的对象集合的过程。包含类结构设计(如slice2中的类识别)、行为设计(操作定义)、关系设计(继承/组合)三大维度。
为什么(Why)
- 提高软件复用性(如slice3的reusable设计)
- 增强系统扩展性(通过继承和多态)
- 降低模块耦合度(消息传递机制)
- 提高问题域映射度(对象直接对应现实实体)
怎么样(How)
-
遵循SOLID原则:
- 单一职责(如slice4的封装)
- 开闭原则(slice5的general设计)
- 里氏替换(继承体系设计)
- 接口隔离(slice2的接口定义)
- 依赖倒置(高层模块设计)
-
采用GRASP模式:
- 信息专家模式
- 创建者模式
- 低耦合/高内聚
如何做(How to)
- 识别候选类(如slice2的对象认定)
- 定义类层次结构(继承体系)
- 分配类职责(消息传递设计)
- 应用设计模式(如slice5的模式复用)
- 验证设计质量(通过时序图/协作图)
四、真题演练与解析
例题1(slice1)
题目:不能作为继承类型的是?
解析:
- 排除标准继承类型:单重©、多重(A)属于语法层面的继承
- 层次继承(D)指父类作为基础类被多次继承
- 分布式继承(B)是干扰项,实际属于系统架构范畴
- 正确答案B
例题2(slice2)
题目:面向对象设计的主要活动?
解析:
- 区分分析与设计阶段:分析阶段侧重对象认定,设计阶段侧重类结构
- 选项D包含定义属性、服务、关系等设计阶段典型任务
- 排除选项C中的"确定操作"属于分析阶段
- 正确答案D
例题3(slice4)
题目:对象间通信机制?
解析:
- 消息传递©是对象交互的唯一方式
- 排除封装(A)是数据隐藏机制
- 多态(B)是行为多样性机制
- 正确答案C
五、极简备考笔记
面向对象设计四要素
- 抽象:类/接口定义(slice2类识别)
- 封装:数据+行为绑定(slice4属性封装)
- 继承:单重©/多重(A)(slice1类型辨析)
- 多态:接口的多种实现
五大设计原则(SOLID)
- 单一职责:类只做一件事
- 开闭原则:扩展开放,修改关闭(slice5通用设计)
- 里氏替换:子类可替换父类
- 接口隔离:细粒度接口
- 依赖倒置:依赖抽象而非实现
高频设计模式
✓ 策略模式:算法族封装
✓ 观察者模式:发布-订阅
✓ 适配器模式:接口转换
✓ 工厂模式:对象创建封装
六、考点记忆顺口溜
继承类型要记牢(继承机制)
分布继承不能要(排除非常规)
认定对象第一步(设计流程)
定义服务关系包(类设计要素)
消息传递对象聊(通信机制)
通用设计是绝招(general原则)
模式复用效率高(设计模式)
新手懵逼老手笑(经验差异)
七、多角度解答
- 知识体系角度:
- 位于面向对象方法学核心位置
- 上游承接需求分析(用例模型)
- 下游指导实现(类编码)
- 横向关联UML建模、设计模式
- 命题意图角度:
- 考查面向对象本质特征的理解(如slice1排除非继承)
- 验证设计原则的实际应用能力(如slice5的通用性选择)
- 区分不同开发阶段的任务(如slice2的设计阶段活动)
- 解题技巧角度:
- 继承题先排除架构相关选项
- 设计活动题注意动词差异(“识别"vs"认定”)
- 完形填空注意上下文语义线索(如slice3的future提示选general)
- 错误防范角度:
- 混淆继承与接口实现(Java中的implements)
- 误将消息传递等同于方法调用
- 过度设计导致违反KISS原则
- 忽视设计模式的适用场景