结构化方法与面向对象方法的比较分析

结构化方法与面向对象方法的比较分析

结构化方法与面向对象方法是如今编程的两种主流方法,其中,结构化方法强调对现实世界的应用问题进行分解,面向过程设计问题空间的解域,强调自顶向下、逐步求精、模块化设计;而面向对象方法强调使用现实世界的概念抽象地思考问题,从而自然地解决问题。强调模拟现实世界中的概念而不强调过程或算法,支持重用。

 

一、结构化方法

 

 

1、基本要点

结构化方法是结构化分析,结构化设计和结构化编程的总称,是最早最传统的软件开发方法,也是迄今为止信息系统中应用最普遍、最成熟的一种,它引入了工程思想和结构化思想,使大型软件的开发和编程都得到了极大的改善。结构化方法的基本思想可概括为:自顶向下、逐步求精、模块化技术。

 

2、建模技术

DFD:数据流图(Data Flow Diagram)简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。

DD:数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。

ERD:实体关系图:简记E-R图是指以实体、关系、属性三个基本概念概括数据的基本结构,从而描述静态数据结构的概念模式。

SC:结构图(Structure Chart)是指以模块的调用关系为线索,用自上而下的连线表示调用关系并注明参数传递的方向和内容,从宏观上反映软件层次结构的图形,结构图分建筑图和组织结构图。

 

3、方法步骤

 

结构化分析步骤如下:

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

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

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

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

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

⑥选择一种方案;

⑦建立完整的需求规约。

 

结构化设计步骤如下:

①评审和细化数据流图;

②确定数据流图的类型;

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

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

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

⑥描述模块接口。

 

 

二、面向对象方法

 

 

1、面向对象实质

就是主张从客观世界固有的事物出发来构造系统,提倡用人类在现实生活中常用的思维方法来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域,也就是说,系统中的对象以及对象之间的关系能够如实地反映问题域中固有事物及其关系。

 

2、主要特征

三大基本特征:

封装性:将客观事物封装成抽象的类。类通过自己的数据以及方法将自己抽象的客观事物表述出来。每一个类就是一个封装了数据以及操作这些数据的方法的逻辑实体。类中还可以通过设置属性将类私有部分在其他类面前隐藏。

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

多态性:对象根据所接收的消息而做出动作。同一消息为不同的对象接受时可产生完全不同的行动,这种现象称为多态性。利用多态性用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,如是,同一消息即可调用不同的方法。

五大基本原则:

  单一职责原则SRP(Single Responsibility Principle)是指一个类的功能要单一,不能包罗万象。

  开放封闭原则OCP(Open-Close Principle) 一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。也就是说新增的拓展功能不会影响已有的功能。

  替换原则(the Liskov Substitution Principle LSP) 子类应当可以替换父类并出现在父类能够出现的任何地方。

  依赖原则(the Dependency Inversion Principle DIP) 具体依赖抽象,下层依赖上层。

  接口分离原则(the Interface Segregation Principle ISP) 模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来。

 

3、方法步骤

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

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

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

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

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

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

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

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

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

 

三、两者优缺点对比

1、优点比较

结构化方法:

(1)结构化方法在解决问题时,要自顶向下分析问题,逐层解决问题,所以目标明确,思路清晰。

(2)结构化方法强调功能抽象和模块化,采取了分块处理问题的方法,可以把一个比较复杂的问题分解为若干个容易处理解决的部分,从而降低了问题处理的难度。

(3)由于编程时思路清晰,所以代码的易读性高,容易发现问题。

(4)设计工作中阶段性非常强,有利于系统开发的总体管理和控制。

 

面向对象方法:

(1)面向对象方法与人类思维方法一致,所以程序易理解,维护性高。

(2)运用人类日常的思维方法和原则,有效控制了系统复杂性。

(3)由于面向对象方法具有封装性,所以很多时候修改局部对整体没什么影响,稳定性好。

(4)分解成了相互独立的小问题,代码可重用性好。

 

 

2、缺点比较

结构化方法:

(1)结构化方法处理复杂的问题时,比较难以自顶向下分析,从而一步步解决问题,只有面对简单问题时,容易快速解决。

(2)结构化方法是先设计好再实现的,所以面对需求变化时,不是很好调整。

(3)系统开发周期长。

 

面向对象方法:

(1)面向对象方法经常通过对象间的互相调用来实现,这样很可能会造成cache miss的情况,不能充分利用硬件性能的问题,导致程序效率不高。

(2)面向对象封装了对象的内部信息,当发生错误时,不好定位。

 

四、总结

结构化方法与面向对象方法两者之间并非对立的,也不存在谁就比谁更优越一说,两者都有各自的有点和缺点。但作为一个程序猿,应当两者皆要掌握,同时能够两者结合应用解决问题,这样对于具体的问题,才能选择合适的方法解决,这样才能准确高效的解决问题,毕竟,效率和成本才是编程要考虑的根本性问题。

 

参考文献

【1】缪淮扣,高晓雷,李刚. 结构化方法、面向对象方法和形式方法的比较与结合.计算机工程和科学,1999 

【2】殷锋. 实用软件工程. 天津:天津科学技术出版社,2011. 

【3】邵维忠,杨芙清. 面向对象的系统分析[M] . 北京:清华大学出版社,1998.

 

转载于:https://www.cnblogs.com/shitz/p/6164792.html

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值