面向对象程序设计期末复习指导.ppt

上传人:李司机 文档编号:4113821 上传时间:2023-04-04 格式:PPT 页数:57 大小:1.08MB
返回 下载 相关 举报
面向对象程序设计期末复习指导.ppt_第1页
第1页 / 共57页
面向对象程序设计期末复习指导.ppt_第2页
第2页 / 共57页
面向对象程序设计期末复习指导.ppt_第3页
第3页 / 共57页
面向对象程序设计期末复习指导.ppt_第4页
第4页 / 共57页
面向对象程序设计期末复习指导.ppt_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《面向对象程序设计期末复习指导.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计期末复习指导.ppt(57页珍藏版)》请在三一办公上搜索。

1、面向对象程序设计,期末复习指导,C+编程基础 程序流程控制 函数机制 指针与数组 类与对象继承和派生类,主 要 内 容,C+数据类型,顺序流程 分支流程 循环流程,#includevoid main()int a,b;a=3;b=5;couta b;coutendl;,#includevoid main()int x=5;switch(2*x-3)case 4:coutx;case 7:cout2*x+1;case 10:cout3*x-1;break;default:coutdefaultendl;coutswitch end.endl;,顺序流程 分支流程 循环流程,if(ab)couta

2、;else coutb;,运行结果:11 14 switch end.,循环流程,图2.2 dowhile语句,图2.1 while语句,图2.3 for语句,顺序流程 分支流程 循环流程,#include#includevoid main()int a8=25,48,32,85,64,18,48,29;int max,min;max=min=a0;for(int i=1;iai)min=ai;coutmax:maxendl;coutmin:minendl;,顺序流程 分支流程 循环流程,#include#includevoid main()int a8=25,48,32,85,64,18,4

3、8,29;int max,min,i;max=min=a0;i=1;while(iai)min=ai;i+;coutmax:maxendl;coutmin:minendl;,函数及其定义 函数是程序实现的重要机制,一组实现特定功能的相关语言的集合 函数的定义方式:函数返回类型 函数名(函数参数表)函数头 函数体 如:合法函数名 swap()inttochar(),函数的参数 形参函数定义中的参数 实参调用函数时所给的参数 实参将信息传递给形参的方式-默认的方式是按值传递-当参数是数组或指针时,按地址传递-当参数是引用时,按引用传递,应用举例:void swap(int a,int b);voi

