- 553.00 KB
- 2022-04-29 14:29:28 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'定义c类ppt课件
面向对象程序设计的特点一、抽象性抽象是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。先注意问题的本质及描述,其次是实现过程或细节。数据抽象:描述某类对象的属性或状态(对象相互区别的物理量)。代码抽象:描述某类对象的共有的行为特征或具有的功能。抽象的实现:通过类的声明。
例11.1类的应用举例#includeclassClock//时钟类的声明{public://外部接口,公有成员函数voidSetTime(intNewH,intNewM,intNewS);voidShowTime();private://私有数据成员intHour,Minute,Second;};//时钟类成员函数的具体实现voidClock::SetTime(intH,intM,intS){Hour=H;Minute=M;Second=S;}voidClock::ShowTime(){cout<”,ptr->showtime();用new也可以动态生成一个对象,生成对象时自动调用构造函数Clock*ptr=newClock;deleteptr;释放
voidset(char*string){delete[]Buffer;Buffer=newchar[strlen(string)+1];strcpy(Buffer,string);}};voidmain(){CMessagem;m.set("hello");m.display();}1、析构函数:用来释放对象,在对象删除前,用它来做一些清理工作,它在类对象销毁时自动调用。二.析构函数#include"iostream.h"#include"string.h"classCMessage{private:char*Buffer;public:CMessage(){Buffer=newchar(" ");}~CMessage(){delete[]Buffer;}voiddisplay(){cout<classA{public:A(intsma){cout<<"A"<<""<classA{public:A(){s=" ";}A(char*p){s=p;cout<classClock//时钟类的声明{public://外部接口,公有成员函数Clock(intNewH,intNewM,intNewS);voidShowTime()const;private://私有数据成员intHour,Minute,Second;};//时钟类成员函数的具体实现Clock::Clock(intNewH,intNewM,intNewS){Hour=NewH;Minute=NewM;Second=NewS;}voidClock::ShowTime()const{cout<classR{public:R(intrl,intr2){Rl=rl;R2=r2;}voidprint();voidprint()const;private:intR1,R2;};voidR::print(){cout<classA{public:A(inti);voidprint();constint&r;private:constinta;staticconstintb;};constintA::b=10;
this指针是隐含在成员函数体中的指针,它指向调用该成员函数的对象。§11.6this指针#include"iostream.h"classCTest{public:intN;CTest(intn){N=n;}intGetN(){cout<NreturnN;}};voidmain(){CTestTest1(8);CTest*Ptest2=newCTest(5);Test1.GetN();Ptest2->GetN();}
例11.16voidtime::copy(time&aa){if(this==&aa)return;*this=aa;}voidmain(){timea1,a2(12,0,0);a1.print();a1.copy(a2);a1.print();}#include"iostream.h"classtime{public:time(){h=m=s=0;}time(inti,intj,intk){h=i;m=j;s=k;}voidcopy(time&aa);voidprint(){cout<*pfun)(5)<funP->*pfun}
注:①引用数据成员可以有下面几种形式:(P为指向对象x的指针,PC为指向对象成员C的指针)P->*PC;P->C;x.*PC;x.C;②对成员函数的调用可以有下面几种形式(pfun为指向成员函数fun的指针)(P->*pfun)(5);P->fun(5);(x.*pfun)(5);x.fun(5);③A&m=xm是对象x的引用。二、对象指针、对象引用做函数参数对象做函数参数,形参改变不影响实参对象指针、对象引用做函数参数,形参变化,实参也变化
#include"iostream.h"classM{public:M(){x=y=0;}M(inti,intj){x=i;y=j;}voidcopy(M*m);voidaddxy(inti,intj){x+=i;y+=j;}voidprint(){cout<addxy(10,20);m3.addxy(10,20);}voidmain(){Mp(5,7),q,r;q.copy(&p);q.print();r.copy(&p);r.print();fun(p,&q,r);p.print();q.print();r.print();}
classDATE{public:DATE(intm,intd,inty);private:…};DATEdate[2]={DATE(7,22,1998),DATE(7,23,1998)};或:DATEdate[2];date[0]=DATE(7,22,1998);date[1]=DATE(7,23,1998);初始化的方法有两种:定义的同时初始化;定义好之后,再单个元素初始化;§11.10对象数组一、对象数组定义:声明:类名数组名[元素个数];访问方法:通过下标访问数组名[下标].成员名二、对象数组初始化
数组生成时,编译器调用数组中每个元素的构造函数或缺省构造函数,数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象。通过初始化列表赋值。例:DATEdate[2]={DATE(7,22,1998),DATE(7,23,1998)};如果没有为数组元素指定显式初始值,数组元素便使用默认值初始化(调用默认构造函数)。不声明构造函数,则采用默认构造函数。各元素对象的初值要求为相同的值时,可以声明具有默认形参值的构造函数。各元素对象的初值要求为不同的值时,需要声明带形参的构造函数。当数组中每一个元素对象被删除时,系统都要调用一次析构函数。数组元素赋初值时,date[0]=DATE(7,22,1998);会有一个临时的对象产生,调用构造函数,初始化临时对象,之后将临时对象的值赋给date[0],然后调用析构函数,释放掉临时对象。
(3)用new生成的数组不能直接初始化(动态数组),需要每个元素单独初始化。DATE*date=newDATE[2];date[0]=DATE(7,22,1998);date[1]=DATE(7,23,1998);销毁时要加上[]。Delete[]date;如果省略了[],则编译器只对第一个数组元素调用析构函数。#includeusingnamespacestd;classPoint{public:Point(){X=Y=0;cout<<"DefaultConstructorcalled.n";}Point(intxx,intyy){X=xx;Y=yy;cout<<"Constructorcalled.n";}~Point(){cout<<"Destructorcalled.n";}intGetX(){returnX;}intGetY(){returnY;}voidMove(intx,inty){X=x;Y=y;}private:intX,Y;};intmain(){Point*Ptr=newPoint[2];//创建对象数组Ptr[0].Move(5,10);//通过指针访问数组元素的成员Ptr[1].Move(15,20);//通过指针访问数组元素的成员cout<<"Deleting..."<#includeclassSample{public:intx,y;Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}voiddisp(){cout<<"x="<classSample{intx,y;public:Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}~Sample(){if(x==y)cout<<"x=y"<classSample{intx;public:Sample(inta){x=a;cout<<"constructingobject:x="<classSample{intx,y;public:Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}voiddisp(){cout<<"x="<disp();}
题1下面是一个类的测试程序,设计出能使用如下测试程序的类。voidmain(){Testa;a.init(68,55);a.print();}其执行结果为:测试结果:68-55=13二、编程题题2生成一个savingsaccount类。用static数据成员包含每个存款人的Annual(年利率),类成员包含一个private数据成员savings,表示当前存款额一个成员函数calculate(),计算月利息,用savings乘以Annual除以12得到,并将这个月利息加进savings,用static成员函数modify(),将Annual设置为新值。实例化两个不同savingsaccount对象saver1和saver2,结余分别为2000.00和3000.00,将Annual设置为3%,计算每个存款人的月息并打印新的结果,再将Annual设置为4%,计算每个存款人的月息并打印新的结果。
题3.一圆型游泳池如图所示,现在需在其周围建一圆型过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。游泳池过道#includeconstfloatPI=3.14159;constfloatFencePrice=35;constfloatConcretePrice=20;//声明类Circle及其数据和方法classCircle{private:floatradius;public:Circle(floatr);//构造函数floatCircumference()const;//圆周长floatArea()const;//圆面积};
结束语谢谢大家聆听!!!62'
您可能关注的文档
- 最新安装操作系统示范课件PPT课件
- 最新宋心琦----化学科学发展与教学改革的几点思考ppt课件PPT课件
- 最新宋秀敏xiumin13579@yahoocn--精品PPT课件PPT课件
- 最新完全平方公式法因式分解ppt课件PPT课件
- 最新完全平方和平方差公式的几何背景--分式应用题课件PPT课件
- 最新完形填空ppt课件PPT课件
- 最新完成式ppt课件PPT课件
- 最新完成我国的基本经济制度ppt课件PPT课件
- 最新完美德列宝厨具课件PPT课件
- 最新定义与命题课件PPT课件
- 最新定价策略---很好的课件PPT课件
- 最新定价策略培训课件PPT课件
- 最新定冷水系统讲课课件PPT课件
- 最新定山中学陶贤晨艾海霞教学课件PPT课件
- 最新定岗定编定员ppt课件PPT课件
- 最新定岗定编原理与操作ppt课件PPT课件
- 最新定时器讲稿2ppt课件PPT课件
- 最新定海一中王波--精品PPT课件PPT课件