理论教育 面向对象程序设计:计算机导论

面向对象程序设计:计算机导论

时间:2023-11-09 理论教育 版权反馈
【摘要】:面向对象程序设计是一种计算机编程架构。面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。面向对象程序设计流程图如图6.17所示。面向对象程序设计优缺点1)优点面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程的程序设计。

面向对象程序设计:计算机导论

面向对象程序设计(Object Oriented Programming,OOP)是一种计算机编程架构。OOP的一条基本原则是计算机程序由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的3个主要目标:重用性、灵活性和扩展性。OOP=对象﹢类﹢继承﹢多态﹢消息,其中核心概念是类和对象。

面向对象程序设计方法是尽可能模拟人类的思维方式,使得软件的开发方法与过程尽可能接近人类认识世界、解决现实问题的方法和过程,使得描述问题的空间与问题的解决方案空间在结构上尽可能一致,把客观世界中的实体抽象为问题域中的对象。

面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。面向对象程序设计流程图如图6.17所示。

(1)面向对象程序设计原理

面向对象技术是对计算机的结构化方法的深入、发展和补充,在保障进行良好的计算机软件的需求设计的同时,也需要尽可能地实现利用低成本来开发出高质量的应用软件的目标。消息是传递一个对象与另一个对象之间的信息,实现两者进行通信的桥梁,消息链负责指定功能无条件地执行,而计算机软件的主程序则负责对消息进行筛选(哪些可以接受、可以执行,哪些则需要摒弃,不可带入)。软件开发主要由几个方面组成,分别为需求定义、制订计划、软件的功能设计、软件的功能实现、验证和确认,这5个方面是最基本的环节,缺一不可。

图6.17 面向对象程序设计

(2)面向对象程序设计特点

1)封装性

封装是指将一个计算机系统中的数据以及与这个数据相关的一切操作语言(即描述每一个对象的属性以及其行为的程序代码)组装到一起,一并封装在一个有机的实体中,把它们封装在一个“模块”中,也就是一个类中,为软件结构的相关部件所具有的模块性提供良好的基础。在面向对象技术的相关原理以及程序语言中,封装的最基本单位是对象,而使得软件结构的相关部件实现“高内聚、低耦合”的“最佳状态”便是面向对象技术的封装性所需要实现的最基本的目标。对于用户来说,对象是如何对各种行为进行操作、运行、实现等细节是不需要刨根问底了解清楚的,用户只需要通过封装外的通道对计算机进行相关方面的操作即可。封装大大地简化了操作的步骤,使用户使用起计算机来更加高效、更加得心应手。

2)继承性

继承性是面向对象技术中的另一个重要特点,其主要指的是两种或者两种以上的类之间的联系与区别。继承,顾名思义,是后者延续前者的某些方面的特点,而面向对象技术则是指一个对象相对于另一个对象的某些独有的特点、能力进行复制或者延续。如果按照继承源进行划分,则可以分为单继承(一个对象仅仅从另一个对象中继承其相应的特点)与多继承(一个对象可以同时从另外两个或者两个以上的对象中继承所需要的特点与能力,并且不会发生冲突等现象);如果从继承中包含的内容进行划分,则继承可以分为4类,分别为取代继承(一个对象在继承另一个对象的能力与特点之后将父对象进行取代)、包含继承(一个对象在将另一个对象的能力与特点进行完全的继承之后,又继承了其他对象所包含的相应内容,结果导致这个对象所具有的能力与特点大于等于父对象,实现了对于父对象的包含)、受限继承、特化继承。

3)多态性

宏观的角度来讲,多态性是指在面向对象的技术中,当不同的多个对象同时接收到同一个完全相同的消息之后,所表现出来的动作是各不相同的,具有多种形态;从微观的角度来讲,多态性是指在一组对象的一个类中,面向对象技术可以使用相同的调用方式来对相同的函数名进行调用,即便这若干个具有相同函数名的函数所表示的函数是不同的。

(3)面向对象程序设计优缺点(www.daowen.com)

1)优点

面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程的程序设计。在面向过程的程序设计中,问题被看作一系列需要完成的任务,函数(在此泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。

比较面向对象程序设计和面向过程程序设计,还可以得到面向对象程序设计的其他优点:

①数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰。

②通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减小了出错概率,降低软件维护的难度。

③结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程。

④通过对对象的辨别、划分可以将软件系统分割为若干相对独立的部分,在一定程度上更便于控制软件复杂度

⑤以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而更好地实现系统。

⑥通过对象的聚合、联合,可以在保证封装与抽象的原则下实现对象在内在结构以及外在功能上的扩充,从而实现对象由低到高的升级。

2)缺点

①运行效率较低。类的大量加载会牺牲系统性能,降低运行速度。虽然CPU速度在提高,内存容量在增加,但这一问题仍会随着系统规模变大而逐渐显示出来,变得越发严重。

②类库庞大。由于类库都过于庞大,程序员对它们的掌握需要一段时间,从普及、推广的角度来看,类库应在保证其功能完备的基础上进行相应的缩减。

③类库可靠性。越庞大的系统越会存在我们无法预知的问题隐患,程序员无法完全保证类库中的每个类在各种环境中百分之百的正确,当使用的类发生了问题,就会影响后续工作,程序员也有可能推翻原来的全部工作。

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

我要反馈