浅谈结构化程序设计与面向对象程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《浅谈结构化程序设计与面向对象程序设计》
姓名:
学号:
专业:
学院:
浅谈结构化程序设计与面向对象程序设计
[摘要]
程序设计可分为结构化程序设计和面向对象程序设计两种方法。本文梳理了两种程序设计方法的内容及特性,分析比较了它们之间的优缺点,并总结了在软件开发时要根据问题实际出发,根据二者的优缺点选取合适的开发方法,以达到最佳的开发效益这一设计原则。
一、引言
程序设计方法学主要讨论程序的性质以及程序设计的理论和方法。它起源于20世纪70年代的软件危机,在Dijkstra提出结构化程序设计的思想和概念后快速发展[1]。程序设计方法学的基本研究目标是通过对程序本质属性的研究来提高程序的效率,保证程序的正确性。
程序设计的基本方法包括结构化方法和面向对象方法。两种方法在软件开发中采用不同的思维模式,但是面向对象方法的基础仍是结构化方法。
本文第二节简要介绍结构化程序设计方法的内容;第三节列举面向对象程序设计方法的特性;第四节总结并探讨两种方法的优缺点;第五节阐述了实际开发实践中两种方法适用的场景。
二、结构化程序设计
结构化程序设计方法, 实质上是自顶向下的功能分解法, 通过逐步求精的设计过程把程序分解成单一处理功能的模块, 进而通过参数传递调用相应模块以实现程序的功能[2]。模块之间通过“顺序”、“选择”、“循环”的控制结构进行连接,并且只有一个入口、一个出口。
2.1 设计方法
对于要解决的问题,首先必须分析清楚问题的需求,对问题进行总体设计。在这两个步骤中都要采用自顶向下逐步求精的方法。对问题、模块、数据进行抽象,并对问题进一步分解。
2.2 基本控制结构
结构化程序设计把复杂的流程图转变为标准形式,以便用迭代表示,并嵌套少数基本而标准的控制逻辑结构—顺序、选择、循环[1]。其中,顺序决定执行顺序,选择决定执行条件,循环决定复执行条件。
2.3 程序设计原则
结构化程序设计的原则可表示为:程序=算法+数据结构[3]。算法和数据结构分别是一个独立的整体,二者分开设计。
三、面向对象程序设计
面向对象程序设计起源于信息隐藏和抽象数据类型的概念。数据抽象指的是一个数据结构以及作用在该结构上的操作所组成的一个实体,数据结构的表示被隐藏在操作接口的后面。
3.1 面向对象抽象原理
3.1.1 数据抽象
数据抽象的核心在于模块化与信息隐蔽,是面向对象方法学的基础。
3.1.2 行为共享
行为共享指许多实体具有相同的接口,主要以分类和层细分类两种方式实现。
3.1.3 进化
进化是指系统随需求变化而修改和增加的情况以及对复杂问题的增量式的求解过程。进化建议面向对象对修改封闭,对增加开放。
3.1.4 正确性
正确性由行为共享导致,是指当一个实体请求其他实体的行为时系统必须确保能够在共享的行为组中找到正确的行为实现并运行它。
3.2 面向对象方法的要点
软件系统由对象组成,通过采用对象分解法取代之前的功能分解法,所有的对象都划分成各种对象类,每个类都包含一组数据和一组方法。
通过子父类之间的关系,把若干对象类组成一个具有层次结构的系统。各对象彼此之间仅能通过传递消息互相联系。
四、结构化方法与面向对象方法
结构化方法和面向对象方法的一个重要区别在于分解问题的出发点不同,考虑的思维模式不同[4]。
在计算机中,数据结构和过程密切相关,结构化方法将数据结构和过程分开考虑,面向对象方法组合数据和过程于对象之上[5]。
下面我们探究一下两种方法的优缺点。
4.1 执行效率
相比较面向对象方法,结构化方法产生的可执行代码更直接,对于一些嵌入式系统,结构化方法运行效率更高。
4.2 重用性
结构化方法将数据和算法分离,降低了软件的可重用性。面向对象方法具有更好的模块内聚和耦合特性,使得软件可以更好的重用与维护。
4.3 开发难度
整体而言,面向对象方法比结构化方法复杂。面向对象方法内容广、概念多,逻辑缜密。相比之下,结构化方法流程简单,上手难度低。
五、总结
在开发实践中,软件开发的目标是以最小的代价开发出满足用户需求的软件。故而开发时需要根据系统的实际需求,考虑执行效率、重用性等因素,尽量利用结构化方法和面向对象方法的优点来选择不同的方法。例如,对于一些小型嵌入式实时监测系统,采用结构化方法比较好。对于大型系统或需求易变系统,采用面向对象方法较好。
总之,开发时要根据问题实际出发,选取合适的软件开发方法,以达到最佳的开发效益。
参考文献:
[1]陈海波,王申康.新编程序设计方法学[M].浙江大学出版社, 2004.
[2]马金霞,宋传磊.面向过程和面向对象程序设计分析[J].中国新通信,2016,18(11):160.
[3]徐德启,赵炜,杨小元.面向对象的程序设计方法初探[J].兰州大学学报,1992(S1):17-20.
[4]喻梅.结构化程序设计方法与面向对象程序设计方法之比较[J].科技信息,2009(14):453-454.
[5]丁岚,范开勇,冯振颖.面向对象程序设计方法研究[J].数字通信世界,2019(01):73-74.