1. 说明
- 1.面向对象分析(Object-Oriented Analysis, OOA)。
- 2.目的是为了获得对应用问题的理解。
- 3.理解的目的是确定系统的功能、性能要求。
- 4.功能/数据分析法分开考虑系统的功能要求和数据及其结构。
- 5.面向对象分析方法是将数据和功能结合在一起作为一个综合对象来考虑。
- 6.面向对象分析技术可以将系统的行为和信息间的关系表示为迭代构造特征
- 7.面向对象分析包含5个活动:认定对象、组织对象、描述对象间的相互作用、确定对象的操作、定义对象的内部信息。
2. 认定对象
- 1.在应用领域中,按自然存在的实体确立对象。
- 2.在定义域中,首先将自然存在的“名词”作为一个对象,这通常是研究问题、定义域实体的良好开始。
- 3.通过实体间的关系寻找对象常常没有问题,困难在于寻找(选择)系统关心的实质性对象,实质性对象是系统稳定性的基础。
- 4.例如在银行应用系统中,实质性对象应包含客户账务、清算等,而门卫值班表不是实质性对象,甚至可不包含在该系统中。
3. 组织对象
- 1.分析对象间的关系,将相关对象抽象成类,其目的是为了简化关联对象,利用类的继承性建立具有继承性层次的类结构。
- 2.抽象类时可从对象间的操作或一个对象是另一个对象的一部分来考虑,如房子是由门和窗构成的。
- 3.由对象抽象类,通过相关类的继承构造类层次,所以说系统的行为和信息间的分析过程是一种迭代表征过程。
4. 对象间的相互作用
- 1.描述出各对象在应用系统中的关系,如一个对象是另一个对象的一部分,一个对象与其他对象对象间的通信关系等。
- 2.这样可以完整地描述每个对象的环境,由一个对象解释另一个对象,以及一个对象如何生成另一个对象,最后得到对象的界面描述
5. 基于对象的操作
- 1.操作有从对象直接标识的简单操作,如创建、增加和删除等;也有更复杂的操作,如将几个对象的信息连接起来。
- 2.一般而言,避免对象太复杂比较好,当连接的对象太复杂时,可将其标识为新对象。
- 3.当确定了对象的操作后,再定义对象的内部,对象内部定义包括其内部数据信息、信息存储方法、继承关系以及可能生成的实例数等属性。
- 4.分析阶段最重要的是理解问题域的概念,其结果将影响整个工作。
- 5.经验表明,从应用定义域概念标识对象是非常合理的,完成上述工作后写出规范文档,文档确定每个对象的范围。
- 6.早期面向对象的目标之一是简化模型与问题域之间的语义差距。
- 7.面向对象分析的基础是软件系统结构,这依赖于人类看待现实世界的方法。
- 8.当人们理解求解问题的环境时,常采用对象、分类法和层次性这类术语。
- 9.面向对象分析与功能/数据分析方法相比,面向对象的结果比较容易理解和管理。
- 10.面向对象分析方法的另一个优点是便于修改,早期阶段的修改容易提高软件的可靠性。
6. 步骤
- 1.面向对象的分析包括3个步骤: 第1步是用例建模,它决定了如何由产品得到各项计算结果。并以用例图和相关场景的方式展现出来。
- 2.第2步是类建模,它决定了类及其属性,然后确定类之间的关系和交互。
- 3.第3步是动态建模,它决定了类或每个子类的行为,并以状态图的形式进行表示。
7. 例题
7.1 例题1
1.面向对象分析时,执行的活动顺序通常是(A)。
A.认定对象、组织对象、描述对象的相互作用、确定对象的操作
B.认定对象、定义属性、组织对象、确定对象的操作
C.认定对象、描述对象间的相互作用、确定对象的操作、识别包D.识别类及对象、
识别关系、定义属性、确定对象的操作
1.面向对象分析包含5个活动:认定对象、组织对象、描述对象间的相互作用、确定对象的操作、
定义对象的内部信恙。
2.认定对象是指:在应用领域中,按自然存在的实体确立对象。在定义域中,首先将自然存在
的"名词”作为一个对象,这通常是研究问题定义域实体的良好开始。通过实体间的关系寻找对
象常常没有问题,而困难在于寻找(选择)系统关心的实质性对象。实质性对象是系统稳定性的
基础。
3.组织对象含义是:分析对象间的关系,将相关对象抽象成类,其目的是为了简化关联对象,
利用类的继承性建立具有继承性层次的类结构。抽象类时可从对象间的操作或一个对象是另一
个对象的一部分来考虑;如房子由门和窗构成,门和窗是房子类的子类。由对象抽象类,通过相
关类的继承构造类层次,所以说系统的行为和信息间的分析过程是一种迭代表征过程。
4.描述对象间的相互作用是:描述出各对象在应用系统中的关系。如一个对象是另一个对象的一
部分,一个对象与其他对象间的通信关系等。这样可以完整地描述每个对象的环境,由一个对
象解释另一个对象,以及一个对象如何生成另一个对象,最后得到对象的界面描述。最后定义
对象的操作和内部信息。
7.2 例题2
2.以下关于面向对象分析的叙述中,错误的是(B)。
A.面向对象分析看重分析问题域和系统责任
B.面向对象分析需要考虑系统的测试问题
C.面向对象分析忽略与系统实现有关的问题
D.面向对象分析建立独立于实现的系统分析模型
1.面向对象分析主要回答软件系统需要解决什么问题,在面向对象分析阶段并不考虑系统实现以及系统的测试问题,
强调建立独立于系统实现的系统分析模型,其关注点仍然侧重于问题域。