从面向对象分析(OOA)到面向对象设计(OOD)

来源:互联网 发布:标签打印程序源码 编辑:程序博客网 时间:2024/04/27 16:11

从OOA到OOD是对现实世界的进一步建模。从概念上,OOA主要是对现实世界的问题空间建模,其分析侧重于整体,较为粗糙(粒度较大)的研究。而OOD则要求对特定的解空间建模,通常OOD又可分为概要的(或总体的)OOD 和详细的OOD两个阶段。OOA是完全独立于编程语言,概要的OOD  仍保持较大部分独立于编程语言的特点、详细的OOD则与编程语言有密切关系。显然,若能采用面向对象的编程语言,会更有利于OOD的编程模块的设计。

    在面向对象系统中,模块、数据结构、接口等都集中地体现在类和类层次结构中,系统开发的全过程实际上都与类和类层次结构直接相关,因为它们正是一个面向对象系统的基础与核心。例如,上面介绍的Goad方法尽管没有引入类和类层次结构的术语,但事实上已经在分类结构、属性、服务、消息关联等概念中,体现了类和类层次结构的基本特征。在面向对象系统中,虽然可以用类和类层次结构来统一作为各个开发阶段的工作对象,但仍然有必要在抽象程度和层次上加以明确的区分,以利于把握重点,提高系统开发的效率。从这个意义上讲,围绕类和类层次结构,面向对象系统开发的各个阶段承担着不同层次的任务。

    (1)分析阶段:通过对象的认定,确定问题空间中应当存在的类和类层次结构;
    (2)设计阶段:通过类的认定和类层次结构的组织,确定解空间中应当存在的类和类层次结构,并确定外部接口和主要的数据结构。
    (3)编码阶段:实现或重用类和类层次结构,包括增加必要的内部方法和数据结构;
    (4)维护阶段:根据维护需要,回复到上述阶段,以递增的方式对相应的类和类层次进行扩充和修改。

    因此OOD是采用面向对象概念,以类和类层次结构为工作对象的软件设计方法,它是以抽象数据类型实现的结构化集合的软件系统。类是抽象数据的实现而不是抽象数据类型本身,集合隐含着类是作为构成软件系统的模块,而且可以独立于系统的定义。因而,同一个类可用于不同的系统,而对要设计的系统则可选择适合的类所组成,一旦这些类被选中,它们之间就建立重要的关系(即类层次关系)。

    OOD的主要任务之一就是在认定对象的基础上,把对象的特征抽象到一个类中。然后,一些类将与另一个(些)类产生继承相关,构成类层次结构。一些这样的类层次结构,又可以构成类库。最后,又可以对类库的组织作进一步推敲,使之成为可用于特定应有范畴的构架。OOD的中一项主要任务就是提供对重用的支持。这里是支持重用的类的外部接口和组织结构,不是具体的实现