浅谈面向对象和面向过程的程序设计

2017-09-09 04:41冯媛媛
数字技术与应用 2017年7期
关键词:面向对象程序设计

冯媛媛

摘要:随着面向对象程序设计方法的出现,对象作为该方法的核心技术,正在得到新的开发语言和新的系统架构的支持,两种开发方法存在着质的区别。本文从面向过程程序设计的结构化思想和面向对象程序设计的抽象、封装、继承、多态技术入手做主要论述,详细介绍了两种程序设计方法的特点、优缺点以及相互联系。

关键词:面向对象;面向过程;程序设计

中图分类号:TP311.1 文献标识码:A 文章编号:1007-9416(2017)07-0185-01

1 引言

程序设计是为了解决某一类问题所设计的通用的解决办法的程序,通过运行程序后进行特定的输入域输出,最后得出运行结果,是构造一个软件活动必不可少的部分,程序设计活动与大多数设计活动一样是为了平衡约束条件和相互矛盾的需求而进行的。计算机技术在早期发展阶段,机器资源非常昂贵,因此在设计程序时必须要考虑到时间、空间代价等因素,而随着计算机应用技术的发展和软件规模的扩张,程序的结构、可重用性、可维护性、可扩展性等因素在设计时显得尤为重要。现如今,面向对象和面向过程的程序设计是较为常用的两个成熟的设计方式。

2 面向对象和面向过程的程序设计各自的特点

2.1 面向对象的程序设计

面向对象编程是使用对象的编程范式——包含数据域、方法以及它们之间的交互来设计应用和程序。其程序设计方法包括数据抽象、封装、通信、模块化、多态和继承。简单来看,我们可以对面向对象编程作出如下几点理解:首先,它必须将数据抽象为模块结构;其次,必须存在某种方式来实现代码的多态执行;最后,它至少能部分压缩代码和函数。面向对象的程序设计大都遵循传递者模式(Mediator Pattern),并且被设计为从sender中解耦caller,其都提供状态,且都是模块化的[1]。

2.2 面向过程的程序设计

面向过程是一种以事件为中心的编程思想,以功能(行为)为导向,按模块化的设计,分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,在实现过程中一个一个依次调用即可。面向过程的程序设计是自顶而下的,首先他需要设计者将应用程序需要完成的业务按照功能分类,并划分出子模块,同时将整个应用程序所要完成的事情写在一个main函数中,由该main函数对这一系列的子函数的进行调用。对于每个子函数来说,可以对其进行再次分解,使其变为模块更小的子函数。完成一个过程式的设计从本质上来说就是一直重复该过程。用一句话来概括面向过程的设计方法的特征即为:以函数为中心,并将其作为基本单位来划分程序,数据在这种设计方法中一般处于从属的位置。

3 面向对象和面向过程的程序设计的比较

3.1 从在开发过程中的运用来看面向对象和面向过程的程序设计

面向过程的设计方法是通过逐步细化问题的方式来进行设计,该方法符合多数人的逻辑思维方式。但是由于过程式的设计是自顶向下的,这就需要设计人员对要解决的问题有一个整体上的把握,但是现实情况中是很少有人能做到这一点的,尤其是在比较复杂的情况下,因此这种方法对于开发需求比较多的问题或比较复杂的工程项目而言,是不太适用的。开发一个系统的过程是一个创造性的过程,开发者或设计者不仅需要不断地去了解要开发的系统,还需要学习相应的技术,而过程式的设计方法忽略了这一点。面向对象的设计方法是自底向上的,它不需要在一开始用main概括出整个应用程序,其自底向上的特性允许程序设计者从问题的最底层开始逐步加深对系统整体的理解,开发者在设计过程中遇到的需求变化及得到的新的理解,都会再次作用到系统开发本身,形成一种螺旋式的开发方式。

3.2 从编程语言来看面向对象和面向过程的程序设计

C语言是面向过程的设计方法的代表性语言,其包括定义数据的元素和定义操作的元素,比如在C语言中,要使得数据和操作分离开来,就要单独来定义数据和操作,数据和操作的元素在C语言中分别用结构和函数来定义。数據和操作的分离可能会造成对一种数据的操作分布在程序的各个角落,那么当我们要对数据和操作进行修改的时候,即便是微小的修改,也会变得非常困难。在面向过程的设计中,main()函数可以调用子函数,对于整个应用程序来说处在一个尤为重要的位置。一般来说在面向过程的设计方式中,对于整个系统的概括性描述开发者会写在一个main()函数中,之后再逐步细化出整个应用程序。然而,这样做会使得程序的核心逻辑不够清晰,易与一些较外延和易变化的逻辑混淆在一起[2]。

封装性、继承性和多态性是java语言中的三个典型的面向对象的特性。关于封装性:在java语言中,与程序相关的变量和方法由对象对其进行相应的封装,其中变量指对象的状态,方法指对象具有的行为。通过对象的封装,如通过对类中的成员设置访问权限,实现类成员信息的隐藏。关于继承性:通过继承可实现代码重复利用。Java中的类基本都是通过直接或间接地继承java.lang.Object类而得到的。在父类中,如果成员变量和方法的访问权限为private,则不能被子类继承。父类的方法能够被子类重写,子类与父类同名的成员变量也能被子类重命名,但Java语言不能够实现多重继承。关于多态性:在java语言中,多态性体现在两个方面:静态多态性和动态多态性,静态多态性也称为编译时多态,在编译阶段,编译器会根据参数的不同来静态确定具体调用哪个被重载的方法,由方法重载实现;动态多态性也称为运行时多态,由方法重写实现。程序中凡是使用父类对象的地方,都可以用子类对象来代替。一个对象可以通过引用子类的实例来调用子类的方法。

4 结语

总之,面向对象重视对现实世界的抽象,用于解决“做什么”在面向对象设计中,类封装了数据,而类的成员函数作为其对外的接口,抽象地描述了类。用类将数据和操作这些数据的函数放在一起,这可以说就是面向对象设计方法的本质。而面向过程的设计方法重视对问题的功能模块化,用于解决“怎么做”。

参考文献

[1]谭娟.面向过程和面向对象程序设计的比较[J].湖南科技学院学报,2008,(12):117-118.

[2]石博文.浅谈面向对象和面向过程程序设计[J].电子世界,2017,(1):59-60.endprint

猜你喜欢
面向对象程序设计
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
面向对象的计算机网络设计软件系统的开发
面向对象的数据交换协议研究与应用
高职高专院校C语言程序设计教学改革探索
OBE理念下基于Greenfoot的Java程序设计课程教学改革
基于面向对象的Office评测系统的分析
峰丛洼地农作物面向对象信息提取规则集
PLC梯形图程序设计技巧及应用
三级甲等公立医院绩效考核程序设计