面向对象程序设计及其多态性在C++语言中的实现
- 格式:doc
- 大小:89.50 KB
- 文档页数:22
面向对象程序设计浅析摘要摘要:面向对象的方法是一种分析方法、设计方法和思维方法.面向对象方法学的出发点和所追求的基本目标是使人们分析、设计和实现一个系统的方法尽可能接近人们认识的一个系统的方法。
面向对象程序设计是一种围绕真实世界的概念来组织模型的程序设计方法,本文通过分析面向对象程序设计的基本思想和技术特点,以面向对象的Java语言为实例,介绍了面向对象程序设计的优点、特征、分析方法、一般步骤及基本实现方式。
对面向对象技术的程序开发有一定的参考意义。
关键词: 面向对象; 类; 抽象; 继承; 封装; 多态性Discussion on Object_Oriented Programming(Zhejiang N ingbo Dahongying Vocation & Tech Co llege, N ingbo, 315175, Ch inaAbstract:Object o riented p rogramm ing is a k ind of p rogramm ing design method centering on o rganizing modes based on the concep t of real wo rld1 O bject is meant abst ract objects characterized by objects of the real wo rld in computer science and anycomponent of p rogramm ing operat ion m igh t be regarded asobject1 The object in a classmust have the same data st ructure and sharethe common operat ing code, i1e1 classes are the common behavio rs of the objects and sets at different states1 Th rough specificat ionsfo r TV sets, the basic TV funct ion and wo rk ing mechanism are clarified, so a classmeans object modes created, a class in the objecthas the concep t of the same data st ructure1Ke yw o rds: object o riented; class; abst ract; inheritance; encap sulat ion; po lymo rph ism一、引言“对象”(Object)一词最初在亚里士多德的哲学论著和笛卡尔的《哲学原理》中多次被用到,但是“面向对象”一词的使用却只有十几年的历史。
20世纪80年代以来,随着计算机科学技术的发展,“面向对象”一词被广泛的使用,这也从侧面反映了这一名词所折射的技术在计算机发展中举足轻重的地位。
面向对象技术作为一种新型的独具优越性新技术正引起全世界越来越广泛的关注和重视,它被誉为“研究高新技术的好方法”。
许多学者预言:正如70年代结构化方法对计算机技术应用所产生的巨大影响和促进那样,在21世纪面向对象技术将会强烈影响、推动和促进一系列高新技术的发展和多学科的综合。
目前软件工程领域的一个研究重点是面向对象的软件设计方法学。
传统的结构化方法虽然给软件工作带来的许多改进,但仍然没有从根本上解决软件危机。
成果的可重用性很差,其根本原因是由于结构化的方法是以“过程”和“操作”为中心来构造系统、设计程序结构。
面向对象的方法则是从识别客观世界的实体出发,建立客观世界的概念模型,并以此为基础来构造系统、设计程序。
由于面向对象方法根据稳定的对象建立系统模型,因而这些模型往往是稳定的,可很好地适应需求的变化,具有良好的可维护性、可扩充性和可重用性。
鉴于面向对象程序设计的诸多优点,下面,我们就来简单探讨一下面向对象的程序设计方法。
二、什么是对象对象是什么?一般认为,对象是包含现实世界物体特征的抽象实体。
如同在“面向对象”这个名称中所隐含的,对象是理解面向对象技术的关键。
你现在可以看看周围的世界,这里有很多现实世界中对象的例子:你的狗、你的书桌、电视机和自行车。
这些现实世界中的对象有两个相同的特征:它们都有状态和行为。
例如,狗有状态(名字、颜色、种类)和行为(叫、吃东西)。
自行车也有状态(当前档、两个轮子、档的个数)和行为(刹车、加速、减慢、换档)。
而所谓的“面向对象”就是以“对象”为对象来分析问题,或是操纵一个对象来解决实际问题,在现实世界中操纵一个对象是一件很普遍的事情,如调整时钟,或是经过训练之后驾驶一辆汽车、使用一台电脑等。
这些对象通常包含某种固定的信息,并且提供使用这些信息的一些工具,如一个时钟记载着当前的时间,并提供设置时间的按扭,通过这些按扭可发调整时钟的时间。
而且通常大的对象有小的对象组成,如多数汽车装有时钟,它们也许和手表外观不同但却具有相同的功能。
汽车生产厂家不必为每一辆汽车重新制造一个时钟,通常购买现成的时钟,然后根据特殊要求装配它们。
除了为汽车专门设计时钟机械接口外,并不需要却了解时钟内部真正的结构。
这也就是说,用这种面向对象的思想,你不必却清楚的知道这个“对象”内部的机理,你要做的就是选择合适的对象,然后把它放在合适的接口上却完成自己所需的功能就行了。
在编写程序的过程中,我们最终的目的就是要生产一个具有多种应用功能的软件,这同生产一辆汽车是类似的,软件也有很多部分(模块)组成,这每一个模块都可以看成一个对象实体,它们和现实世界中的对象模型一样也有状态和行为。
在具体的程序中,变量中包含它的状态、用方法可发实现它的行为,这样就可以把状态和行为封装成一个实体,完成特定的功能,这就是程序中的对象,它可以表示现实世界中的对象,也可以用它表示抽象概念。
例如,GUI窗口系统中的对象中的事件可以表示用户按鼠标或按键的行为。
如果把这一思想应用到程序开发中,这就是面向对象的程序设计方法。
三、面向对象程序设计1、什么是面向对象的程序设计前面我们已经说过了“对象”的概念,也简单提到了面向对象的程序设计思想,那么具体来说,什么才叫做真正的面向对象程序设计呢?面向对象程序设计是一种围绕真实世界的概念来组织模型的程序设计方法,他采用对象方法来描述现实世界的各种问题。
比如制作软件一些特殊的构件时,可以使用户不必了解部件内部复杂的代码,就能知道某些信息,并能使用这些构件来操纵软件对象。
用户可以不必了解软件对象内部的工作机制,就可以利用它们来创建更大的程序,也可以根据需要,调整这些软件对象的接口,生成一个可以正常工作的应用程序。
这种方法,运用到在计算机科学的程序设计中,就是面向对象的程序设计方法。
它的目标就是创建抽象的、可以运行的软件对象。
这些软件对象在程序的实际设计过程中就叫做“类”。
程序中所有的对象都是从类中产生的程序结构,定义变量也称之为类的实例化。
或者说,类是创建对象的模板,他包含着所创建对象的状态描述和方法的定义。
类的完整描述包含了外部接口和内部算法以及数据结构形式。
由一个特定的类所创建的对象被称为是这个类的实例。
因此类是对象的抽象及描述,他是具有共同行为的若干对象的统一描述体。
1、面向对象的程序设计语言面向对象技术最初是从面向对象的程序设计语言开始的。
最初的00语言以Smalltalk为代表,从80年代中期以后,面向对象的语言已呈现百花齐放的局面。
各种不同风格的面向对象程序设计语言达数十种之多。
其中除Smalltalk以外,较为著名的还有:C++、Objective—C 、CLOS、Eiffle、Java、ABCL/1,POOL. ADA等。
面向对象的程序设计是00技术中最为成熟的领域之一。
2、向对象程序设计的基本特征面向对象的编程方法的4 个基本特征1抽象抽象就是忽略问题的细枝末节, 以便更充分地注意与当前目标有关的方面。
抽象并非是对问题全面的描述, 而只是选择其中核心的、共性的、能说明其性质的关键性问题, 而非共性及细节部分可留给低级的派生类来解决。
比如: 在上例中, 要设计一个电视机类, 只需考虑所有电视机都具有的、共性的行为, 而不去关心电视机的外形、尺寸、频道多少、制式如何等细节问题。
抽象包括两个方面,一是过程抽象, 二是数据抽象。
过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个实体看待, 尽管这个操作实际上可能由一系列更低级的操作完成。
数据抽象定义了数据类型和施加于该类型对象上的操作, 并限定了对象的值只能通过使用这些操作修改和观察。
212继承有了抽象的类还不足以体现对现实世界非共性的、细节的描述, 因此, 面向对象程序设计方法中还提出了继承的概念。
对象的一个新类可以从现有的类中派生, 这个过程为类的继承。
新类继承了原始类的所有特性, 新类称为原始类的派生类(或称子类) , 而原始类称为新类的基类(或称父类)。
派生类可以从他的基类那里继承方法和实例变量, 并且可以修改或增加不包含在父类中的新方法及自身所特有的数据成员, 使之更适合特殊的需要, 以便体现非共性的细节部分。
这正体现了现实世界中一般与特殊的关系。
比如, 在上例中, 定义了电视机类(基类) , 但是这个类过于抽象, 还必须将其细化, 这个细化的过程便可由派生类(子类) 来解决, 派生类可详细地定义电视机的尺寸、调制制式、外观等细节。
不同派生类的对象便可设计出各种不同型号和种类的电视机。
但这些不同型号和种类的电视机的工作原理是相同的, 因为他们是从其父亲(基类) 那里继承来的。
由此可见, 继承是一种联结类的层次模型, 继承性很好地解决了软件的可重用性问题, 这是面向过程程序设计方法所不能解决的问题。
213封装面向对象程序设计方法与面向过程的程序设计方法是完全不同的。
面向过程的程序设计中, 数据是静态的, 他等待着函数调用来处理这些数据, 只要是数据格式与数据类型满足要求, 任何函数都可以调用和处理这些数据, 函数对数据访问并无严格的控制。
在面向对象程序设计中, 将数据和施加于这些数据的操作的函数封装在一起作为类的定义。
同时, 封装还提供了一种对数据严格控制的访问机制, 除了被封装对象内部的函数才有可能访问封装在对象内部的数据。
外部过程必须通过操作接口才能与外界交换信息。
因此, 数据被隐藏在封装体内, 这种方法也被称为信息隐藏。
事实上, 信息隐藏是用户对封装性的认识, 封装则为信息隐藏提供支持。