第十四章 Visual C++面向对象编程.ppt_第1页
第十四章 Visual C++面向对象编程.ppt_第2页
第十四章 Visual C++面向对象编程.ppt_第3页
第十四章 Visual C++面向对象编程.ppt_第4页
第十四章 Visual C++面向对象编程.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十四讲:Visual C+面向对象编程,杨章伟 e-mail:,课程内容安排,面向对象技术基本概念 对象和类 对象的属性和方法 封装、继承和多态 Visual C+面向对象程序设计 综合练习 思考和习题,面向对象技术基本概念,传统的软件开发技术(如结构化技术)是采用自顶向下的思想指导程序设计,即将目标划分为若干子目标,子目标再进一步划分下去,直到目标能被程序设计实现为止。 面向对象技术根据现实生活中的具体实体,将程序的实现分解为一个一个具体对象的实现,这是更符合人的思维方式的一种方法。比如,在生产一辆汽车的过程中,将组成汽车的各个零件都先生产出来,再拼合成汽车,这就是面向对象技术,如图14-

2、1所示。,面向对象程序设计语言,最早出现的面向对象程序设计语言是Simula语言。该语言是1967年挪威科学家Ole-Johan Dahl和Kristen Nygaard正式发布的。其引入了所有后来面向对象程序设计语言所遵循的基础概念,例如对象、类、继承等。 随后,比较经典的面向对象程序设计语言有SmallTalk、C+及Java等。总体来说,面向对象的程序设计语言有如下的一些特点。 访问控制。在C+中,类有私有的(private)、保护的(protected)和公有的(public)3种访问机制。 封装:将一组数据和与这组数据有关的操作集合组装在一起,形成一个能动的实体,也就是对象 继承性。

3、通过对已有对象进行增加或部分修改的方法建立新的对象。 多态性。多态性意味着存在多种形式,能使人们在程序中激活任何属于某一类的成员函数。,对象,面向对象技术不同于传统的结构化技术,主要体现在其使用对象来进行程序开发。对象(Object),是指包含数据及其操作的实体,也即在传统的数据结构中加入一些过程,使用这些过程来赋予对象对数据的操作功能,这些过程就是后面要提到的成员函数,如图14-2所示。,在现实世界中,对象指的就是具体的事物,例如:飞机、汽车、人等。每个对象都含有自己的内部状态和行为,例如人具有名字、身高、体重等内部状态,也具有走路、吃饭等行为。在面向对象的概念中,将对象的内部状态称为属性,

4、将其行为称为方法或事件。对象之间的联系通过消息来传递,消息机制是对象间相互联系和相互作用的方式。 说明:在Visual C+中,整个应用程序可以是一个对象,对象也是应用程序的一个部分,例如控件和图表等,类,类(Class),是指具有相似内部状态和行为的实体的集合。在类的构造过程中,有由特殊到一般的归纳法和由一般到特殊的演绎法两种方法。在归纳的过程中,从一个个具体的事物中把共同的特征抽取出来,形成一个一般的概念,即“归类”。例如:人、狮子、老鹰等,因为其都能动,所以将其归类为动物,如图14-3所示。,封装,封装是面向对象编程思想中的重要特性之一,其作用在于定义对象和操作,只提供抽象的接口,并隐藏

5、其具体实现。封装的结果是类,也即把有相似属性(成员变量)、操作(成员函数)的事物绑在一起处理(即一个类)。 例如,为了方便管理公司职工,可以给职工写一个类,该类的属性可以有年龄、性别、姓名、入职日期等,操作可以有开除、调动等,这就实现了封装,如图14-8所示。,例如,将时钟的数据和功能封装起来,构成一个时钟类。按C+的语法,时钟类的声明如下: class Clock public: /公共成员,用作外部接口 void SetTime(int NewH,int NewM,int NewS); void ShowTime(); private: /私有成员,外部无法访问 int Hour; int

6、 Minute; int Second; ,继承,继承是面向对象程序设计的又一个重要概念,其可以将现实生活的概念对应到面向对象的程序逻辑中。例如,车是一个类,具有一些公共的性质;而汽车也是一类,但其属于车,所以汽车是继承于车的,而奔驰汽车又继承与汽车,如图14-9所示。,一个类(派生类、子类)是从另一个类(基类、父类)派生而来,派生类继承了基类的所有特性。在C+中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承称为单继承;从多个基类派生的继承称为多继承。一般来说,继承有3种方式。 公有继承:也称为public继承类型。 保护继承:也称为protected继承类型。 私

7、有继承:也称为private继承类型。,继承类型与成员类型的继承关系,根据继承的不同类型,基类的成员在派生类中的访问控制受继承类型的限制,具体限制如表14-2所示。,多态,多态性也是面向对象程序设计的重要特征之一,多态性是指发出同样的消息被不同类型的对象接收时导致完全不同的行为。例如,动物都有吃的行为,而羊和狼吃的方式和内容都不一样,如图14-10所示。,Visual C+面向对象程序设计,Visual C+ 6.0不仅仅是一个编译器,更是一个全面的应用程序开发环境,使用该软件可以充分利用具有面向对象特性的C+来开发出专业级的Windows应用程序。,类的定义,C+语言中类的定义语法为: cl

8、ass 类名称 public|protect|private: 成员数据类型 成员名称; 成员函数 ; 下面是一个简单的类(class)的定义,该类没有定义函数, class student public: int number; char name10; int age; ;,类的继承,前面的面向对象基础理论中提到了,类是可以继承(Inherit)的,也即基于现有的类再创建新类。此处假定类B继承了类A,那么,则称A为基类(Base Class,也叫父类),B为派生类(Derived Class,也叫子类)。派生类不但拥有自己新的成员变量和成员函数,还可以拥有基类的成员变量和成员函数。一个派生

9、类可以只继承一个类,也可以继承多个类,这种情况则称为多重继承。,单一继承是最普通的一种继承形式,在该继承形式中,派生类仅有一个基类,继承的派生类定义方法如下: class 派生类名:访问权限 基类名称 . ; 例如,要实现类B与类A的继承关系,在定义类B之前必须已定义了类A,并用如下的格式定义类B。 class B:public或private A . ;,多重继承是指一个类可以从多个基类中派生出来。在派生类由多个基类派生出来的多重继承模式中,基类是用基类表语法成份来说明的,多重继承的语法与单一继承很类似,只需要在声明继承的多个类之间加上逗号来分隔,如下定义形式: class 派生类名:访问权

10、限 基类名称,访问权限 基类名称,访问权限 基类名称 ; 例如B类是由类C和类D派生的,声明如下: class B:public C,public D ,虚函数与多态性,在面向对象的程序设计中,经常用到类的继承,目的在于保留基类的某种特性,但并不是所有基类的特性都适合于派生类,也就是说,这个派生类并不想继承基类的所有内容,因此,引出了虚(Virtual)函数的概念。 利用Virtual函数的特性可以让类只具有类型而没有实际操作内容,形成抽象类。这种类不用来声明也不能声明对象,只为了让其他类继承形成该类的基本类型。 例如: class CAnimal public: void eat(); virtual void breathe(); ;,综合练习,写出如下程序代码运行后的输出。 01#include iostream.h 02class Student 03 04private: 05 06public: 07void Output (); 08Student () 09 10cout1endl; 11 12 Student () 13 14 cout”2endl; 15 16; 17void Student:Output() 18 19cout3endl; 20 21void main() 22 23Student s; 24s.Output(); 25,思考和习题

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论