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

一、结构化方法

1.1定义

结构化分析方法(Structured Method,结构化方法)是强调开发方法的结构合理性以及所开发软件的结构合理性的软件开发方法。

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

1.2步骤

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

结构化分析的步骤如下:

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

(2)推导出等价的逻辑模型的DFD;

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

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

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

(6)选择一种方案;

(7)建立完整的需求规约。

1.3设计原则和方法

在结构化程序设计的具体实施中,要注意把握以下原则和方法:

1.使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑;

2.选用的控制结构只允许有一个入口和一个出口;

3.程序语句组成容易识别的语句序列块,每块只允许有一个入口和一个出口;

4.复杂结构的程序设计时,仅用嵌套的基本控制结构进行组合嵌套来实现;

5.严格控制GOTO语句的使用。其意思是指:

(1)用一个非结构化的语言去实现一个结构化的构造,既虽然有些高级语言有GOTO语句,但编程时不使用;

(2)若不使用GOTO语句会使功能模糊时,慎重地使用GOTO语句;

(3)在某种可以改善而不是损害程序可读性的情况下,慎重地使用GOTO语句。

二、面向对象

2.1定义

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

2.2 基本原则

抽象:抽象是处理现实世界复杂性的最基本方式在OO方法中它强调一个对象和其他对象相区别的本质特性对于一个给定的域确定合理的抽象集是面向对象建模的关键问题之一。

封装:封装是对抽象元素的划分过程抽象由结构和行为组成封装用来分离抽象的原始接口和它的执行。

模块化:模块化是已经被分为一系列聚集的和耦合的模块的系统特性对于一个给定的问题确定正确的模块集几乎与确定正确的抽象集一样困难通常每个模块应该足够简单以便能够被完整地理解。

层次:抽象集通常形成一个层次,层次是对抽象的归类和排序。在复杂的现实世界中有两种非常重要的层次一个是类型层次另一个是结构性层次 。确定抽象的层次是基于对象的继承,它有助于在对象的继承中发现抽象间的关系,搞清问题的所在理解问题的本质。

2.3基本步骤

(1) 分析确定在问题空间和解空间出现的全部对象及其属性;

(2) 确定应施加于每个对象的操作,即对象固有的处理能力;

(3) 分析对象间的联系,确定对象彼此间传递的消息;

(4) 设计对象的消息模式,消息模式和处理能力共同构成对象的外部特性;

(5) 分析各个对象的外部特性,将具有相同外部特性的对象归为一类,从而确定所需要的类;

(6) 确定类间的继承关系,将各对象的公共性质放在较上层的类中描述,通过继承来共享对公共性质的描述;

(7) 设计每个类关于对象外部特性的描述;

(8) 设计每个类的内部实现(数据结构和方法);

(9) 创建所需的对象(类的实例),实现对象间应有的联系(发消息)。

三、两种方法比较分析

3.1基本原则的比较

结构化方法遵循基本原则:

(1)抽象原则:是一切系统科学方法都必须遵循的基本原则,它注重把握系统的本质内容,而忽略与系统当前目标无关的内容,它是一种基本的认知过程和思维方式。

(2)分解原则:是结构化方法中最基本的原则,它是一种先总体后局部的思想原则,在构造信息系统模型时,它采用自顶向下、分层解决的方法。

(3)模块化原则:结构化方法最基本的分解原则的具体应用,它主要出现在结构化设计阶段中,其目标是将系统分解成具有特定功能的若干模块,从而完成系统指定的各项功能。

面向对象方法遵循基本原则:

(1)抽象: 抽象是指从事物中舍弃个别的、非本质的特征,而抽取共同的本质特征的做法。使用抽象的好处:一是便于访问,外部对象只需知道有限的几个操作(接口)即可访问其中的对象;二是便于维护,如果程序内部发生变化而其接口没有发生变化,则只需对其内部进行修改。

(2)分类:分类的作用就是按照某种原则划分出事物的类别,以便有助于认识复杂世界。在面向对象中分类就是把具有相同属性和方法的对象化为一类,用类作为这些对象的抽象描述。分类实际上是把抽象原则运用于对象描述时的一种表现形式。

(3)封装:在面向对象中封装就是用对象把属性和和操纵这些属性的操作包装起来,形成一个独立的实体单元,体现了事物的相对独立性。封装的另一个含义则是信息隐蔽,即外界不能直接存取对象的内部属性以及隐藏起来的内部操作,外界也不用知道对象操作的内部实现细节。

(4)多态性 :多态性是指在具有继承关系的类层次结构中可以定义同名的操作或者属性,但是这些属性和操作具有不同的含义,即具有不同的数据类型或表现出不同的行为。

3.2 程序设计思想比较

结构化方法的程序设计偏重于过程。在具体设计流程上,结构化方法遵循了自底向上的设计思想,即先设计底层模块,确定模块内部算法,设计模块内部程序,并进行单元测试。模块完成之后,再进行模块之间的组装,进行模块的集成测试。随后进行确认测试和系统测试,完成设计和调试任务。

面向对象方法其唯一组成是对象,对象之间的关系构成了程序的基本框架。与结构化方法相反的是,面向对象方法采用自顶向下的设计思想,先设计父类,再设计子类,并继承父类的属性与方法,而对象则是在最后程序运行过程中动态生成。

3.3 可修改性比较

结构化方法对每个过程进行细化(以函数的形式);结构化方法思路清晰,条理清楚,又有效地分解了繁复的问题,使得编写程序时清晰明了,简化了编程人员繁杂的工作;由于结构化方法对外的是程序接口,当程序需求发生变化时,可能需要大量修改;

面向对象方法与人类习惯的思维方法一致,使得使用者和维护人员都容易理解,在用户使用时不会出现理解困难,在软件维护中可维护性也较高,并且易于测试和调试。

posted @ 2016-12-22 11:21  SadyEdna  阅读(218)  评论(0编辑  收藏  举报