结构化方法与面向对象方法之应用比较

  从20世纪60年代以来,软件的发展一直受到软件危机的影响。为了提高软件的质量,两种软件开发方法应运而生。其一是结构化方法,另一个便是面向对象方法。结构化方法与面向对象方法,二者相比,显然我们对面向对象方法更为熟悉一些。自从来到了计算机系,面向对象方法变不断地被提及。虽然在真正的编程实战中,笔者对面向对象方法也应用较少,但其精髓,却在不断地被传播。而结构化方法,则是我们新接触到的词汇。那么究竟什么事面向对象方法与结构化方法呢?二者又有哪些异同?在具体的应用中又如何呢?笔者将针对这些问题,在下文展开介绍。

面向对象方法概述


   所谓面向对象,是从内部结构上模拟客观世界,其基本思想为:对象是对显示世界客观实体的描述,均有其属性和相关操作组成,是系统描述的基本单位。面向对象方法更强调运用人类在日常的罗技思维中经常采用的思想方法和原则,例如抽象、分类、继承、聚合、封装等,这使得软件开发者能更有效地思考问题,并以其他人也能看得懂的方式把自己的认识表达出来。由此可见,面向对象的实质就是主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域,也就是说,系统中的对象以及对象之间的关系能够如实地反映问题域中固有事物及其关系。

结构化方法概述


  那么,什么又是结构化方法呢?结构化方法基于功能分解设计系统结构,通过不断把复杂的处理逐层分解来简化问题,它从内部功能上模拟客观世界.用结构化开发的软件运行效率较高,且能够增加软件系统的可靠性。在分析过程中,它是面向数据流进行需求分析的方法,在该阶段力求寻找功能及功能之间的说明.它主要采用的工具是数据流图DFD(Data Flow Diagram),利用DFD描述边界和数据处理过程的关系.而在具体地结构化设计中,它是将数据流图表示的信息转换成程序结构的设计描述,在该阶段力求寻找功能的实现方法,采用系统结构图表示系统所具有的功能和功能之间的关系.

面向对象方法和结构化方法的主要区别


  对于这两种为了应该软件危机而应运而生的方法,其究竟有什么区别呢?笔者认为,区别主要有以下四点:

1.处理问题的出发点不同

  面向对象方法强调把问题域的要领直接影射到对象及对象之间的接口上,是用符合人们通常的思维方式来处理客观世界中的问题,它是一种面向问题域的开发方法;结构化方法则是强调过程抽象化和模块化,是以过程为中心构造或处理客观世界中的问题,它是一种面向过程的开发方法。

2.处理问题的基本单位不同

  面向对象方法是用计算机逻辑来模拟客观世界中的物理存在,以对象的集合类作为处理问题的基本单位,期望计算机世界进一步向客观世界靠拢,以使问题的处理更直截了当些;而结构化方法则把客观世界的问题抽象成计算机可以演绎和处理的过程,处理问题的基本单位是能清晰表达过程的模块。

3.层次结构中的逻辑关系不同

  在体现分解和抽象原则上,面向对象方法和结构化方法是不同的,面向对象方法用类的层次结构来体现类之间的继承和发展;而结构化方法则用模块的层次结构概括模块或模块间的关系和功能。

4.数据的处理方式不同

  面向对象方法将数据与对应的代码封装成一个能动的整体对象,原则上其他对象不能直接修改其数据,即对象的修改只能由自身的成员函数来完成;而结构化方法则是直接通过程序来处理数据,处理完毕后便可显示处理结果。

面向对象方法和结构化方法的一致性


  那么同样是为了解决软件危机,两种方法在解决问题上究竟有什么一致性呢?

1.在预定目标上的一致性

  面向对象方法与结构化方法都是把客观世界中要解决的问题转向计算机上的实现作为预定目标。从抽象的意义上讲,面向对象方法与结构化方法从实现预定目标和组成上是完全一致的。

2.在运用分解和抽象原则上的一致性

  分解和抽象是软件开发中控制问题复杂性的重要原则。分解即是化整为零,各个击破;而抽象则是通过分解体现,在逐层进行的分解中,上一层是下一层的抽象,而下一层是对上层的具体解释或体现,运用抽象可以不用一下考虑过多的细节,而是逐步有节奏地去了解更多的细节。因此,分解和抽象的原则是处理客观世界复杂问题的最有力的武器,面向对象方法和结构方法在运用分解和抽象原则上的要求则是完全一致的。

3.在局部化和重用性设计上的一致

  局部化是软件开发中的一个重要原则,即不希望软件一部分过多地涉及或影响软件的其他部分。在结构化方法中,局部化主要体现在代码与数据的分隔化,即程序各部分除必要的信息交流外,彼此相互隔离而互不影响,而面向对象方法则采用数据、代码的封装,即将数据和代码封装成一个能动的整体对象。在运用局部化原则上,面向对象方法继承了结构化方法的宗旨,但它比结构化方法的运用更为深入、更为彻底。

  重用性即复用性。复用性是软件或软件构件能够容易地构造其他新软件的一种能力。重用性与局部化密切相关,重用性是以局部化为基础的,即只有采用局部化设计原则,才有可能使被设计的软件具有重用性。在面向对象方法中,重用性往往是通过类继承和对象组合两个最基本的技术来实现的,而在结构化方法中,多通过基本模型的组合实现重用。

对两种方法的思考


  通过上述比较,我们可以发现,结构化方法和面向对象方法两个各有不同,但却目的明确,思路清晰。结构化方法调理清晰,但在出现问题是却不利于维护和修改。

相比较之下,面向对象方法则更加灵活,同时也有利于团队开发。

所以在实践的过程中,要针对不同的项目,采用不同的方法进行开发。

 

posted @ 2016-12-22 17:31  JinxMiracle  阅读(271)  评论(0编辑  收藏  举报