当前位置:首页 > 2012上学期 C++实验教案 陈维星 林小茶编著 面向对象程序设计
实验六 静态成员与友元
一、实验目的
1) 学习友元的使用;
2) 学习静态数据成员和静态成员函数的使用。
二、实验内容及要求
1) 声明一个类Student,在该类中包括一个数据成员score(分数),两个静态数据成员total_score(总成绩)和count(学生人数);还包括一个成员函数account()用于设置分数、累计学生的成绩之和、累计学生人数,一个静态成员函数sum(),用于返回学生的成绩之和,另一个静态成员函数average()用于求全班成绩的平均值。在main函数中,输入某班学生的成绩,并调用上述函数求出全班学生的成绩之和和平均分。
2) 设计一个用来表示直角坐标系的Location类,在主程序中创建该类的两个对象A和B,要求A的坐标点在第3象限,B的坐标点在第2象限,分别采用成员函数和友元函数计算给定两个坐标点的距离,要求按如下格式输出结果: A(x1,y1),B(x2,y2) Distance1=d1 Distance2=d2
其中:x1、y1、x2、y2为指定的坐标值,d1、d2为两个坐标点的距离。 类Location的参考框架如下: class Location { public:
Location(double,double); double Getx(); double Gety();
double distance(Location &); //求两点之间的距离
friend double distance(Location &, Location &);//求两点之间的距离 private:
double x,y; }
三、实验重点
静态数据成员和静态成员函数的声明和使用方法; 友元的声明格式和访问方法。
四、实验步骤
2) 进入VC+;2)编写程序;3)调试程序;4)分析结果。
五、实验环境
Windows 2000、VC++ 6.0
六、思考题
- 10 -
静态成员函数与静态数据成员相比,有什么特点?友元函数、友元成员函数、友元类的关系。
七、实验报告要求
1)实验名称、日期;2)姓名、班级、学号;3)源代码需有注释;4)实验结果;5)心得体会。
八、参考书籍
《C++面向对象程序设计习题解析与上机指导》,陈维兴等,清华大学出版社
- 11 -
实验七 派生类与继承
一、实验目的
1) 学习类的的继承,能够定义和使用类的继承关系; 2) 学习派生类的声明与定义方法;
3) 熟悉公有派生和私有派生的访问特性。
二、实验内容及要求
1、输入下列程序。 #include
void setx( int i) { x=i; } int getx( ) {return x;} int x; };
class Derived:public Base { public:
void sety( int i) { y=i; }
int gety( ) {return y;}
voif show( ) {cout<<”Base::x=”< void main() { Derived bb; bb.setx(16); bb.sety(25); bb.show(); cout<<”Base::x=”< (1)写出程序的运行结果。 (2)按下列要求,对程序进行修改后再调试,指出调试中出错的原因。 ①将基类Base 中的数据成员x的访问权限改为private时,会出现哪些错误?为什么? ②将基类Base 中的数据成员x的访问权限改为protected时,会出现哪些错误?为什么? ③在原程序的基础上,将派生类Derived的继承方式改为private时,会出现哪些错误?为什么? ④在原程序的基础上,将派生类Derived的继承方式改为protected时,会出现哪些错误?为什么? - 12 - 2、编写一个学生和教师的数据输入和显示程序。学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person.,并作为学生类Student和教师类Teacher的基类。 三、实验重点 Private和public派生方式对基类数据成员的可见性。 四、实验步骤 1) 进入VC+;2)编写程序;3)调试程序;4)分析结果。 五、实验环境 Windows 2000、VC++ 6.0 六、思考题 为什么要派生类?类继承的好处是什么? 派生类的构造/析构函数执行次序。 七、实验报告要求 1)实验名称、日期;2)姓名、班级、学号;3)源代码需有注释;4)实验结果;5)心得体会。 八、参考书籍 《C++面向对象程序设计习题解析与上机指导》,陈维兴等,清华大学出版社 - 13 -
共分享92篇相关文档