《C语言程序设计(Visual C++ 6.0环境)》电子教案-第10章C++面向对象程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

本章主要知识点(1)C++面向对象的程序实例(2)类与对象(3)继承与派生(4)运算符重载本章导读C语言是一种结构化程序设计语言,它是面向过程的,在处理较小规模的程序时一般比较容易实现,而当程序规模较大时,C语言就显示出了它的不足。在这种情况下C++应运而生,C++语言是从C语言演变而来的,它保留了C语言的所有优点,同时也增加了面向对象的功能。现在C++已成为程序设计中应用最广泛的一种语言。《C语言程序设计》(VisualC++6.0环境)返回本书目录第10章C++面向对象程序设计第10章C++面向对象程序设计《C语言程序设计》(VisualC++6.0环境)返回本章导读10.2类与对象10.3继承与派生10.5综合实训10.4运算符重载10.1C++面向对象的程序实例《C语言程序设计》(VisualC++6.0环境)返回本章目录10.1.2C++语言概述10.1.1C++面向对象的程序实例10.1C++面向对象的程序实例10.1.1C++面向对象的程序实例《C语言程序设计》(VisualC++6.0环境)返回本节目录2.C++程序实例(2)3.C++程序实例(3)1.C++程序实例(1)【例10.1】定义一个矩形类。(程序名为l10_1.cpp。)#includeiostream.hclassrectangle//定义一个矩形类{public:rectangle(floatlen,floatwid)//构造函数{length=len;width=wid;}floatGetArea();//声明成员函数,计算矩形面积floatGetPerimeter();//声明成员函数,计算矩形周长~rectangle(){}//析构函数private:floatlength;//私有数据floatwidth;};10.1.1C++面向对象的程序实例《C语言程序设计》(VisualC++6.0环境)返回本节目录1.C++程序实例1floatrectangle::GetArea()//成员函数的具体实现{returnlength*width;}floatrectangle::GetPerimeter()//成员函数的具体实现{return2*(length+width);}voidmain(){floatl,w;cout请输入矩形的长和宽:;cinlw;rectanglex(l,w);//定义一个矩形类对象coutx.GetArea()endl;coutx.GetPerimeter()endl;//调用成员函数}10.1.1C++面向对象的程序实例《C语言程序设计》(VisualC++6.0环境)返回本节目录10.1.1C++面向对象的程序实例《C语言程序设计》(VisualC++6.0环境)返回本节目录实例1的功能是定义一个矩形类,该类有长和宽两个数据成员,用来描述矩形的静态特征(属性),有构造函数用来用初始化类对象,另外还有计算面积和周长两个成员函数作为该类的外部接口,供类外的程序访问。当用户输入矩形的长和宽之后,将构造一个实例矩形,并输出矩形的面积和周长。例如用户输入5,6CR,则输出结果为:3022【例10.2】类的派生。(程序名为l10_2.cpp。)#includeiostream.hclassrectangle//定义矩形类{public:voidInitRect(floatlen,floatwid)//定义类的成员函数{length=len;width=wid;}floatGetArea();floatGetPerimeter();private://定义私有成员变量floatlength;floatwidth;};floatrectangle::GetArea()//成员函数实现{returnlength*width;}10.1.1C++面向对象的程序实例《C语言程序设计》(VisualC++6.0环境)返回本节目录2.C++程序实例2floatrectangle::GetPerimeter()//成员函数实现{return2*(length+width);}classsquare:publicrectangle//从矩形类中派生新类(正方形类){public:voidInitSquare(floatb){InitRect(b,b);}//新增的成员函数(初始化};//正方形)voidmain(){squarex;//声明正方形类对象x.InitSquare(8);//调用正方形类新增的成员函数coutx.GetArea()endl;//调用从矩形类中继承下来的成员函数coutx.GetPerimeter()endl;//调用从矩形类中继承下来的成员}//函数(GetPerimeter)10.1.1C++面向对象的程序实例《C语言程序设计》(VisualC++6.0环境)返回本节目录10.1.1C++面向对象的程序实例《C语言程序设计》(VisualC++6.0环境)返回本节目录实例2的功能是先定义一个矩形类,然后从该矩形类中派生出一个新的正方形类(正方形是矩形的一个特例)。程序中先声明一个正方形类对象,然后将其初始化为边长为8的正方形,再调用从矩形类中继承下来的计算面积和周长两个函数,计算出正方形的面积和周长。该程序的输出结果为:6432【例10.3】“+”运算符重载。(程序名为l10_3.cpp。)#includeiostream.hclassrectangle//定义一个矩形类{public:rectangle(floatlen=0,floatwid=0)//构造函数{length=len;width=wid;}floatGetArea(){returnlength*width;}//成员函数(计算面积)rectangleoperator+(rectanglea2)//将+运算符重载{rectanglea;//用于两个矩形对象相加a.length=length;a.width=width+a2.GetArea()/length;returnrectangle(a.length,a.width);}10.1.1C++面向对象的程序实例《C语言程序设计》(VisualC++6.0环境)返回本节目录3.C++程序实例3private://私有成员变量floatlength;floatwidth;};voidmain(){rectanglex(5,9),y(5,6),z;//声明类对象cout第一个矩形面积为:x.GetArea()endl;cout第二个矩形面积为:y.GetArea()endl;z=x+y;//对两个矩形相加cout两个矩形面积之和为:z.GetArea()endl;}10.1.1C++面向对象的程序实例《C语言程序设计》(VisualC++6.0环境)返回本节目录实例3的功能是先定义一个矩形类,然后将“+”运算符重载为可以使两个矩形类对象相加。该程序的输出结果为:第一个矩形面积为:45第二个矩形面积为:30两个矩形面积之和为:7510.1.2C++语言概述《C语言程序设计》(VisualC++6.0环境)返回本节目录由于结构化程序设计自身的不足,在20世纪80年代出现了面向对象程序设计方法,C++语言也由此而产生。面向对象程序设计(Object-Orientedprogramming,简称OOP)设计的出发点就是为了能更直接的描述客观世界中存在的事物(即对象)以及它们之间的关系。面向对象程序设计是对结构化程序设计的继承和发展,它认为现实世界是由一系列彼此相关且能相互通信的实体组成,这些实体就是面向对象方法中的对象,而对一些对象的共性的抽象描述,就是面向对象方法中的类。类是面向对象程序设计的核心。10.1.2C++语言概述《C语言程序设计》(VisualC++6.0环境)返回本节目录C++是目前最流行的面向对象程序设计语言。它在C语言的基础上进行了改进和扩充,并增加了面向对象程序设计的功能,更适合于开发大型的软件。C++是由贝尔实验室在C语言的基础开发成功的,C++保留了C语言原有的所有优点,同时与C语言又完全兼容。它既可以用于结构化程序设计,又可用于面向对象程序设计,因此C++是一个功能强大的混合型程序设计语言。C++最有意义的方面是支持面向对象程序设计的特征。虽然与C语言的兼容性使得C++具有双重特点,但它在概念上和C语言是完全不同的,学习C++应该按照面向对象程序的思维去编写程序。《C语言程序设计》(VisualC++6.0环境)返回本章目录10.2.2类的构造与封装10.2.1面向对象的基本概念10.2类与对象10.2.3创建对象10.2.4友元10.2.5模板10.2.6程序实训10.2.1面向对象的基本概念《C语言程序设计》(VisualC++6.0环境)返回本节目录1.对象从一般意义上讲,客观世界中任何一个事物都可以看成是一个对象。例如一本书,一名学生等。对象具有自己的静态特征和动态特征。静态特征可以用某种数据来描述,如一名学生的身高、年龄、性别等;动态特征是对象所表现的行为或具有的功能,如学生学习、运动、休息等。面向对象方法中的对象是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位,对象由一组属性和一组行为构成。属性是用来描述对象静态特征的数据项,行为是用来描述对象动态特征的操作序列。许多对象具有相同的结构和特性,例如不管是数学书还是化学书,它们都具有大小、定价、编者等特性。在现实生活中,我们通常将具有相同性质的事物归纳、划分成一类,例如数学书和化学书都属于书这一类。同样在面向对象程序设计中也会采用这种方法。面向对象方法中的类是具有相同属性和行为的一组对象的集合。类代表了一组对象的共性和特征,类是对象的抽象,而对象是类的具体实例。例如,家具设计师按照家具的设计图做成一把椅子,那么设计图就好比是一个类,而做出来的椅子则是该类的一个对象,一个具体实例。拿【例10.1】中定义的矩形类来说,该类只是所有矩形的一个蓝本,它只是代表了矩形的一些特征,而该类的实例则是一个特定的矩形。10.2.1面向对象的基本概念《C语言程序设计》(VisualC++6.0环境)返回本节目录2.类10.2.2类的构造与封装《C语言程序设计》(VisualC++6.0环境)返回本节目录1.类的封装类的封装就是将对象的属性和行为结合成一个独立的实体,并尽可能隐蔽对象的内部细节,对外形成一道屏障,只保留有限的对外接口使之和外界发生联系。类的成员包括数据成员和成员函数,分别描述类所表达问题的属性和行为。对类成员的访问加以控制就形成了类的封装,这种控制是通过设置成员的访问权限来实现的。在面向对象程序设计中,通过封装将一部分行为作为外部接口,而将数据和其它行为进行有效的隐蔽,就可以达到对数据访问权限的合理控制。把整个程序中不同部分的相互影响减少到最低限度。10.2.2类的构造与封装《C语言程序设计》(VisualC++6.0环境)返回本节目录2.类的定义类定义的一般格式为:class类名称{public:公有数据和成员函数/*外部接口*/protected:保护数据的成员函数private:私有数据和成员函数};10.2.2类的构造与封装《C语言程序设计》(VisualC++6.0环境)返回本节目录关键字class说明了类定义的开始,类中所有的内容用大括号括起来。类的成员可分为三种级别的访问权限:public(公有的):说明该成员是公有的,它不但可以被类的成员函数访问,而且可以被外界访问,所以说公有类型定义了类的外部接口。Protected(保护的):说明该成员只能被该类的成员函数和该类的派生类的成员函数访问。Private(私有的):说明该成员只能被类的成员函数访问,外界不能直接访问它。类的数据成员一般都应该声明为私有成员。10.2.2类的构造与封装《C语言程序设计》(VisualC++6.0环境)返回本

1 / 90
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功