4、d swap(int*a,int*b);void swap(int,图3.1 函数调用图,函数的返回值 用返回语句返回函数的运行结束 return(表达式);若无返回值,则当省略返回语句,或写:return 函数的返回值可以是除数组以外的其他类型;当函数返回值类型是引用时,可以让函数调用作为左值,使用const限制的参数、返回值与函数 const 参数函数中不能修改的参数;如:int max(const int array,int size);const返回值只可能出现函数返回值为引用的情况,该函数调用表达式不能作为左值用;const int,特殊的函数,内联函数 函数重载 递归函数,void

5、 sort(int,特殊的函数,内联函数 函数重载 递归函数,double fact(int n)if(n=1)ruturn 1;else return(n*fact(n-1);,数组的定义数组的定义方法为 类型说明 数组名常量表达式 数组名代表了这些具有相同类型的元素的集合 常量表达式的值代表元素个数 类型说明表明了元素的类型如:char name 20;int studentAge10*10;/定义了一个具有100个整型值的数组变量studentAge,数组的存储和访问数组元素在内存占用连续的空间,数组名就是这个空间的首地址数组元素和一般变量一样可单独使用数组名加下标的方式来访问数组的每个

6、元素,数组的下标从0开始多维数组的所有元素在内存也是线形存放,字符串特殊的字符数组字符串数组是一种经常使用的二维数组 以空字符结束的字符数组 可直接从键盘读入一个字符串 一个字符串可直接送到显示器上,指针的定义一个变量可用于存放其他变量的地址,则称该变量为指针变量,简称为指针指针变量定义的一般形式:类型说明符*指针变量名;如:int*ip;定义一个指向整型空间的指针 char*str;,指针的特点 指针本身也是一种变量,占有存储空间,用来存放指针值 指针是另一个变量在内存中的地址,只允许取整的整数值 所有合法指针变量应当是非0值,若某指针取0值,即null,则表示该指针所指向的对象不存在,即空

7、指针 多种数据类型对应有其相应的指针类型,指向某种数据类型变量的指针,称为该类型的指针 某类型指针变量的增1(或减1)引起地址增加1(或减1)取决于一个该类型数据所占字节数,例:#include void f2(int,类的定义与使用 数据和操作分离引出的问题:-程序修改较麻烦,改变数据的定义,寻找分散的程序有困难;-可靠性差,一致性难以保证;类是数据和对这些数据进行操作的函数的封装体。定义:Class 类名 类定义体;,class sample char ch;int i;float f;public:sample()ch=A;i=1;f=0.0;sample(char s,int m,fl

8、oat l)ch=s;i=m;f=l;void show()coutchif;,类的定义举例,数据成员,成员函数,“学类真累”“类不是累累也学类”,void main()sample obj1;/创建对象obj1时,自动调用 默认构造函数 obj1.show();sample obj2(B,10,8.9);/创建对象时,自动调用 重载构造函数 obj2.show();,对象的初始化,class sample char ch;int i;float f;public:sample()ch=A;i=1;f=0.0;sample(char s,int m,float l)ch=s;i=m;f=l;v

9、oid show()coutchif;,构造函数:函数名与类名相同 无函数返回类型说明 系统自动被调用 可以重载,静态成员的关键点,静态成员函数和静态数据成员都属于 类的静态成员,它们都不是对象成员。对静态成员的引用不需要用对象名,直接用类名。在静态成员函数的实现中只能引用类 中说明的静态成员。,#include#includeclass A char*a;public:A(char*s)a=new charstrlen(s)+1;strcpy(a,s);coutaendl;A()delete a;cout“撤销对象!endl;,void main()A x(“黑龙江);A*y=new A(“

10、电大);delete y;,运行结果:黑龙江 电大 撤销对象!撤销对象!,整个c+程序设计全面围绕面向对象的方式进行,类的继承特性是c+的一个非常重要的机制,继承特性可以使一个新类获得其父类的操作和数据结构,程序员只需在新类中增加原有类中没有的成分。可以说这一章节的内容是c+面向对象程序设计的关键。,继承与派生类,5,(一)继承的含义,交通工具,汽 车,飞 机,轿车,卡车,民航机,战斗机,基类(父类),派生类(子类),派生类(子类),class Vehicle public:void EditSC(float speed,int total);/成员函数 protected:float spe

11、ed;/速度 int total;/最大载人量;void Vehicle:EditSC(float speed,int total)Vehicle:speed=speed;Vehicle:total=total;,交通工具类的定义,(二)声明一个派生类的一般格式为:class 派生类名:继承方式 基类名/派生类新增的数据成员和成员函数;,从已有类派生出新类时,可以在派生类内完成以下几种功能:可以增加新的数据成员;可以增加新的成员函数;可以重新定义基类中已有的成员函数;可以改变现有成员的属性。,派生类的定义举例#include class Base public:Base(int i,int j

12、)x=i;y=j;void Move(int a,int b)x+=a;y+=b;void Show()coutBase(x,y)endl;private:int x,y;,class Derived1:private Base public:Derived1(int i,int j,int m,int n):Base(i,j)x=m;y=n;void Show()coutNext(x,y)endl;void Show1()Base:Show();private:int x,y;,class Derived2:public Base public:Derived2(int i,int j,fl

13、oat m):Base(i,j)x=m;Move(int n)x*=n;void Show2()Base:Show();private:float x;,疑问1:派生类的函数成员是不是可以自由的 访问原本在基类中的成员?疑问2:基类成员的访问控制是否在派生类中 还是保持不变?,图 基类成员对派生类的可见性,(三)公有、保护和私有继承,派生类继承基类可以采用的三种格式之一:公有继承 class Derived:public Base/;私有继承 class Derived:private Base/;保护继承 class Derived:protected Base/;,基类成员的访问控制,继承

