第五章成员函数精选文档.ppt
《第五章成员函数精选文档.ppt》由会员分享,可在线阅读,更多相关《第五章成员函数精选文档.ppt(84页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章成员函数本讲稿第一页,共八十四页5.1 成员函数的概念 为了实现对象的行为,我们把一些相关的语句组织在一起,并给它们注明相应的名称,形成一组织在一起,并给它们注明相应的名称,形成一些相对独立而且便于管理和阅读的小块程序,每个小程序块描述了一个完整的行为,这种形式的组合就构成了成员函数。组合就构成了成员函数。面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第二页,共八十四页5.2 算法描述 5.2.1 算法的概念 一个完整的对象应该包括两个方面的内容,即对数据的描述(对象属性)和对操作的描述(对象行为)。对操作的描述也就是算法,是设计和实现对
2、象行为的灵魂。一个完整的算法应该具有以下5个特性:有穷性、确定性、有效性、输入性和输出性。面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第三页,共八十四页5.2.2 算法的表示 为了表示一个算法,可以采用多种形式。最常见的几种方法有自然语言表示法、流程图表示法、伪代码表示法和计算机语言表示法。自然语言表示法:自然语言表示法就是用我们日常生活中的语言来表示算法的实现过程,对采用何种语言没有限制。但是采用自然语言表示往往不太严格,容易造成歧义。另外,用这种方法描述包含分支和循环的算法不太方便。因此,自然语言表示法很少用来描述复杂的算法。面向对象程序
3、设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第四页,共八十四页面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版图图5.1 5.1 一般流程图表示算法一般流程图表示算法 流程图表示法:流程图表示法:流程图就是用一些图框表示流程图就是用一些图框表示各种操作。用流程图来表示算法各种操作。用流程图来表示算法最大的优点就是直观形象,便于最大的优点就是直观形象,便于理解,并且实用性强,能够方便理解,并且实用性强,能够方便的表示包的表示包含分支和循环的结构,避免了用自然语言表示算法的不足。本讲稿第五页,共八十四页面向对象程序设
4、计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版图图5.2 N-S5.2 N-S流程图表示算法流程图表示算法本讲稿第六页,共八十四页伪代码表示法:伪代码是用介于自然语言和计算机语言之间的文字和符号伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。从结构上看,伪代码表示法类似于最终的计算机来描述算法。从结构上看,伪代码表示法类似于最终的计算机语言,每一行就表示一个基本的操作。它不用图形符号,因此语言,每一行就表示一个基本的操作。它不用图形符号,因此书写方便、格式紧凑,也易于理解,便于向最终的程序过渡。书写方便、格式紧凑,也易于理解,便于向最终的程序过渡。伪
5、代码表示法书写格式比较自由,容易直观表达出设计者的伪代码表示法书写格式比较自由,容易直观表达出设计者的思想。同时,书写的算法也容易修改,很容易写出结构化的思想。同时,书写的算法也容易修改,很容易写出结构化的算法。算法。因此,这种方法一般被专业的软件开发人员采用,特别是在详细设计中采用伪代码表示法,可以使以后的编码阶段变得简单。面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第七页,共八十四页计算机语言表示法:一个算法要拿到计算机上去运行,最终还是得采用一个算法要拿到计算机上去运行,最终还是得采用计算机语言表示。计算机是无法识别流程图和伪代码的。计
6、算机语言表示。计算机是无法识别流程图和伪代码的。只有严格按照计算机语言语法编写的程序才能被计算机只有严格按照计算机语言语法编写的程序才能被计算机执行。目前使用的计算机语言多种多样,本书所介绍的执行。目前使用的计算机语言多种多样,本书所介绍的面向对象的程序设计语言(面向对象的程序设计语言(C+C+)就是种很好的描述和)就是种很好的描述和实现算法的工具。实现算法的工具。面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第八页,共八十四页5.3 成员函数的定义与调用 5.3.1 成员函数的定义面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设
7、计 第二版第二版第二版第二版定义一个成员函数必须具备四个条件:定义一个成员函数必须具备四个条件:函数必须具有返回值类型,即函数必须有返回值,且该返回值的类型应该与函数返回值的类型一致 函数必须具有一个名字,即函数名。函数必须具有一个形参(形式参数)列表,C+规定,形参列表以左括号“(”开始,到右括号“)”结束,且各个形参之间用“,”分开。函数要完成一定的功能,必须具有一个函数体,其中,前面函数要完成一定的功能,必须具有一个函数体,其中,前面的三个条件构成了函数的原型。的三个条件构成了函数的原型。本讲稿第九页,共八十四页说明一个函数原型的一般形式有两种:函数返回值类型 函数名(参数类型1 参数名
8、1,参数类型2 参数名2,);函数返回值类型函数返回值类型 函数名函数名(参数类型参数类型1,1,参数类型参数类型2,);2,);以上两种方法均可以使用,但是为了增加程序的可读性建议使用第一种方法。面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第十页,共八十四页成员函数的定义:成员函数的定义:(1 1)对于代码较少的成员函数的定义,可以直接在类中进行。)对于代码较少的成员函数的定义,可以直接在类中进行。)对于代码较少的成员函数的定义,可以直接在类中进行。)对于代码较少的成员函数的定义,可以直接在类中进行。class Circleclass Ci
9、rcle protected protected:int Radiusint Radius;publicpublic:fioat circle_area(fioat pi)return pi*Radius*Radius;fioat circle_area(fioat pi)return pi*Radius*Radius;(2 2)对于代码较多的成员函数的定义,通常只在类中进行原型说明,在类外对成员函数进行定)对于代码较多的成员函数的定义,通常只在类中进行原型说明,在类外对成员函数进行定)对于代码较多的成员函数的定义,通常只在类中进行原型说明,在类外对成员函数进行定)对于代码较多的成员函数的定义
10、,通常只在类中进行原型说明,在类外对成员函数进行定义。义。义。义。class Circleclass Circle protected protected:int Radiusint Radius;publicpublic:fioat circle_area(fioat pi)fioat circle_area(fioat pi);;float Circle float Circle:circle_area(float pi)circle_area(float pi)return pi*Radius*Radius;return pi*Radius*Radius;请注意,这时的函数名应该包含:请
11、注意,这时的函数名应该包含:类名类名(Circle)+(Circle)+作用域分辨符作用域分辨符(:)+)+原函数原函数(circle_area)(circle_area)本讲稿第十一页,共八十四页5.3.2 成员函数的调用一般形式有两种:对象名对象名.函数名函数名(实参实参1,1,实参实参2,);2,);对象指针对象指针函数名函数名(实参实参1,1,实参实参2,);2,);例如:void main()void main()cout “The area of circle=”cout “The area of circle=”Z)将!右边的结果(逻辑值)取非R按位取反运算符 A将A值按位取反R
12、取地址与取值运算符&pX=&Y提取变量Y的地址,然后赋给指针变量pXR*X=*pY提取指针变量pY所指的地址单元的内容,然后赋给变量X类型转换运算符(类型)X=(int)Y将Y转换为整型,然后赋给XR动态内存分配运算符NewPa=new int4;创建一个整型数组,其中含有4个元素,并将首地址给PaRdeletedelete Pa;delete Pb;数组必须用delete 进行删除普通的堆对象可用delete删除面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第二十九页,共八十四页4-*X*Y将两数相乘L/X/Y将两数相除%X%Y将两数相除取其
13、余数5+X+Y将两数相加X Y将两数相减6移位运算符A A 2将A值向右平移2位7!=X X Y判断X是否大于Y=X=X=Y判断X是否大于等于Y8=X=Y判断X是否等于YX!=Y判断X是否不等于Y9位运算符&A&B将A和B的值按位相与L10A B将A和B的值按位相异或11|A|B将A和B的值按位相或12逻辑运算符&XZ将&两边的结果(逻辑值)相与L13|XZ将|两边的结果(逻辑值)相或14条件运算符?:Z=XY?E1:E2;如果XY为真,Z等于E1的值,否则等于E2的值R面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第三十页,共八十四页15赋值
14、运算符=X=Y将Y的值赋给XR+=X+=Y将X的值加Y后,再赋给X,等价于 X=X+Y-=X-=Y将X的值减Y后,再赋给X,等价于 X=X Y*=X*=Y将X的值乘Y后,再赋给X,等价于 X=X*Y/=X/=Y将X的值除Y后,再赋给X,等价于 X=X/Y%=X%=Y将X的值对Y取余后,再赋给X,等价于 X=X%Y&=X&=Y将X的值与Y按位相与后,再赋给X,等价于 X=X&Y=X=Y将X的值与Y按位相异或后,再赋给X,等价于 X=X Y|=X|=Y将X的值与Y按位相或后,再赋给X,等价于 X=X|Y=X=Y将X的值左移Y位后,再赋给X,等价于 X=X=X=Y将X的值右移Y位后,再赋给X,等价于
15、 X=X Y16逗号运算符,E1,E2,E3从左到右依次求出表达式E1,E2,E3的值L面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第三十一页,共八十四页5.4.2 表达式 所谓表达式是指:所谓表达式是指:用运算符将运算对象(也称操作数)用运算符将运算对象(也称操作数)连接起来的、符合语法规则的式子连接起来的、符合语法规则的式子。根据连接运算对象的连接符(运算符)的不同大体上可以将根据连接运算对象的连接符(运算符)的不同大体上可以将表达式分为以下四种:表达式分为以下四种:算术运算表达式(算术运算表达式的运算结果是数值算术运算表达式(算术运算表
16、达式的运算结果是数值 )逻辑运算表达式(逻辑运算表达式的运算结果是逻辑值逻辑运算表达式(逻辑运算表达式的运算结果是逻辑值 )赋值运算表达式(赋值运算符的结合性是从右向左的赋值运算表达式(赋值运算符的结合性是从右向左的 )逗号运算表达式(逗号运算表达式的值是最后一个表达式逗号运算表达式(逗号运算表达式的值是最后一个表达式的值的值 )面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第三十二页,共八十四页注意:注意:当一个表达式中包含多种运算符时,必须考虑运算符的优先级和当一个表达式中包含多种运算符时,必须考虑运算符的优先级和结合性。结合性。可以用()
17、改变运算符的优先级;可以用()改变运算符的优先级;例如例如:int i=1,n=2;int i=1,n=2;n=i+n 1;n=i+n 1;/因为因为“+”“+”高于高于“”“”高于高于“=”“=”,所以先运算,所以先运算i+n i+n 等于等于3 3,/再运算再运算3131得得6 6,最后,最后n=6n=6。用用“()”“()”改变先后次序如下:改变先后次序如下:int i=1,n=2;int i=1,n=2;n=i+(n 1);n=i+(n 1);/因为因为 (n1n1)高于高于“+”“+”高于高于“=”“=”,所以先运算,所以先运算n1 n y?e1:e2;x y?e1:e2;i+;i+
18、;赋值运算符左侧必须是一个可以引用的存储单元(如:变量),决不能是表达式。面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第三十四页,共八十四页5.4.3 数据类型的转换类型转换就是将一种类型的值转换为另一种类型的值。类型转换就是将一种类型的值转换为另一种类型的值。隐式类型转换隐式类型转换 其转换过程是由系统按照一定的转换规则自动完成的。其转换过程是由系统按照一定的转换规则自动完成的。(1 1)当)当charchar或或shortshort型数据与型数据与intint型数据进行运算时,将型数据进行运算时,将charchar或或shortshort
19、型装换成型装换成intint类型;类型;(2 2)当两个运算对象数据类型不一致时,在做算术运算前,)当两个运算对象数据类型不一致时,在做算术运算前,级别低的自动转换为级别高的数据类型级别低的自动转换为级别高的数据类型(3 3)在赋值表达式)在赋值表达式E1=E2E1=E2的情况下,赋值运算符右端的情况下,赋值运算符右端E2E2的结果的结果值需转换为值需转换为E1E1类型,然后赋值。类型,然后赋值。面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第三十五页,共八十四页显式类型转换 显式类型转换的方法有两种。(1)强制转换法 强制转换法的格式为:(类
20、型名)表达式;如:(int)x;在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化。(2)函数法 函数法的转换格式为:类型名(表达式);如:int(x);本讲稿第三十六页,共八十四页显示类型转换有时是必需的,如前面提到的void*指针。我们必须将malloc返回的void*指针显示转换为特定的类型 int*p=static_cast(malloc(100);(int)3.1415;/就是取整数部分(int)a%10;/取a的个位数 本讲稿第三十七页,共八十四页 在程序设计过程中,使用以下三种控制结构作为算法的基本单元。事实上,任何一个成员函数的定义都离不开这三种基本结构:5
21、.5.1 5.5.1 顺序结构顺序结构顺序结构是指程序语句按顺序,自上而下依次执行 5.5.2 5.5.2 选择结构(又称分支结构)选择结构(又称分支结构)选择结构是指能根据选择条件,改变程序走向的一种选择结构是指能根据选择条件,改变程序走向的一种语句语句 5.5.3 5.5.3 循环结构循环结构 循环结构是指能根据循环条件,重复执行某段程序的一种循环结构是指能根据循环条件,重复执行某段程序的一种语句。是代码可重用技术的一种基本形式语句。是代码可重用技术的一种基本形式 5.5 控制结构本讲稿第三十八页,共八十四页5.5.1 顺序结构 顺序结构是指程序语句按顺序,自上而下依次执行。顺序结构是指程
22、序语句按顺序,自上而下依次执行。如,输入三角形的三边长,求三角形面积的函数。如,输入三角形的三边长,求三角形面积的函数。float f_area(float a,float b,float c)float f_area(float a,float b,float c)float s;float s;s=1.0/2 *(a+b+c);s=1.0/2 *(a+b+c);return sqrt(s*(s return sqrt(s*(s a)*(s-b)*(s-c);a)*(s-b)*(s-c);面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第三十九
23、页,共八十四页5.5.2 选择结构(又称分支结构)if 和 if elseifif是最简单的选择语句,一般格式为:是最简单的选择语句,一般格式为:if()我们所要执行的语句多于一条时,我们所要执行的语句多于一条时,C+C+规定,必须将规定,必须将这些语句用这些语句用“”“”和和“”“”括起来。一般格式为:括起来。一般格式为:if()2 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第四十页,共八十四页if elseif else是用来解决在互相对立的两种条件下,所要分别进是用来解决在互相对立的两种条件下,所要分别进行处理的两批语句。行处理的两批
24、语句。if(if()12nelseelse n+1n+2n+k n+k+1 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第四十一页,共八十四页当分支结构(即选择结构)的分支较多时,当分支结构(即选择结构)的分支较多时,C+C+提供了嵌套式的选提供了嵌套式的选择结构:择结构:if(if()1)12nelse if(else if()2)n+1n+2n+kelseelse n+k+1n+k+2n+k+m n+k+m+1 面向对象程序设计面向对象程序设计面向对象程序设计面向对象程序设计 第二版第二版第二版第二版本讲稿第四十二页,共八十四页 例如,设
25、计一个函数,当输入大于例如,设计一个函数,当输入大于0 0时,输出为时,输出为1 1;当输入小于;当输入小于0 0时,输出为时,输出为-1-1;当输入等于;当输入等于0 0时,输出为时,输出为0 0;(注意本例中判断条件有;(注意本例中判断条件有三种情况)三种情况)int f_s(int x)int f_s(int x)if if(x0 x0)else if(x0)/到此排除了到此排除了x0 x0 x0和和x=0 x=0的情况的情况 x=1;x=1;elseelse/到此排除了到此排除了x0 x0 x0的情况,只剩下的情况,只剩下x=0 x=0的情况的情况 x=0;x=0;return x;r
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 成员 函数 精选 文档
限制150内