面向过程方法与面向对象方法的比较

 

结构化方法是在软件行业得到广泛接受和使用,并一度成为早期占主导地位的软件构造与开发方法。而面向对象方法提出后,当代软件工程的发展面临着从传统的结构化范型到面向对象范型的转变,对象技术作为新范型的核心技术正在得到新的语言、新的系统和新的方法学的支持,这体现在已出现的面向对象的语言、数据库、操作系统及开发环境上。

一、结构化分析(面向过程)方法

        结构化分析方法(Structured Method,结构化方法)是面向过程的程序设计的方法,是强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化开发方法提出了一组提高软件结构合理性的准则,如分解与抽象、模块独立性、信息隐蔽等。针对软件生存周期各个不同的阶段,它有结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)等方法。

      结构化分析方法给出一组帮助系统分析人员产生功能规约的原理与技术。它一般利用图形表达用户需求,使用的手段主要有数据流图、数据字典、结构化语言、判定表以及判定树等。

       结构化分析的步骤

      ①分析当前的情况,做出反映当前物理模型的DFD;
     ②推导出等价的逻辑模型的DFD;
     ③设计新的逻辑系统,生成数据字典和基元描述;
     ④建立人机接口,提出可供选择的目标系统物理模型的DFD;
     ⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;
     ⑥选择一种方案;
     ⑦建立完整的需求规约。

      结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。它通常与结构化分析方法衔接起来使用,以数据流图为基础得到软件的模块结构。SD方法尤其适用于变换型结构和事务型结构的目标系统。在设计过程中,它从整个程序的结构出发,利用模块结构图表述程序模块之间的关系。结构化设计的步骤如下:①评审和细化数据流图;②确定数据流图的类型;③把数据流图映射到软件模块结构,设计出模块结构的上层;④基于数据流图逐步分解高层模块,设计中下层模块;⑤对模块结构进行优化,得到更为合理的软件结构;⑥描述模块接口。

      结构化设计(面向过程)方法的设计原则:

      ·使每个模块执行一个功能(坚持功能性内聚)
      ·每个模块用过程语句(或函数方式等)调用其他模块
      ·模块间传送的参数作数据用
      ·模块间共用的信息(如参数等)尽量少

二、面向对象方法

        面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。

  用OO方法进行面向对象程序设计,基本步骤:
  (1) 分析确定在问题空间和解空间出现的全部对象及其属性;
  (2) 确定应施加于每个对象的操作,即对象固有的处理能力;
  (3) 分析对象间的联系,确定对象彼此间传递的消息;
  (4) 设计对象的消息模式,消息模式和处理能力共同构成对象的外部特性;
  (5) 分析各个对象的外部特性,将具有相同外部特性的对象归为一类,从而确定所需要的类;
  (6) 确定类间的继承关系,将各对象的公共性质放在较上层的类中描述,通过继承来共享对公共性质的描述;
  (7) 设计每个类关于对象外部特性的描述;
  (8) 设计每个类的内部实现(数据结构和方法);
  (9) 创建所需的对象(类的实例),实现对象间应有的联系(发消息)。

三、面向对象方法与结构化(面向过程)方法比较

        结构化方法首先关心的是功能,强调以模块(即过程)为中心,采用模块化、自顶向下、逐步求精设计过程,系统是实现模块功能的函数和过程的集合,结构清晰、可读性好,的确是提高软件开发质量的一种有效手段。

        结构化设计从系统的功能入手,按照工程标准和严格规范将系统分解为若干功能模块。然而,由于用户的需求和软、硬件技术的不断发展变化,作为系统基本成分的功能模块很容易受到影响,局部修改甚至会引起系统的根本性变化。开发过程前期入手快而后期频繁改动的现象比较常见。

        面向对象方法则从所处理的数据入手,以数据为中心来描述系统,数据相对于功能而言,具有更强的稳定性,这样设计出的系统模型往往能较好地映射问题域模型。对象、类,、继承性、多态性、动态定连概念和设施的引入使用,显然令面向对象的设计方法具有一定的优势,能为生产可重用的软件构件和解决软件的复杂性问题提供一条有效的途径。

        面向对象的设计过程就是指通过建立一些类以及它们之间的关系来解决实际问题,这就需要对问题域中的对象作整体分析,类和类间关系的设计要求较高,否则设计出的并不是真正意义上的面向对象的软件系统,而只是一些类的堆砌而已,不能体现出面向对象设计方法的优势之处。

 

你可能感兴趣的:(面向过程方法与面向对象方法的比较)