面向对象编程

面向对象是近十几年来迅速形成和发展起来的一种新的软件开发方法。进入80年代后期,面向对象方法的研究已大大超出孕育它成长和成熟的程序设计语言范围,被广泛用于诸多复杂的计算机工程领域,并产生深远的影响。
  面向对象技术是一种按照人们对现实世界习惯的认识规律和思维方式来研究和模拟客观世界的方法学。它将现实世界中的任何事物均视为“对象”,把整个世界看成是由许多不同种类的对象构成,每一个对象都有自己的内部状态和运动规律,不同对象之间的相互联系和相互作用就构成了完整的客观世界。面向对象方法学所引入的对象、类、方法、消息、继承、封装等一系列重要概念和良好机制为表达和反映客观世界,分析、设计和实现复杂系统,提供了先进的技术方法,并奠定了坚实的理论基础。
  什么是面向对象
  .面向对��概念和方法是计算机语言界经过长期的实践和探索而逐步形成和创立起来的一种符合人类思维模式和认识规律的先进方法学。其中,面向对象方法的灵魂就是面向对象概念体系,这也是研究和认识面向对象方法的出发点。
  开始以下,介绍:
  1.对象
  概括地讲,对象本质上就是客观现实世界中〔问题空间〕的任何事物。具体地讲,我们用计算机〔求解空间〕所建立的对象,就是用于表达和描述客观事物的一种数据模型,在此数据模型中包含了事物〔对象〕的结构性和行为特征。由此可把对象简单定义为:对象=数据+操作。在面向对象理论中,现实世界中任何事物均被视为对象,这就预示着对象具有无所不能的表达和模拟能力,而这是传统方法绝对不具备的。
  2.对象类〔简称类〕
  类是基于对象概念层次之上更高一级的抽象概念,是定义和描述相同属性〔数据和操作〕的对象的集合的数据模型,即对象元模型。类的重要特征是将同类对象的数据和数据上的操作都封装于类之中,实现了类的外部特性与类的内部实现的收藏和隔离,从而使面向对象方法具有天然的模块化特性。
  3.实例
  实例是由类所创建的具体对象,即给类定义的数据赋予具体值,操作赋予确定处理程序而所获得的实际对象。
  4.方法
  定义在对象上描述对象行为特征的操作称为方法或成员函数。方法是实施对象操作和访问的外部接口,但方法在对象内部的具体实现是不可见的,这保证了对象调用和操作的绝对安全。
  5.消息
  消息是对象之间相互作用的一种通信机制。对象之间的相互操作、调用和应答都是通过发送消息到对象的外部接口来实施的,因此消息就是为完成某些操作而向对象所发送的命令和命令说明。
  6.继承
  继承是对象类层次之间的,一种数据和操作〔程序代码〕的共享机制。如果子类继承父类,那么在父类中所定义的数据和操作也将成为子类的组成部分,这就是继承。继承是面向对象方法所独有的重要概念和机制。
  7.多态
  多态的本质是指一个同名称的操作可对多种数据类型实施操作的能力,即一种操作名称可赋予多种操作语义。
  8.封装
  封装是将一个实体的结构属性〔数据信息〕和行为特征〔操作〕集成为一个整体,并使之成为对象模型。封装提供了对象中信息的隐藏机制对象的数据成员对外是不可见的,只能通过对象的方法实施对象数据的操作,增强了数据操作的安全性。
    9.动态束定
    由于多态性,使程序在编译时难以静态地确定要执行的代码,而只能等到运行时根据当时的条件动态地确定��调用需要的程序代码,这被称为动态束定。
   上述概念构成了面向对象方法的一个完善、理想的概念空间和理论体系。面向对象技术之所以很快被人们重视、研究和应用,是因为这些概念中孕育着现代人类认识世界和处理复杂问题的先进机制和方法,是传统结构化概念和方法所不及的。人类认识世界的自然辩证规律和处理复杂问题的抽象、归纳、细化等普遍方法是面向对象思想形成和发展的本源,而利用计算机技术对此概念的抽象、建模和实现又为人类表达和模拟现实世界提供了最先进的技术和方法。这种把人类先进思想〔自然辩证法〕和人类先进技术〔计算机技术〕的有机结合,自然会创造出一种更高级、更有特色的方法,这就是面向对象。
    面向对象特性
    以面向对象概念为理论基础所创建的面向对象方法,具有传统计算机技术所不具备的诸多先进机制、能力和优异特性。它主要表现为抽象性、封装性、继承性和多态性。
    1.抽象性
    抽象是人类认识和表述复杂现实世界的一种辩证方法和重要手段。抽象在计算机科学中,尤其在系统分析、系统设计和程序设计语言的发展中一直起着主导作用。面向对象方法的创立和形成就是程序设计语言不断抽象和发展的结果。与传统结构化方法相比,面向对象方法具有更高的抽象性,具体表现有以下两方面。
    对象具有极强的抽象表达能力
    面向对象方法采用对象来表达一切事物,它不仅可表达传统结构化数据,而且可表达复杂的大量结构化〔多媒体〕数据;它既可表达任何事物的结构属性,又可表达事物的行为特征。正是由于对象的这种高度抽象的表达能力,使面向对象方法具有很强的建模能力。面向对象方法冲破了传统建模的约束,能更自然、更充分地表达现实世界中存在的语义。
    对象实现了抽象的数据类型
    以对象概念为基础,类是对象的元模型,实现了对象级上更高一层的抽象。首先,将具有相同语义特性的一组对象组成类之后,就可进一步将这些对象的共性加以抽取,并进行统一说明,从而省略了各个对象对共性的重复说明。其次,类将数据结构上的抽象与功能上的抽象结合起来,实现了传统方法所不具备的更高级的抽象。
    2.封装性
    封装的基本含义。
    〔1〕所有软件的组成部件的内部都有明确的范围和清楚的外部边界;
    〔2〕每个部件应有友好的接口,用于实现部件之间的相互联系和相互作用;
    〔3〕部件内部的设计与实现是不可知的,保证软件的质量和可靠性。面向对象方法提供了完整的封装机制,具体表现有以下几方面。
    ■类是封装良好的模块。类定义将其“说明”与“实现”区分开,其内部实现按具体定义的作用域提供保护,分为私有、局部和全局等。
    ■对象是封装的最基本单位。类定义为本类的所有对象提供了共享,但在采用面向对象解决实际间题时,往往要对类定义的属性和成员具体赋予具体信息,使其成为类的一个具体对象。因此,对象的封装比类封装更具体、更细致,成为面向对象方法封装的最基本单位。
    ■面向对象方法的封装性远远优于结构化的封装性。结构化方法不能实现完全的封装。通常,结构化方法是以库函数形式来实现其封装的,但库函数的内部实现与外部接口划分不清楚,仅具有部分的封装。
    3.继承性
    继承性是面向对象方法所独有的,其他方法一律不具备此特性。继承性体现并扩充了面向对象方法的共享机制。具体含义为,对象共享它所在类的属性、操作与约束等语义特性;类层次的继承及多层次的传递性,这一点是继承性最重要的共享机制;多重继承性实现了不同类或对象之间横向共享机制。继承性只所以成为面向对象方法的重要特性和机制之一,主要具有如下作用。
    ■继承性真正实现了软件系统的开放性
    现代软件发展的重要趋势是开放体系结构,主要是指系统的开发应尽可能选用公用接口,实现信息的交换与共享,模块应尽量多的重用。面向对象方法由于具有继承性,使要建立的新系统并非都要重新开始,而是尽量利用已有系统或已建立的类进行扩充或修改而实现自己的新系统。
    ■类层次的继承性是信息组织与分类的行之有效的方法
    类层次反映了现实世界中普遍存在的一般与特殊的语义联系。越靠上层表示着更普遍或更概括的概念,而越往下层表示更专门、更细化、更具体的概念。这种从概括到细化、从一般到特殊、从抽象到具体便是面向对象方法提供给人类的进行信息组织的分类的先进方法。
    ■显著地简化了对象、类的创建工作量
    通过声明新定义的类可直接继承已建立的属性或操作,使类和对象的创建变得极为简单和省事。提高软件开发效率、保证软件开发质量、缩短软件开发周期是继承性带来的必然结果。
   ■增强了软件的重用能力
    继承性真正实现了软件代码的重用,可靠性有了显著地提高。
    4.多态性
    多态性是用一个操作名称实现不同数据类型的多种操作,强调了面向对象方法先进的行为特征。多态性实现的主要方法有以下几种。
    ■运算符重载:即使一种运算符可作用于多种数据类型上;
    ■函数名重载:即同名函数可作用于不同的对象上并产生不同的行为效果;
    ■虚函数与动态束定:即用处在类的不同层次中的同一虚函数名实现类的不同操作行为。这种实现过程是程序运行时,根据当时调用函数的特定条件动态地选择一合适操作,故此称为动态束定。多态性赋予面向对象方法的动态行为特征对软件开发具有如下作用:
    〔1〕自适应的消息响应机制。多态性允许每个对象以适应自身的方式去响应共同的消息,极大地提高了软件操作的透明性、可理解性和可维护性。
    〔2〕多态性增强了软件的灵活性和重用性。采用虚函数与动态束定机制后,允许用户更为明确、易懂的方式去建立通用软件。多态性与继承性层次相结合,使软件具有更广泛的重用性和可扩充性。
    上述由面向对象概念所孕育和形成的诸多先进机制和能力,使得面向对象方法把计算机技术与人类认识、活动的辩证规律最自然地结合在一起,这是面向对象方法独具的先进思想。
