结构化方法和面向对象方法的比较

结构化方法和面向对象方法的比较

结构化方法

1概述

       结构化方法(SD方法)是一种传统的软件开发方法,它是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。

2基本思想

结构化方法的基本要点是:自顶向下、逐步求精、模块化设计、结构化编码。

结构化分析方法是以自顶向下,逐步求精为基点,以一系列经过实践的考验被认为是正确的原理和技术为支撑,以数据流图,数据字典,结构化语言,判定表,判定树等图形表达为主要手段,强调开发方法的结构合理性和系统的结构合理性的软件分析方法。

结构化设计方法是以自顶向下,逐步求精,模块化为基点,以模块化,抽象,逐层分解求精,信息隐蔽化局部化和保持模块独立为准则的设计软件的数据架构和模块架构的方法学。

结构化方法按软件生命周期划分,有结构化分析(SA),结构化设计(SD),结构化实现(SP)。 其中要强调的是,结构化方法学是一个思想准则的体系,虽然有明确的阶段和步骤,但是也集成了很多原则性的东西,所以学会结构化方法,不是能够单从理论知识上去了解就足够的,要的更多的还是实践中慢慢的理解个个准则,慢慢将其变成自己的方法学。

3、分析步骤

结构化分析的步骤如下:

①分析当前的情况,做出反映当前物理模型的DFD;

②推导出等价的逻辑模型的DFD;

③设计新的逻辑系统,生成数据字典和基元描述;

④建立人机接口,提出可供选择的目标系统物理模型的DFD;

⑤确定各种方案的成本和风险等级,据此对各种方案进行分析;

⑥选择一种方案;

⑦建立完整的需求规约。

结构化设计方法给出一组帮助设计人员在模块层次上区分设计质量的原理与技术。它通常与结构化分析方法衔接起来使用,以数据流图为基础得到软件的模块结构。SD方法尤其适用于变换型结构和事务型结构的目标系统。在设计过程中,它从整个程序的结构出发,利用模块结构图表述程序模块之间的关系。结构化设计的步骤如下:

①评审和细化数据流图;

②确定数据流图的类型;

③把数据流图映射到软件模块结构,设计出模块结构的上层;

④基于数据流图逐步分解高层模块,设计中下层模块;

⑤对模块结构进行优化,得到更为合理的软件结构;

⑥描述模块接口。

面向对象方法

1、简介

面向对象方法作为一种新型的独具优越性的新方法正引起全世界越来越广泛的关注和高度的重视,它被誉为"研究高技术的好方法",更是当前计算机界关心的重点。十多年来,在对OO方法如火如荼的研究热潮中,许多专家和学者预言:正象70年代结构化方法对计算机技术应用所产生的巨大影响和促进那样,90年代OO方法会强烈地影响、推动和促进一系列高技术的发展和多学科的综合。

面向对象设计本质上就是在需求、概要设计基础上,划分对象 → 抽象类 → 将类组织成为层次化结构 ( 继承和合成 ) → 用类与实例进行设计和实现几个阶段

 根本技巧就是:通过封装、继承、多态降低程序的耦合度。这方面材料可以参考设计模式

2、特征

封装性

封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。

继承性

继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继职其它类的全部描述,同时可修改和扩充。

继职具有传达室递性。继职分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。

多态性

对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。多态性的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在OOPL中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态性。

 

比较

面向对象的软件开发方法与结构化软件开发方法的最基本的区别:表现在它们对功能和数据的不同处理上。

结构化软件开发方法是围绕实现处理功能的“过程”来构造系统的。它几乎都是将功能和数据分开考虑的。它遵循面向过程的问题求解方法。是用计算机能够理解的逻辑来描述和表达待解决的问题及其具体的解决流程。数据结构和算法是它的核心所在。用户需求的变化大部分是针对功能的.在开发需求模糊或需求动态变化的系统时。所开发出的软件系统往往不能真正满足用户的需要,可能会引起软件成本增长失控、软件质量得不到保证等一系列严重问题。因此,用结构化方法开发的软件。其稳定性、可修改性和可重用性都比较差。

面向对象软件开发方法则是在解空间引入了“对象”的概念。逼真地描述解空间的客观实体,从而使客观描述符合人类的思维习惯。通过识别问题域的对象。分析它们之间的关系.建立对象模型、动态模型和功能模型,利用面向对象观点建立求解域模型的过程。它的核心概念主要是对象、类、继承和消息。面向对象编程技术的特点是数据控制代码的访问,其中类的继承和多态性是处理复杂软件的有效技术。运用这种方法开发出来的系统稳定性、可重用性及可维护性好。

 参考资料

【1】   百度百科 https://baike.baidu.com

【2】   维基百科 https://www.wikipedia.org/

【3】 结构化方法学与面向对象方法学在软件开发中的比较

 

posted @ 2016-12-23 21:59  yuanyuanyue  阅读(400)  评论(0编辑  收藏  举报