类与对象c汇总.docx
- 文档编号:26721489
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:15
- 大小:39.15KB
类与对象c汇总.docx
《类与对象c汇总.docx》由会员分享,可在线阅读,更多相关《类与对象c汇总.docx(15页珍藏版)》请在冰豆网上搜索。
类与对象c汇总
实验2类与对象
课程序号:
课程编号:
适用专业:
计算机科学与技术实验序号:
2
实验名称:
类与对象学时:
4
一、实验目的
1、掌握类和对象的概念、定义方法。
2、掌握成员函数的实现与调用方法。
3、深刻领会类与对象的区别。
4、理解类实现数据隐藏和封装的原理。
5、掌握类与对象的简单用法。
6、了解类指针、对象数组的用法。
7、掌握类的构造函数的定义方法、构造函数的重载。
8、掌握析构函数的定义方法、理解构造函数和析构函数被调用的时间和特点以及他们在程序中的作用。
二、实验要求
按照实验题目的要求,编写程序并上机调试
三、实验设备
计算机、Windows2000/xp、VisualC++6.0
四、实验原理、方法
上机操作使用VisualC++输入并调试程序
五、实验内容
1、定义一个Date类,包括year、month、day三个数据成员,通过set_date成员函数输入出生日期数据,通过disp_date成员函数将其输出,并设计相应的程序进行测试。
源程序:
#include
usingnamespacestd;
classDate{
public:
voidset_date(intnewY,intnewM,intnewD);
voiddisp_date();
private:
intyear,month,day;
};
voidDate:
:
set_date(intnewY,intnewM,intnewD){
year=newY;
month=newM;
day=newD;
}
voidDate:
:
disp_date(){
cout< } intmain(){ DatemyDate; intyear,month,day; cout<<"Inputdate: "; cin>>year>>month>>day; myDate.set_date(year,month,day); myDate.disp_date(); return0; } 运行结果: 2、定义一个类,输入若干学生的学号、姓名和成绩,然后显示这些数据并计算出平均分。 并设计程序测试该功能。 源程序: #include #include #defineN2 classstudent{ private: charsno[20]; charname[10]; intscore[6]; public: voidsetinfo(); voidshowinfo(); voidaverage(); }; voidstudent: : setinfo(){ cin>>sno>>name>>score[0]>>score[1]>>score[2]>>score[3]>>score[4]>>score[5]; } voidstudent: : showinfo(){ cout< } voidstudent: : average(){ doubleavg,sum=0.0; for(inti=0;i<6;i++){ sum+=score[i]; } avg=sum/6.0; cout< } voidmain(){ student*pstu=newstudent[N]; for(inti=0;i cout<<"请输入第"< pstu[i].setinfo();} for(i=0;i cout<<"第"< "< pstu[i].showinfo(); } for(i=0;i cout<<"第"< "< pstu[i].average(); } } 运行结果: 3、用面向对象的程序设计方法实现堆栈的操作。 (栈的大小为5) 提示: 程序包括: 栈的大小定义为5;栈定义为一个类stack; 栈的创建、进栈和出栈、栈的消亡;栈的使用 进栈: voidpush(intn);出栈: intpop(void); 源程序: #include #defineMAX5 classstack { intnum[MAX]; inttop; public: stack(void); ~stack(void); voidpush(intn); intpop(void); }; stack: : stack(void) { top=0; cout<<"Stackinitiatized."< } stack: : ~stack(void) { cout<<"stackdestroyed."< } voidstack: : push(intn) { if(top==MAX) { cout<<"stackisfull! "< return; } num[top]=n; top++; } intstack: : pop(void) { top--; if(top<0) { cout<<"stackisunderflow! "< return0; } returnnum[top]; } main() { stacka,b; inti; cout< for(i=1;i<=MAX;i++) a.push(2*i); for(i=1;i<=MAX;i++) cout< cout< for(i=1;i<=MAX;i++) a.push(2*i); for(i=1;i<=MAX;i++) b.push(a.pop()); for(i=1;i<=MAX;i++) cout< cout< return0; } 运行结果: 4、将以上实验内容改为多文件结构实现。 源程序: //Stack.h #defineMAX5 classstack { intnum[MAX]; inttop; public: stack(void); ~stack(void); voidpush(intn); intpop(void); }; //stack.cpp #include"Stack.h" #include usingnamespacestd; stack: : stack(void) { top=0; cout<<"Stackinitiatized."< } stack: : ~stack(void) { cout<<"stackdestroyed."< } voidstack: : push(intn) { if(top==MAX) { cout<<"stackisfull! "< return; } num[top]=n; top++; } intstack: : pop(void) { top--; if(top<0) { cout<<"stackisunderflow! "< return0; } returnnum[top]; } //2_4.cpp #include"Stack.h" #include usingnamespacestd; #defineMAX5 main() { stacka,b; inti; cout< for(i=1;i<=MAX;i++) a.push(2*i); for(i=1;i<=MAX;i++) cout< cout< for(i=1;i<=MAX;i++) a.push(2*i); for(i=1;i<=MAX;i++) b.push(a.pop()); for(i=1;i<=MAX;i++) cout< cout< return0; } 运行结果: 5、写一段代码说明构造函数和析构函数何时被调用,并进行测试。 源程序: #include usingnamespacestd; classclock { public: clock(inthour1,intmin1,intsec); ~clock(); voidshow(); private: inthour,min,sec; }; clock: : clock(inthour1,intmin1,intsec1) {hour=hour1; min=min1; sec=sec1; cout<<"调用构造函数"< } voidclock: : show() {cout< "< "< clock: : ~clock() {cout<<"调用析构函数"< voidmain() {clocktime(2011,5,25); time.show(); } 运行结果: 6、以下是产品类Product的定义,但没有类的实现部分,请根据类的定义完整程序。 classProduct{ private: char*name;//产品名称 intprice;//产品单价 intquantity;//产品剩余量 public: Product(char*a,intb,intc); voidpurchase(intmoney);//购买产品 voidremain();//显示剩余产品数量 ~Product(); }; #include usingnamespacestd; classProduct { private: char*name;//产品名称 intprice;//产品单价 intquantity;//产品剩余量 public: Product(char*a,intb,intc); voidpurchase(intmoney);//购买产品 voidremain();//显示剩余产品数量 ~Product(); }; Product: : Product(char*a,intb,intc) { name=a; price=b; quantity=c; } voidProduct: : purchase(intmoney) { intm=money/price; cout<<"购买产品数: "< } voidProduct: : remain() { cout<<"产品剩余量: "< } Product: : ~Product(){} intmain() {Productproduct("面包",8,29); product.purchase(240); product.remain(); return0; } 运行结果: 六、实验步骤 1、编写程序 2、输入程序,记录调试情况 七、实验报告及记录格式 实验完成后提交实验报告,实验报告包括: 封页(所有要求填写项,均要求填写完整),实验名称、实验目的、实验内容和结果分析、实验心得。 按金陵科技学院《实验报告(工科)》格式填写实验报告。 实验报告中记录VisualC++的调试过程,必须有完整的程序清单,程序中必须有适当的注释。 八、实验注意事项 1、输入程序时应严格注意大小写 2、爱护机器,遵守规章制度 九、讨论、思考题 1、类是一种数据类型吗? 答: 不是。 类是C++数据封装的基本单元,它把数据和函数封装在一起。 2、不同对象的使用和某个类相关还是只和一个类相关? 答: 成员函数属于一个类的成员,出现在类体中。 3、本实验内容体现了面向对象的什么特点? 答: (1)对象唯一性。 每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。 在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。 (2)抽象性。 抽象性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。 一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。 任何类的划分都是主观的,但必须与具体的应用有关。 (3)继承性。 继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。 在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。 (4)多态性(多形性) 多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。 不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。 4、构造函数和析构函数必须成对出现吗? 答: 但是构造函数和析构函数和new和delete不同,他们并非必须成对的出现。 决定是否为一个类写构造函数或者析构函数,是取决于这个类对象的生命在哪里结束(或开始)。 制订人: 李慧(制订日期: 2011年9月)审订人: (审订日期: 年月)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 类与对象c 汇总 对象
![提示](https://static.bdocx.com/images/bang_tan.gif)