结构化方法和面向对象方法的比较
结构化方法和面向对象方法的比较
前言
结构化方法和面向对象方法是当前软件开发最常用的方法。其中,结构化方法强调对现实世界的应用问题进行分解,面向过程设计问题空间的解域,强调自顶向下,逐步求精,模块化设计;而面向对象方法强调使用现实世界的概念抽象地思考问题,从而自然地解决问题。强调模拟现实世界中的概念而不强调过程或算法,支持重用。本文将首先对于两种方法都进行较为详细的介绍,之后结合实例对两种方法的优缺点进行比较。
1 结构化方法
结构化方法(SD方法)是一种传统的软件开发方法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。
1.1 结构化分析(Structured Analysis)
结构化分析包括将系统概念转换为用数据及控制的来表示,也就是转换为数据流程图。数据流程图中的程序以泡泡来表示,因此也称为“泡泡图”。不过完整的数据流程图中可能有许多的“泡泡”,使得很难去追踪数据流动的情形。此时可以先定义外界需要系统回应的事件,每一个事件指定一个泡泡,当系统定义完成后,再将事件的泡泡和回应的程序的泡泡相连接。也可以将程序对应泡泡加以分组,组合成较高级的程序。数据字典用来描述数据和指令的流动,而用程序规格来描述交易或数据转换的相关信息。
1.2 结构化设计(Structured Design)
结构化设计阶段将分析阶段得到的目标系统物理模型的DFD表示的具体信息转化成程序结构的设计描述,过渡成软件结构。在这个过程中采用的建模技术有:系统结构图SSD(System Struct Diagram)。这个过程分两步完成,第一步是从分析得到的结果出发,构造一个设计方案,决定系统功能模块的结构。第二步进行详细设计,确定每个功能模块的内部控制结构和算法,最终产生每个功能模块的程序流程图。具体步骤如下:
① 评审和细化数据流图;
② 确定数据流图的类型;
③ 把数据流图映射到软件模块结构;
④ 基于数据流图逐层分解高层模块,设计中下层模块;
⑤ 对模块的控制结构和算法进行优化;
⑥ 描述模块接口;
2 面向对象方法
面向对象程序设计(Object-oriented programming)是种具有对象概念的程序编程范型,同时也是一种程序开发的方法。它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关联的数据。在面向对象程序编程里,计算机程序会被设计成彼此相关的对象。
2.1 面向对象分析(Object Oriented Analysis)
面向对象分析(object-oriented analysis)一种新的系统分析方法.它是采用面向对象的风格进行系统分析和需求定义的重要方法.面向对象分析的关键在于理解问题空间并将其模型化。 面向对象分析采用人们认识客观事物和理解现实世界过程中常用的基本法则: ①认识对象及其属性; ②认识对象的整体及其组成部分; ③对象的形成及类的区分; ④对问题空间进行理解并抽象成模型. 面向对象分析有五个阶段:标识对象、标识结构、标识主题、定义属性、定义服务,即分五个层次建立面向对象分析的模型.面向对象分析的优点是使功能分析与数据分析使用统一的概念和方法,克服了结构化分析中两者之间的不一致性和不协调性.
2.2 面向对象设计(Object Oriented Design)
设计阶段则主要是确定实现用户需求的方法,即怎样做才能满足用户需求,并构造出系统的实现蓝图。OOD首先从OOA的结果开始,并将其从问题域映射到实现域;为满足实现的需要,还要增加一些类 、结构及属性和服务,并对原有类及属性进行调整。此外,还要完成应用控制、人机交互界面的设计等。OOA与OOD采用一致的表示法,使得从OOA到OOD不存在转换,只有局部的修改或调整,并增加了与实现有关的独立部分,因此,OOA与OOD之间不存在传统方法中分析与设计之间的鸿沟,成为面向对象方法的主要优势。
3 结构化方法和面向对象方法的比较
结构化方法和面向对象方法两者的优缺点比较明显,结构化方法承袭了传统的编程思想与编程方法,用三种基本结构来组织程序,使程序结构更为清晰,程序开发更有序、更容易模块只是程序一个功能部件。因此模块用函数来实现,完成整个软件。它的优点是目标明确,思路清晰,把问题分解为若干个小问题降低难度,代码易读性高。
面向对象思想是以信息处理和管理的功能为前提,客观了事物和事物之间的联系。对象技术的关键概念是对象、消息、类,关键机制包括封装、多态和继承。与结构化方法相比,对象是一个新的概念,它代替了“模块”。面向对象中对象是活体,它把数据和过程封装在一起,代表着真实对象的结构和交互作用。它的优点是程序易理解,维护性高,能有效控制系统的复杂性,稳定,代码可重用性好。
总之,编程需要采用哪个方法比较适合,有效率,具体要看项目的性质来选择或者混合使用。目前很多人认为结构化方法已经过时了,已经不再被使用了等,这种说法是不切实际和不合理的,我们需要好的对象内部的结构化设计来辅助开发的。目前最主要的编程思想还是结构化方法和面向对象方法,因此,为了提高我们对编程的深度理解,有必要明确两者的概念和区别。
4. 参考文献
【1】 汪寒昊,谢加胜,邢跃.软件开发方法:结构化方法与面向对象方法比较[J].科技信息,2011,(第13期).
【2】 贺启宝,王军.面向对象方法与结构化方法[J].佛山科学技术学院学报(自然科学版),2004,(第4期).
【3】 雷西玲,谢天保,何文娟. 面向对象方法与结构化方法的比较. 2001
【4】 张莉,裘国永. 结构化方法与面向对象方法的比较分析. 陕西师范大学学报. 2001