综述
    面向对象方法形成和发展的目的自然是应用。应用最早、最直接、最有效的领域是软件工程,其核心是面向对象分析和面向对象设计。通过这方面的成功应用,人们更清楚地认识到面向对象的方法所潜在的能力和优势必将对整个计算机科学的发展产生巨大影响。以此为基础,面向对象技术迅速从程序语言和设计范围走向许多复杂工程领域,如面向对象数据库系统、面向对象人工智能系统、面向对象操作系统等,引起了计算机工业的巨变。与此同时,一种前所未有的计算机面向对象文化也悄然兴起,这就是面向对象方法所蕴涵的能量和划时代作用。
    综上所述,使用面向对象的分析和设计,可以使我们在人类概括客观事物的最自然的方法〔对象、类、组成和通信关系等〕框架上定义和交流系统需求;可以使我们用最自然的构造和分解方法定义系统对象;可以使我们在不同的抽象层理解问题空间;可以更好地进行数据封装和隐藏,加强系统的内聚性,减少系统的耦合性,实现系统的高度模块化。分析和设得到的模型在以后的设计和实现中没有质的变化,只有补充和完善,因此,是一个稳定的模型。这种模型的稳定性可以适应系列化的系统和实际运行系统的调整,使得人员交流变得简单,使得对象构件的重用程度大大提高。这些特点对于提高软件生产力,保证软件质量,增强软件的可维护性,彻底消灭“软件危机”具有十分重要的作用。
真正的面向对象编程语言必须具备以下要点:
■抽象数据类型
■信息封装
■继承
■多态
《面向对象编程》《OPP,Objebt OrientedProgramming》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值