OOA与OOD的区别
上讨论了OOA阶段和OOD阶段所应完成的主要工作,由于这两个阶段的划分没有公认
的标准,有些工作是在OOA阶段完成还是在OOD阶段完成还存在着争议。有人认为OOA和
OOD可以交叉进行;有人认为OOD是对OOA结果的改进和细化,所以只提OOA;有人则更
强调OOD。尽管OOA和OOD存在着某些交叉和联系,但它们之间仍有许多差别,如:
1)OOA将现实世界中的实体抽象为问题对象,并构造问题域中的系统需求模型;OOD将
问题对象转化为解域中的类并在解域中构造出问题的解。
2)OOA侧重于用户需求的分析和对问题域的理解,分析人员关心的是系统结构及对象间
的关系;OOD则侧重于系统的实现,设计人员关心的是对象的行为及其实现。
3)OOA标识了一组对象,并通过其相互作用来刻划系统,该阶段的工作与程序设计语言
无关;OOD定义了一组类,并设计出系统的实现蓝图,概要设计与程序设计语言无关,但详细
设计则与之有比较密切的联系。(
4)OOA识别的对象是对客观世界实体的抽象,标识对象的准则是:该对象的引入是否有助于对问题域的理解;OOD中构造类的准则是:该类的构造是否可行,是否有效地实现了抽象
数据类型,是否有助于系统的实现和提高软件质量。(
5)两个阶段都没有提及系统对象,但原因不同。在OOA阶段,分析与实现无关,分析所涉
及的范围与解域无关,系统对象自然不用考虑。OOD建立的对象模型本身就是要设计的软件
系统,对系统对象的考虑是隐含的。
6)组装结构和分类结构在两个阶段所起的作用不同。在OOA阶段,它们的引入主要是为
了理解问题;而在OOD阶段,它们的引入则主要是针对软件的构造和实现。分类结构通过继
承机制来实现,因而代码得到了有效地复用;组装结构则将一些类组合在一起构成较大的软件
构件。
7)OOA并没有考虑对象的产生问题,当其对应的实体在现实世界中出现时,它也就在问
题域中产生了。OOA也不考虑对象属性的取值和服务算法的实现。而在OOD阶段这些问题
都必须详细考虑。
8)OOD涉及到重载问题;而OOA没有考虑,因为考虑过多的实现细节对理解问题和分
析用户需求没有多大帮助。
posted on 2009-03-31 15:37
Daniel 阅读(320)
评论(1) 编辑 收藏 所属分类:
CoreJava