四川大学计算机学院C++面向对象程序设计实验指导.docx

上传人:b****8 文档编号:9369053 上传时间:2023-05-18 格式:DOCX 页数:59 大小:51.03KB
下载 相关 举报
四川大学计算机学院C++面向对象程序设计实验指导.docx_第1页
第1页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第2页
第2页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第3页
第3页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第4页
第4页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第5页
第5页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第6页
第6页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第7页
第7页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第8页
第8页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第9页
第9页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第10页
第10页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第11页
第11页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第12页
第12页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第13页
第13页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第14页
第14页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第15页
第15页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第16页
第16页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第17页
第17页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第18页
第18页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第19页
第19页 / 共59页
四川大学计算机学院C++面向对象程序设计实验指导.docx_第20页
第20页 / 共59页
亲,该文档总共59页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

四川大学计算机学院C++面向对象程序设计实验指导.docx

《四川大学计算机学院C++面向对象程序设计实验指导.docx》由会员分享,可在线阅读,更多相关《四川大学计算机学院C++面向对象程序设计实验指导.docx(59页珍藏版)》请在冰点文库上搜索。

四川大学计算机学院C++面向对象程序设计实验指导.docx

四川大学计算机学院C++面向对象程序设计实验指导

C++面向对象程序设计

实验指导

四川大学计算机学院

C++语言面向对象程序设计是一门实践性很强的课程,学好这门课程离不开实验这一重要环节。

学生不仅应具有扎实的理论知识,还要通过坚持不懈地阅读程序、编程练习、程序调试、程序改错等环节的训练,才能真正掌握所学知识,提高编程水平。

对于初学者,可能会看程序但不会编写,程序调试时出现了问题不会纠错,这些都是正常现象,实际还是编程训练不够,只要勤学多练,最后一定可以取得令人满意的效果。

包括5个实验,每个实验都包括实验目的、实验内容、实验提示与实验步骤。

实验内容一般都包含有阅读程序与调试程序,程序改错,程序填空与编写程序方面的题目,这些题目也是C++面向对象程序设计考试要涉及的题型,因此做好实验对考试有极大的帮助;实验提示信息中有编程提示、重要内容提示或者出错信息提示;实验步骤以一个实际题目为例给出具体而实用的指导,让便让初学者不至于面对实验题目而束手无策,希望读者在实验中的能够学有所思,有所启迪。

实验1类和对象

1.1实验目的

1.掌握类的定义和使用方法,掌握类对象的声明和使用方法。

2.掌握对象的初始化和赋值的方法。

3.了解成员函数的特性、友元。

4.静态成员的使用方法。

5.理解和掌握this指针的用法。

6.理解和掌握const类型数据的使用。

1.2实验工具与准备工作

在开始实验前,应回顾或复习相关内容。

需要一台主算机,其中安装有VisualC++6.0、VisualC++2005、VisualC++2005Express、Dev-C++或MinGWDeveloperStudio等集成开发环境软件。

1.3实验内容

1.先阅读下列程序,写出执行结果。

然后输入程序,调试程序,比较结果的正确性。

//文件名:

main.cpp

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

//直角坐标类

classPoint

{

private:

//数据成员:

intx,y;//横坐标与纵坐标

public:

//公有函数:

Point(inta,intb):

x(a),y(b){}//构造函数

voidSet(inta,intb);//设置坐标值

intGetX()const{returnx;}//返回横坐标

intGetY()const{returny;}//返回纵坐标

};

//直角坐标类及相关函数的实现部分

voidPoint:

:

Set(inta,intb)//设置坐标值

{

x=a;//横坐标

y=b;//纵坐标

}

voidShow(constPoint&pt)//显示坐标值

