【教学课件】第3章面向对象编程.ppt
《【教学课件】第3章面向对象编程.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第3章面向对象编程.ppt(109页珍藏版)》请在三一办公上搜索。
1、第3章 面向对象编程,学习目标 本章要点上机练习 习 题,学习目标,面向对象的程序设计(Object-Oriented Programming,简称为OOP)以分析真实世界为出发点,较其他设计概念更接近人类直觉观点。封装性、继承性和多态性是OOP的3个特点,本章将针对这3个特点来学习面向对象编程,使读者掌握类、对象、继承、虚函数等基本概念,为后面内容的学习打下基础。,本章要点,面向对象编程的特点类与对象的概念类的封装性类的继承性类的多态性,Visual C+面向对象的特点,我们通常认为Visual C+就是面向对象的程序设计语言,其实,Visual C+是C/C+语言加上支持面向对象概念机制而
2、形成的面向对象的程序语言。因此,Visual C+不是一个纯粹的面向对象的语言,现在流行的另一种语言JAVA才是一个纯面向对象的语言。,Visual C+面向对象的特点,树立了对象的思想后,才能将其运用到编程当中。面向对象的程序设计的本质在于用面向对象的概念寻找、分析现实世界中对象与对象的关系,然后运用程序语言模拟这些现实世界的对象,最后完成电脑系统的构建。,Visual C+面向对象的特点,面向对象的程序设计有3个基本特点:封装性继承性多态性,封装性,一个面向对象的程序语言必须提供一种能够把与对象相关的所有信息封装到对象自身中的机制,即封装性。封装机制允许把一个对象中的各个独立的元素变量和函
3、数定义看成一个整体,而无需考虑对象内部的具体结构。,继承性,程序语言必须提供一种方法,让程序可以使用对象的定义来创建一个新的对象,即继承性。继承性提高了软件的再利用率。,多态性,程序语言必须提供一种方法,以便可以修改新对象的行为,使它从已经存在的对象中派生,即多态性。多态性是指一个对象既可以继承父辈的特点,也有它自己的属性和方法,甚至还可以修改从父辈继承的行为。,类 与 对 象,类与对象的含义*this指针,类与对象的含义,类与对象是Visual C+语言中两个重要的概念。类对象,类,类可以被看成是对对象的特性的描述。C+语言中提供了类这种工具使得应用中的实体(对象)在程序中可以直接被表示为一
4、个标识符,并且可以对它进行引用等操作。,类,因此,我们可以把类看成是建立对象的模型,当在程序中建立一个对象时,就必须以类中的特性描述作为模型来产生一个对象,而这个对象具有这个类的属性与方法。某一对象只有一个类,但一个类的对象可以有好几个,就像一个模子可以做出很多相同属性的零件一样。,类,类用来确定一类对象的行为,而这些行为是通过类的内部数据结构和相关的操作来确定的。类和对象的关系就是抽象和具体的关系。类中应该包含对类的静态属性的描述被称为数据成员变量来描述;以及动态属性的描述由称为成员函数的函数来描述。,类的声明,类的声明格式一般分为说明部分和实现部分。说明部分是用来说明该类中的成员,包含数据
5、成员的说明和成员函数的说明;实现部分是对成员函数的定义。简单地说,说明部分将告诉使用者“做什么”,而实现部分是告诉使用者“怎么做”。,类的声明,类的声明以关键字class开始,后面跟随类的名字。类的声明的一般形式如下:class 类名称/关键字,类名称是一种标识符。public:数据成员或成员函数的说明;,类的声明,private:数据成员或成员函数的说明;protected:数据成员或成员函数的说明;,类的声明,其中各部分的含义如下:class是定义类的关键字,类名称是一个标识符,一般第一个字母大写,如Dog、Cat、Chair等。大括号内是类的说明部分,说明该类的数据成员或成员函数,末尾的
6、分号不能缺省。,类的声明,关键字private、protected、public表示类中数据成员和函数的访问级别。关键字public、private和protected在类体内出现的先后顺序无关,并且允许多次出现,用它们来说明类成员的访问权限。缺省的访问权限是private。,类的声明,是类定义中的实现部分,这部分包含所有在说明部分说明的函数定义。,类成员的访问权限,1)公有类型(public)公有类型允许对数据成员或函数进行访问,它是类与外部的接口,任何外部函数都可以访问公有类型的数据成员或函数。,类成员的访问权限,2)保护类型(protected)保护类型的访问级别比较严格,只有类、派生类
7、的成员函数可以访问。保护类型仿佛将函数或数据成员安放在一道安全门之后,只有那些特定的类才能访问它们。,类成员的访问权限,3)私有类型(private)私有类型给数据成员和函数最严密的保护,只有成员函数才能修改私有数据成员变量或执行私有函数。【例3-1】定义一个名为Person的类,其属性包括年龄、姓名、性别,成员函数包括输入个人信息、得到姓名、得到年龄、得到性别、显示个人信息。(光盘:第3章例3_1),类成员的访问权限,这里为类增加了数据成员和成员函数,为了使类能实现具体的功能还需要为成员函数增加函数体。成员函数实现的基本格式为:(类型)类名:函数名(形式参数)函数体,类成员的访问权限,从基本
8、格式中可以看出,除去“类名:”部分,成员函数与一般的函数定义没有差别。由于C+中允许同一个函数名出现在不同的类中,这表示不同的类中函数包含不同的内容。为了将同名成员函数进行区别,所以引入符号“:”,该符号叫做域运算符,用来指定哪个函数属于哪个类。,类成员的访问权限,如果说类是抽象的,那么对象则是类的实例,也就是说对象总属于某个已知的类。因此,在定义对象之前,一定要先定义好该对象所属的类。,对象,对象的声明可在声明类时直接声明,也可在声明类后再单独声明。对象的声明方法如下:;也可以定义指向类的指针:;,对象,对象声明后就可以使用,通过对象可以访问类中的公有数据成员和成员函数,访问的方法为:.,对
9、象,如果使用指向类的指针方式,则访问的方法为:或.在使用对象时,就可以调用类中的成员。,类的作用域,类的作用域是指在类的定义中由一对大括号所括起来的部分。具体地讲,某个类 A 中某个成员 M 在下列情况下具有类 A 的作用域:成员M出现在类A的某个成员函数中,并且该成员函数没有定义同名标识符。,类的作用域,成员M出现在a.M或A:M表达式中,其中a是A的对象。成员M出现在pa-M这样的表达式中,其中pa是一个指向A类对象的指针。,类的初始化构造函数与析构函数,构造函数与析构函数是类的两种特殊的成员函数。1)构造函数在创建了一个对象后,需要对该对象的数据成员进行初始化。Visual C+允许通过
10、一个专门的函数构造函数来自动完成这些工作。,类的初始化构造函数与析构函数,构造函数的名称必须与类名相同,以便系统能识别它构造函数的特点如下:构造函数是成员函数,函数体可写在类体内,也可写在类体外。,类的初始化构造函数与析构函数,构造函数是一个特殊的函数,该函数的名字与类名相同,一般声明为public函数,无返回值,不指定类型,也不需要加void类型声明。程序中不能直接调用构造函数,在创建对象时系统自动调用构造函数。,类的初始化构造函数与析构函数,构造函数的声明格式为:类名(形式参数)函数体;,类的初始化构造函数与析构函数,2)析构函数 析构函数与构造函数功能相反,当对象所在的函数已执行完毕,系
11、统自动执行析构函数,并将对象占用的资源释放。,类的初始化构造函数与析构函数,析构函数的特点如下:析构函数也是成员函数,函数体可写在类体内,也可以写在类体外。析构函数的名称与类名相同,另外需在其前面加“”字符,用于区别构造函数。析构函数不指定数据类型,并且也没有参数。,类的初始化构造函数与析构函数,一个类中只可能定义一个析构函数,不能重载。析构函数的声明格式为:类名()函数体,类的初始化构造函数与析构函数,【例3-2】定义一个名为Person的类,在类中声明构造函数和析构函数,并分析它们在Person类中的作用。(光盘:第3章例3_2)在这个程序中,如果不写入构造函数和析构函数,则执行的结果错误
12、。,无构造函数、析构函数的执行结果,类的初始化构造函数与析构函数,这里只为构造函数和析构函数各写了一个输出语句,在主函数中并没有出现对它们的调用指令,而执行过程中自动对构造函数和析构函数进行了调用。,类的初始化构造函数与析构函数,在这个例子中,当声明一个类的对象后,如果不做任何操作,系统会自动调用类的构造函数。当对对象使用完毕后,为了释放系统资源,系统会自动调用类的析构函数。,自动调用构造、析构函数的执行结果,类的初始化构造函数与析构函数,每声明一个类的对象就会调用一次构造函数,使用完毕后就释放资源调用析构函数,因此在输出的最后两行先后释放p2和p1所占用的系统资源,从而两次输出“这是析构函数
13、”。,类的初始化构造函数与析构函数,【例3-3】先建立一个新工程,再编辑程序,从而掌握一个完整的Person类及其对象的使用。(光盘:第3章例3_3),完整的类及对象的定义与使用,类的对象成员,当一个类中的数据成员是某一个类的一个对象时,即称这个数据成员是新建类的子对象或对象成员。定义对象成员的方法为:class X 类名1 成员名1;,类的对象成员,类名2 成员名2;类名n 成员名n;/其他成员;,类的对象成员,这里X为新建类的类名,类名1、类名2、类名n,必须为已定义过的类。【例3-4】类的对象成员举例,学习定义对象成员的方法。(光盘:第3章例3_4),类的对象成员,新类的构造函数一般的声
14、明格式为:新类(参数表0):成员1(参数表1),成员2(参数表2)成员n(参数表n),类的对象成员,其中,成员1、成员2成员n是新类中的对象成员;参数表1提供初始化成员1所需要的参数,参数表2提供初始化成员2所需要的参数,依此类推。这几个参数表中的参数均来自参数表0。,*this指针,*this指针是一个指向当前被操作对象的特殊指针。在类的成员函数中*this指针代表当前对象。*this指针可显式使用也可以隐式使用。类中的成员函数可直接访问该类的其他成员,且同一个类的不同对象都共享同一组成员函数。,*this指针,*this指针只允许在成员函数内使用,不允许修改指针的值,但可以改变指针所指向数
15、据的值。【例3-5】建立名为COne的类,成员函数为copy和print,在copy函数中显式使用*this指针,将形式参数赋值给当前操作对象,在主函数中调用copy函数,为对象赋值并输出。(光盘:第3章例3_5),使用*this指针的运行结果,继承与派生,C+语言中的继承是类和类之间一种特殊关系的表示,是基于已存在的类创建新类的方法。类的继承性是C+语言与C语言之间的最大区别,也是OOP的重要特点之一。在解释继承的意义前,仍然采用前面猫、狗类的例子说明与继承有关的名词。,继承与派生,基类(base class):猫、狗类继承于哺乳动物类,因此哺乳类就是猫、狗类的基类,也称为父类。派生类(de
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 面向 对象 编程
链接地址:https://www.31ppt.com/p-5658669.html