理论教育 面向过程与面向对象:实践指南

面向过程与面向对象:实践指南

时间:2023-10-25 理论教育 版权反馈
【摘要】:与传统的结构化程序设计相比,面向对象程序设计吸取了结构化程序设计的一切优点。面向对象程序设计的三大特性是:封装、继承和多态。

面向过程与面向对象:实践指南

1.面向过程程序设计概念

面向对象出现以前,面向过程程序设计是程序设计的主流。面向过程(Procedure Oriented)是一种以过程为中心,结构化的编程思想。结构化程序设计(structured programming)是进行以模块功能和处理过程设计为主的设计方法,是过程式程序设计的一个子集,它对写入的程序使用逻辑结构,使得理解和修改更有效、更容易。

结构化程序设计概念最早由E.W.Dijkstra在1965年提出,是软件发展的一个重要的里程碑。它的主要观点是采用自顶向下、逐步求精及模块化的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。结构化程序设计主要强调的是程序的易读性。

(1)结构化程序设计方法。结构化程序设计方法主要采用自顶向下、逐步细化,模块化设计及结构化编码。

①自顶向下、逐步细化。程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。对一些任务复杂以至无法描述的问题,不要一开始就过多追求众多的细节,先从最上层总目标开始设计,然后将问题拆分为一系列较小的功能部件,逐步使问题具体化。

②模块化。一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,每一个小目标称为一个模块。

③结构化编码。为解决的问题设计好一个结构化的算法之后,还要善于进行结构化编码,即正确地使用高级语言中顺序、选择、循环三种基本控制结构构造进行编码。

(2)结构化程序设计特点。结构化程序中的任意基本结构都具有唯一入口和唯一出口,并且程序不会出现死循环。在程序的静态形式与动态执行流程之间具有良好的对应关系。

①结构化程序设计优点。由于模块相互独立,因此在设计其中一个模块时,不会受到其它模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为我们可以充分利用现有的模块作积木式的扩展。按照结构化程序设计的观点,任何算法功能都可以通过由程序模块组成的三种基本程序结构的组合,即顺序结构、选择结构和循环结构来实现。

结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;“单入口单出口”的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构良好、易于调试的程序来。

②结构化程序设计缺点。用户的需求难以在系统分析阶段准确定义,致使系统在交付使用时产生许多问题;用系统开发每个阶段的成果来进行控制,不能适应事物变化的要求;系统的开发周期长。(www.daowen.com)

2.面向对象程序设计

面向对象程序设计的思路和人们日常生活中处理问题的思路是相似的。在自然世界和人类社会生活中,一个复杂的事物总是由许多部分组成。例如,一部电话由听筒、机壳、键盘、送收话筒及其内部电路组成。

面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会。这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。与传统的结构化程序设计相比,面向对象程序设计吸取了结构化程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在:

第一,面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构化程序由于数据和过程分离引起的弊病。

第二,面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构化程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的。

面向对象程序设计的三大特性是:封装、继承和多态

(1)封装。封装是指将数据与具体操作的实现代码放在某个对象内部,使这些代码的实现细节不被外界发现,外界只能通过接口使用该对象,而不能通过任何形式修改对象内部实现,正是由于封装机制,程序在使用某一对象时不需要关心该对象的数据结构细节及实现操作的方法。使用封装能隐藏对象实现细节,使代码更易维护,同时因为不能直接调用、修改对象内部的私有信息,在一定程度上保证了系统安全性。

(2)继承。继承来源于现实世界,一个最简单的例子就是孩子会具有父母的一些特征,即每个孩子都会继承父亲或者母亲的某些特征,当然这只是最基本的继承关系,现实世界中还存在着更复杂的继承。面向对象的继承机制主要是用于实现代码的复用,多个类所公用的代码部分可以只在一个类中提供,而其他类只需要继承即可。

(3)多态。多态与继承联系紧密,是面向对象编程中另一个突出的特征,所谓的多态是指在继承体系中,所有派生类都从基类继承接口,但由于每个派生类都是独立的实体,因此在接收同一消息的时候,可能会生成不同的响应。多态的作用作为隐藏代码实现细节,使得代码能够模块化;扩展代码模块,实现接口重用。简单来说:一种行为产生多种效果。

总的来说:封装可以隐藏实现细节同时包含私有成员,使得代码模块化并增加安全指数;继承可以扩展已存在的模块,目的是代码重用;多态则是为了保证类在继承和派生的时候,家谱中任何类的实例被正确调用,实现接口重用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