科技信息
高校理科研究
结构化程序设计方法与面向对象程序设计方法之比较
乐山职业技术学院
喻梅
[摘要]本文通过浅析面向对象方法与结构化方法的比较,分析探讨了结构化方法和面向对象方法存在的问题,在比较两者内在一致性和主要区别基础上,提出在软件开发过程中应结合面向对象方法与结构化方法。[关键词]面向对象方法结构化方法软件开发
一、引言
随着计算机软硬件各方面的飞速发展,计算机领域的观念和方法日新月异。面向对象方法始于20世纪60年代挪威奥斯陆大学和挪威
人们都认为结构化方法计算机中心共同研究的SMULA语言。70年代,
是最好的系统开发方法,然而,随着计算机应用技术的不断发展,结构化方法越来越不能适应日益复杂庞大且高速发展的信息系统的建设。80年代以来,面向对象方法(ObjecOrientedMethodology)正引起越来越强烈的关注和重视,并在业内掀起一股新的面向对象编程浪潮。由于面向对象方法克服了传统的结构化方法在建立问题系统模型和求解时存在的缺陷,提供了更合理、更有效、更自然的方法。
二、结构化方法软件危机与面向对象方法的提出60年代末开始,国际上出现了“软件危机”,主要表现是:软件质量成本及开发进度难以控制,维护工作麻烦,产生这一危机的根本原差、
因在于结构化方法强烈依赖系统逻辑模型的完整性描述,难以做到系统的动态变化与扩展,系统开发速度慢、周期长、费用高;结构化设计方
“瀑布式”设计,使数据结构的设计仅服从于当法讲究的是自顶而下的
表1
项目基本思想概念或术语名词编程的语言逻辑工具
处理问题的出发点控制程序方式可扩展性重用性
层次结构的逻辑关系设计、编码的转换方式分析、运行效率
面向对象
自底向上设计库类对象、类、消息、继承等C++、VB、JAVA等
数据字典动态模型图、功能模型图对象模型图、面向问题
通过“事件驱动”来激活和运行程序
只需修改或增加操作,而基本对象结构不变,扩展性好好
用类的层次结构来体现类之间的继承和发展平滑过程,无缝连接相对低
结构化设计
自顶向下设计过程库,逐步求精,分而治之过程、函数、数据等C、BASIC、FORTRAN等
数据流图、系统结构图、数据字典状态转移图、实体关系图
前功能实现的要求,为以后的扩充和重用设置了巨大的障碍。
结构化方法中提高软件的结构化、模块化及可读性等基本思想是完全正确的,但问题空间和解空间在结构上存在着不一致性,使大型信
解决这一难题的关键在于分析、设息系统的开发和设计面临许多困难。
计、实现一个系统的方法和过程应尽可能接近我们认识系统的方法和过程,即问题空间与解空间在结构上尽可能一致。
面向对象方法解决了传统结构化方法中问题空间和解空间在结构上不一致的问题,避免了从分析和设计到软件模块结构间的多次转换过程,使开发软件变得简捷、高效、合理。
面向对象方法首先强调来自域的对象,然后围绕对象设置属性和操作。它尽可能模拟人类习惯的思维方式。把问题域的概念直接映射到对象和对象之间的接口,符合人们的常用的思维方式,减少结构化方法
面向对象方法鼓励开发者使用“对的从问题域到分析阶段的映射误差。
象”的观念去看待问题。
三、面向对象方法与结构化方法的比较(一)面向对象方法与结构化方法的比较如表1
面向过程
通过设计调用或返回程序
功能变化会危及整个系统,扩展性差不好
用模块的层次结构概括模块和模块之间的关系和功能按规则转换,有缝连接相对高
①定义变量及其初始值;
②根据事件发展顺序,进行对应的处理。
在上面的程序中,我们先定义了各种书的初始总数,然后这些数量
采购时改变。这种程序的编写思路是随着事件,按照一定的会在销售、
过程来进行的。这种方法是一种“解题”的思维方式,把所有的需求,当作一个“应用题”一样来“解答”。
(2)面向对象的程序示例书店{
《C++程序设计》;《软件工程》;《java编程思想》;《SQLServer2000》本数;卖出(书名,数量){书名-数量;}
进货(书名,数量){书名=书名+数量;}}
可以看出,面向对象的方法基本思想是:对问题空间进行自然分割,
(二)面向对象方法与结构化方法的比较用实例说明
例:用程序来描述一个电脑书店的销售情况(用伪代码完成)。(1)面向过程的程序示例《C++程序设计》本数=5《软件工程》本数=6《java编程思想》本数=4《SQLServer2000》本数=7……
//销售程序段《C++程序设计》本数=《C++程序设计》本数-1//卖出了1本《C++程序设计》
本数=《SQLServer2000》本数-2//卖出了2本《SQLServer2000》
《SQLServer2000》
……
//采购程序段《软件工程》本数=《软件工程》本数+5//新进了5本《软件工程》《C++程序设计》本数=《C++程序设计》本数+3//新进了3本《C++程序设计》
……
正如上面的程序段所示,结构化的程序方法通常是:
—453—
科技信息
高校理科研究
主要表现在如下几个方面:(一)从执行效率来说。结构化方法比面向对象方法产生的可执行代码更直接,更高。所以对于一些嵌入式的系统,结构化方法产生的系统更小,运行效率更高;
(二)从重用性方面来说。采用结构化方法的系统难以修改和扩充。结构化分析与设计清楚定义了系统的接口,当系统对外界接口发生变动时,往往造成系统结构较大变动,难以扩充新的功能接口。采用结构化方法的系统可复用性较差。结构化方法将数据和操作分离,导致一些可重用的软件构件在特定具体应用环境才能应用,降低了软件的可重用性。面向对象方法具有很好的重用性。在遇到类似的问题,通过应用了抽象继承等技术,来重用代码;
(三)从程序语言编译器来说。面向对象方法,通过编译器实现代码的面向对象性。也就是说经过编译器后,代码会被翻译为相对应的结构化代码。所以要熟练开发,还要懂一定的结构化方法做为基础;
(四)从掌握难度来说,面向对象方法比结构化对象方法复杂,难于理解。面象对象方法的内容广,概念多,而且很多都是难于理解,做到精通更加不易。应用面向对象方法,常常需要一种支持的分析,设计方法,如RUP方法,敏捷方法等。这些知识抽象枯燥,难于掌握。面象对象方法要经过长期的开发实践才能很好的理解,掌握。相比之下,结构化方法知识内容少,容易上手;
(五)从应用的范围看,结构化方法适用于数据少而操作多的问题。实践证明对于像操作系统这样的以功能为主的系统,结构化方法比较适应它。面向对象方法正好相反,对于数据库,信息管理等以数据为主的而操作较少的系统,用面向对象方法描述要好于结构化方法。
七、结语