14、方式,基类成员在派生类中的访问控制,(四)派生类对象的构造和撤销,定义派生类对象时,构造函数的执行顺序:调用基类的构造函数;顺序调用内嵌对象成员的构造函数;调用派生类的构造函数体中的内容。析构函数的执行顺序:撤消对象时,析构函数的调用顺序与 构造函数的调用顺序正好相反。,例1 派生类构造函数和析构函数的应用,#include#include class Point/定义基类Point int x,y;public:Point(int x1=0,int y1=0):x(x1),y(y1)coutPoint:x yn;Point()cout“Point 对象撤销!n;,class Text/定义基

15、类Text char text100;/文字内容 public:Text(char*str)strcpy(text,str);cout“Text 构造函数执行!n;Text()cout“Text 对象撤销!n;,class CircleWithText:public Point/定义派生类 Text msg;float total;public:CircleWithText(int cx,int cy,char*ms,float x):Point(cx,cy),msg(ms)total=x;cout“total=”total;CircleWithText()cout“Point with Te

16、xt 对象撤销n;,void main()CircleWithText cm(3,4,hello,3.5);,基 类数据成员,运行结果:Point:3 4 Text 构造函数执行!total=3.5 Point with text 对象撤销 Text对象撤销 Point对象撤销,(五)多继承,派生类只有一个基类,这种派生方法称为单基派生或单继承。,当一个派生类具有多个基类时,这种派生方法称为多基派生或多继承。,1、多继承的声明,一般形式如下:class 派生类名:继承方式1 基类名1,继承方式2 基类名2,继承方式n 基类名n/派生类新增的数据成员和成员函数;,程序举例2,#include#i

17、nclude class Point int x,y;public:Point(int x1=0,int y1=0):x(x1),y(y1)coutPoint:x yn;Point()cout“Point 对象撤销!n;,class Text char text100;/文字内容 public:Text(char*str)strcpy(text,str);coutText 构造函数执行!n;Text()coutText 对象撤销!n;,class CircleWithText:public Point,public Text float f;public:CircleWithText(int

18、cx,int cy,char*msg,float fx):Point(cx,cy),Text(msg)f=fx;coutPoint with Text con!n;CircleWithText()coutPoint with Text desn;void main()CircleWithText cm(3,4,hello,8.5);,2、多继承的构造函数与析构函数,构造函数的执行顺序如下:依次调用基类的构造函数;然后按定义顺序调用对象成员的构造函数 再调用派生类自己的构造函数 析构函数的执行顺序:撤消对象时,析构函数的调用顺序与构 造函数的调用顺序正好相反。,一、单选题(共 10 分,每题 1

19、分)1设x和y均为bool量,则x|y为假的条件是()。A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假2.若使p指向包含30个整型元素的动态数组空间,则使用的定义语句为()A.int*p=new int30;B.int*p=new int(30);C.int*p=new 30;D.*p=new int30;3.假定一个类的构造函数为“A(int aa=1,int bb=0)a=aa;b=bb;”,则执行“A x(4);”语句后,x.a和x.b的值分别为()。A.1和0 B.1和4 C.4和1 D.4和0,二、填空题(共20 分,每空 2 分)1.假定x是一个逻辑量,则x&F

20、ALSE的值为_。2 一个数组的_实际上是指向该数组的第一个元素的指针,并且在任何时候都不允许修改它。,三、程序填充题,根据题意在横线上填写合适的内容。(共40 分,每空 4 分)1.统计字符串中英文字母个数的程序。#include int count(char str);void main()char s180;couts1;cout=a,(1)stri=A&stri=Z(2)num+(3)return num,四、理解问答题,分别写出前2小题的程序运行结果和指出后3小题的程序或函数功能。(共30 分,每题 6 分)1.#include class A int a,b;public:A()a=b=0;A(int aa,int bb)a=aa;b=bb;int Sum()return a+b;int*Mult()int*p=new int(a*b);return p;void main()A x(2,3),*p;p=new A(4,5);coutSum()Mult()endl;运行结果:,5 6 9 20,2.void fun5(char*a,const char*b)while(*b)*a+=*b+;*a=0;函数功能:,实现字符串系统函数strcpy的功能,把b所指的字符串拷贝到a所指的字符数组空间中。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号