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

10.2 面向对象分析

面向对象分析 OOA 的目标,是获得对应用问题的理解。它处在“需求理解和问题建模”阶段,重点不是写代码,而是从业务需求中识别对象、组织对象、描述对象之间的相互作用,并定义基于对象的操作。

面向对象生命周期

面向对象开发也有分析、设计、实现、测试等阶段。和传统生命周期相比,面向对象常与喷泉模型联系在一起:阶段之间可以交叠、迭代,分析和设计不一定严格线性分开。

mermaid
flowchart LR
  A["面向对象分析<br/>理解问题域"] --> D["面向对象设计<br/>组织设计模型"]
  D --> P["面向对象程序设计<br/>C++/Java等实现"]
  P --> T["面向对象测试<br/>算法/类/模板/系统"]
  T -.反馈迭代.-> A
  D -.交叠修正.-> A

考试中 OOA 出现频率不算高,但“主要活动不包括什么”这类题会考阶段边界。

OOA 的四个主要活动

活动说明题干关键词
认定对象从需求中识别候选对象名词、业务实体、外部角色
组织对象把对象抽象成类,组织类结构分类、抽象、类层次
描述对象间相互作用描述对象如何协作消息、交互、协作
定义基于对象的操作找对象应承担的服务操作、职责、行为

这四项都属于分析。若选项出现“面向对象程序设计”“选择编程语言写代码”,那已经是实现阶段,不属于 OOA 的主要活动。

从题干找对象与操作

面向对象分析和数据流图分析有相似处:名词常提示对象,动词常提示操作。但 OOA 更强调对象职责和对象之间的协作。

题干内容OOA 视角
客户、订单、账户、图书、学生候选对象/类
提交订单、查询余额、借阅图书对象操作/职责
客户拥有账户,订单包含明细类之间关系
系统向用户发送通知对象间消息或交互

候选对象不是看到所有名词都直接当类。要筛掉过于抽象、只是属性值、只是界面控件或临时计算数据的名词。

OOA 与 OOD 的区别

阶段主要问题输出
OOA 面向对象分析业务上有什么对象,它们如何协作分析模型、对象模型、用例理解
OOD 面向对象设计软件中如何组织类、接口、包和关系设计模型、类设计、接口设计、包结构
OOP 面向对象程序设计用什么语言和代码实现C++/Java 等源代码
OOT 面向对象测试如何验证实现正确算法层、类层、模板层、系统层测试

OOA 关注问题域,OOD 关注解空间。分析阶段不要过早陷入数据库表、框架选择和代码细节。

面向对象测试层次

字幕中提到面向对象测试可从多个层次理解:

层次关注点
算法层单个方法或算法是否正确
类层类的属性、方法和不变量是否正确
模板层类模板、泛型、复用结构是否正确
系统层多个对象协作形成的系统行为是否正确

这部分不是本节核心计算点,但能帮助你理解 OOA/OOD/OOP/OOT 是一条完整链路。

例题

单选
面向对象分析的主要任务是:
单选
下列不属于面向对象分析主要活动的是:

本节小结

OOA 的目的在于理解问题域。它的主要活动是认定对象、组织对象、描述对象之间的相互作用、定义基于对象的操作。分析阶段重业务理解,设计阶段重软件组织,实现阶段才进入具体代码。