{cout<

intmain(void)//主函数main(void)

{

Pointa[5]={Point(0,0),Point(1,1),Point(2,2),Point(3,3),Point(4,4)};//由对象组成的数组

Point*p=a;//p指向数组a

p->Set(5,9);//设置坐标值

a[3].Set(6,8);//设置坐标值

for(inti=0;i<5;i++)

{//依次显示各对象的坐标值

Show(*p++);

}

system("PAUSE");//调用库函数system(),输出系统提示信息

return0;//返回值0,返回操作系统

}

2.先阅读下列程序,写出执行结果。

然后输入程序,调试程序,比较结果的正确性。

//文件名:

main.cpp

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

//日期类

classDate

{

private:

//数据成员:

intmonth,day,year;//年月日

public:

//公有函数:

Date(intm=1,intd=1,inty=2008);//构造函数

//友元

friendvoidShow(constDate&dt);//显示日期

};

//日期类及相关函数的实现部分

Date:

:

Date(intm,intd,inty)//由m(月),d(日)和y(年)构造对象

{

this->month=m;//月

this->day=d;//日

this->year=y;//年

}

voidShow(constDate&dt)//显示日期

{

cout<

}

intmain(void)//主函数main(void)

{

Dated1(6,8,2008),d2(6,18),d3(5),d4;//定义日期对象

Show(d1);//显示d1

Show(d2);//显示d2

Show(d3);//显示d3

Show(d4);//显示d4

system("PAUSE");//调用库函数system(),输出系统提示信息

return0;//返回值0,返回操作系统

}

3.程序填空。

下面程序主要测试静态成员的使用方法,请完成程序。

//文件名:

main.cpp

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

//测试静态成员类

classTest

{

private:

//数据成员:

staticintcount;//对象数

public:

//公有函数:

Test(){count++;}//构造函数,实现对对象进行计数

staticvoidShow(){cout<<"共有"<

"<

};

[1]count=0;//为静态数据成员赋初值

intmain(void)//主函数main(void)

{

Testobj1,obj2,obj3;//定义对象

Test:

:

Show();//显示对象数

system("PAUSE");//调用库函数system(),输出系统提示信息

return0;//返回值0,返回操作系统

}

4.改正下面程序中的错误,使其能正常运行。

//文件名:

main.cpp//1

#include//预处理命令//2

usingnamespacestd;//使用标准命名空间std//3

//4

//测试构造函数与析构函数类//5

classTest//6

{//7

public:

//8

//公有函数:

//9

voidTest(){cout<<"构造函数"<

void~Test(){cout<<"析造函数"<

};//12

//13

intmain(void)//主函数main(void)//14

{//15

Testobj;//定义对象//16

//17

system("PAUSE");//调用库函数system(),输出系统提示信息//18

return0;//返回值0,返回操作系统//19

}//20

5.编写设计一个People(人)类。

该类的数据成员有年龄(age)、身高(height)、体重(weight)和人数(num),其中人数为静态数据成员,成员函数有构造函数(People)、进食(Eatting)、运动(Sporting)、睡眠(Sleeping)、显示(Show)和显示人数(ShowNum)。

其中构造函数由已知参数年龄(a)、身高(h)和体重(w)构造对象,进食函数使体重加1,运动函数使身高加1,睡眠函数使年龄、身高、体重各加1,显示函数用于显示人的年龄、身高、体重,显示人数函数为静态成员函数,用于显示人的个数。

假设年龄的单位为岁,身高的单位为厘米,体重的单位为市斤,要求所有数据成员为protected访问权限,所有成员函数为public访问权限,在主函数中通过对象直接访问类的所有成员函数。

*6.定义一个描述学生(Student)基本情况的类,数据成员包括姓名(name)、学号(num)、数学成绩(mathScore)、英语成绩(englishScore)、人数(count)、数学总成绩(mathTotalScore)和英语总成绩(englishTotalScore)。

其中姓名定义为长度为18的字符数组,其它数据成员类型为整型,数学总成绩、英语总成绩和人数为静态数据成员,函数成员包括构造函数、显示基本数据函数(ShowBase)和显示静态数据函数(ShowStatic),其中构造函数由已知参数姓名(nm)、学号(nu)、数学成绩(math)和英语成绩(english)构造对象,显示基本数据函数用于显示学生的姓名、学号、数学成绩、英语成绩,显示静态数据函数为静态成员函数,用于显示人数,数学总成绩,英语总成绩;要求所有数据成员为private访问权限,所有成员函数为public访问权限,在主函数中定义若干个学生对象,分别显示学生基本信息,以及显示学生人数,数学总成绩与英语总成绩。

1.4实验提示

1.通过构造函数生成对象为对象数组赋初值,属于基本输出cout方面的题目,应注意换行,语句

Point*p=a;//指向p指向数组a

p->Set(5,9);//设置坐标值

用于修改对象数组的a[0]的值,而语句

a[3].Set(6,8);//设置坐标值

用于修改对象数组的a[3]的值。

2.注意缺省参数值的使用;对于私有数据成员,可使用友元进行访问。

3.中静态数据成员赋初值的一般形式如下:

数据类型类名:

:

静态数据成员名=初值;

参考答案为:

[1]intTest:

:

4.构造函数与析构函数不能有返回值类型,因此应去掉第10行和第11行的void。

5.只要按题目要求编程实现即可,建议将比较短的函数在类体中实现,比较长的函数在类体外实现。

6.可仿照第5题编程实现,当然学生现实后还可灵活处理,比如定义学生数组存储学生信息,由count的值作为学号(此时构造函数的参数中不需要学号的信息)。

1.5实验步骤

以实验内容第5题为例说明实验步骤。

具体实现步骤如下:

1.建立工程exp2_5。

2.建立源程序文件main.cpp,具体内容如下:

//文件名:

main.cpp

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

//人(people)类

classPeople

{

protected:

//数据成员:

intage;//年龄

intheight;//身高

intweight;//体重

staticintnum;//人数

public:

//公有函数:

People(inta,inth,intw);//构造函数

voidEatting(){weight++;}//进食使体重加1

voidSporting(){height++;}//运动使身高加1

voidSleeping();//睡眠

voidShow()const;//显示人的信息

staticvoidShowNum()//显示人数

{cout<<"人数:

"<

};

intPeople:

:

num=0;//初始化静态数据成员num

//人(people)类的实现部分

People:

:

People(inta,inth,intw):

age(a),height(h),weight(w)

{num++;}//由已知信息构造对象,人数num将自加1

voidPeople:

:

Sleeping()//睡眠

{

age++;//睡眠使年龄加1

height++;//睡眠使身高加1

weight++;//睡眠使体重加1

}

voidPeople:

:

Show()const

//显示人的信息

{

cout<<"第"<

"<

cout<<"年龄:

"<

cout<<"身高:

"<

cout<<"体重:

"<

cout<

}

intmain(void)//主函数main(void)

{

Peopleobj1(8,120,60);//定义对象

obj1.Eatting();//进食

obj1.Sporting();//运动

obj1.Sleeping();//睡眠

obj1.Show();//显示信息

Peopleobj2(18,170,108);//定义对象

obj2.Eatting();//进食

obj2.Sporting();//运动

obj2.Sleeping();//睡眠

obj2.Show();//显示信息

People:

:

ShowNum();//显示人数

system("PAUSE");//调用库函数system(),输出系统提示信息

return0;//返回值0,返回操作系统

}

3.编译及运行程序。

1.6测试与结论

以实验内容第5题为例进行测试,测试时,屏幕显示如下:

第1个人:

年龄:

9岁

身高:

122厘米

体重:

62市斤

第2个人:

年龄:

19岁

身高:

172厘米

体重:

110市斤

人数:

2

请按任意键继续...

从上面的屏幕显示,可知本程序满足实验内容第5题的要求。

实验2继承与派生

2.1实验目的

1.熟练掌握类的继承,能够定义和使用类的继承关系。

2.掌握派生类的声明与实现方法。

3.掌握类构造函数的初始化列表与作用域分辨符的使用方法。

4.理解虚基类在解决二义性问题中的作用。

2.2实验工具与准备工作

在开始实验前,应回顾或复习相关内容。

需要一台主算机,其中安装有VisualC++6.0、VisualC++2005、VisualC++2005Express、Dev-C++或MinGWDeveloperStudio等集成开发环境软件。

2.3实验内容

1.先阅读下列程序,写出执行结果。

然后输入程序,调试程序,比较结果的正确性。

//文件名:

main.cpp

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

classA

{

public:

//公有函数:

A(){cout<<"构造A"<

~A(){cout<<"析构A"<

};

classB:

publicA

{

public:

//公有函数:

B(){cout<<"构造B"<

~B(){cout<<"析构B"<

};

classC:

publicB

{

public:

//公有函数:

C(){cout<<"构造C"<

~C(){cout<<"析构C"<

};

intmain(void)//主函数main(void)

{

Cobj;//定义对象

system("PAUSE");//调用库函数system(),输出系统提示信息

return0;//返回值0,返回操作系统

}

2.先阅读下列程序,写出执行结果。

然后输入程序,调试程序,比较结果的正确性。

//文件名:

main.cpp

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

classA

{

protected:

//数据成员:

inta;//数据成员

public:

//公有函数:

A(intx):

a(x){}//构造函数

voidShow()const{cout<

};

classB

{

protected:

//数据成员:

intb;//数据成员

public:

//公有函数:

B(intx):

b(x){}//构造函数

voidShow()const{cout<

};

classC:

publicA,publicB

{

public:

//公有函数:

C(intx,inty):

A(x),B(y){}//构造函数

voidShow()const//显示b之值

{cout<

};

intmain(void)//主函数main(void)

{

Cobj(5,18);//定义对象

obj.Show();//显示相关信息

obj.A:

:

Show();//显示相关信息

obj.B:

:

Show();//显示相关信息

system("PAUSE");//调用库函数system(),输出系统提示信息

return0;//返回值0,返回操作系统

}

3.程序填空。

下面程序主要测试类构造函数的初始化列表与作用域分辨符,请完成程序。

//文件名:

main.cpp

#include//预处理命令

usingnamespacestd;//使用标准命名空间std

classA

{

private:

//数据成员:

inta;//数据成员

public:

//公有函数:

A(intx):

[1]{}//构造函数

voidShow()const//显示a之值

{cout<<"a:

"<

};

classB:

publicA

{

protected:

//数据成员:

intb;//数据成员

public:

//公有函数:

B(intx,inty):

[2],b(y){}//构造函数

voidShow()const//显示相关信息

{

[3]Show();//调用基类A的成员函数Show()

cout<<"b:

"<

}

};

intmain(void)//主函数main(void)

{

Bobj(5,18);//定义对象

obj.Show();//显示相关信息

system("PAUSE");//调用库函数system(),输出系统提示信息

return0;//返回值0,返回操作系统

}

4.改正下面程序中的错误,使其能正常运行。

//文件名:

main.cpp//1

#include//预处理命令//2

usingnamespacestd;//使用标准命名空间std//3

//4

//基类Base//5

classBase//6

{//7

private:

//8

//数据成员:

//9

intm;//数据成员//10

//11

public:

//12

//公有函数:

//13

Base(inta):

m(a){}//构造函数//14

Base(constBase&cop

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2