2022年面向对象程序设计实验指导书 .docx
《2022年面向对象程序设计实验指导书 .docx》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计实验指导书 .docx(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品_精品资料_试验 1 类和对象1.1 试验目的和要求(1) 懂得类和对象的概念,把握声明类和定义对象的方法.(2) 把握构造函数和析构函数的实现方法.(3) 初步把握使用类和对象编制C+ 程序.(4) 把握对象数组、对象指针和string 类的使用方法.(5) 把握使用对象、对象指针和对象引用作为函数参数的方法.(6) 把握类对象作为成员的使用方法.(7) 把握静态数据成员和静态成员函数的使用方法.(8) 懂得友元的概念和把握友元的使用方法.1.2 试验内容和步骤1. 输入以下程序/test4-1.cpp #include using namespace std.class Coordin
2、ate public:Coordinateint x1,int y1 x=x1 .y=y1 .CoordinateCoordinate &p .Coordinate cout ” Destructor is callededn”. int getxreturn x . int getyreturn y . private:int x,y . .Coordinate:CoordinateCoordinate &p x=p.x .y=p.y.cout ”copy-initialization Constructou is calledn”.int main Coordinate p13,4 .Co
3、ordinate p2p1 .可编辑资料 - - - 欢迎下载精品_精品资料_Coordinate p3=p2 .cout ”p3= “p3.getx ” ,”p3.gety ”n ”.return0 .(1) 写出程序的运行结果.(2) 将 Coordinate 类中带有两个参数的构造函数进行修改,在函数体内增加下述语句:cout ”Constructor is called.n ”.写出程序的运行结果,并说明输出结果.( 3)按以下要求进行调试: 在主函数体内,添加以下语句: Coordinate p4 .Coordinata p52 .调试程序时会显现什么错误?为什么?如何对已有的构造函
4、数进行适当修改?( 4)经过以上第( 2)步和第( 3)步的修改后,结合运行结果分析:创建不同的对象时会调用不同的构造函数.2. 设计一个4*4 魔方程序,让魔方的各行值的和等于各列值的和,并且等于两对角线值的和.例如一下魔方:313525921191517131123727291各行、各列以及对角线值的和都是64.【提示】求 4*4 魔方的一般步骤如下:( 1)设置初始魔方的起始值和相邻元素之间的差值.例如上述魔方的初始魔方的起始值( first )和相邻元素之间的差值step分别为:first=1 step=22设置初始魔方元素的值.例如上述魔方的初始魔方为: 13579111315171
5、9212325272931(3)生成最终魔方.方法如下:求最大元素值与最小元素值的和sum,该实例的 sum 是: 1+31=32用 32 减去初始魔方全部对角线上元素的值,然后将结果放在原先的位置,这样就可求得最终魔方.本例最终魔方如下:313525921191517131123可编辑资料 - - - 欢迎下载精品_精品资料_727291此题的魔方类magic 的参考框架如下:class magic public:void getdata .void setfirstmagic .void generatemagic .void printmagic .private:int m44 .in
6、t step.int first .int sum . .3. 设计一个用来表示直角坐标系的Location 类,在主程序中创建类Location 的两个对象A 和 B,要求 A 的坐标点在第 3 象限, B 的坐标在第 2 象限,分别采纳成员函数和友元函数运算给定两个坐标点之间的距离,要求按如下格式输出结果:Ax1,y1,Bx2,y2Distance1=d1 Distance1=d2其中: x1、x2、y1 、y2 为指定的坐标值,d1 和 d2 为两个坐标点之间的距离.【提示】类 Location 的参考框架如下:class Location public:Locationdouble,d
7、ouble .double Getx double Getydouble distanceLocation & .friend double distance Location &,Location &.private: double x,y . .4. 声明一个 Student 类,在该类中包括一个数据成员score(分数)、两个静态数据成员total_score(总分)和count(同学人数).仍包括一个成员函数account 用于设置分数、累计同学成果之和、累计同学人数,一个静态成员函数sum 用于返回同学的成果之和, 另一个静态成员函数average()用于求全班成果的平均值.在mai
8、n 函数中,输入 某班同学的成果,并调用上述函数求出全班同学的成果之和和平均分.5. 使用 C+ 的 string 类,将 5 个字符串按逆转后的次序显示出来.例如,逆转前的5 个字符串是:GermanyJapanAmericaBritainFrance按逆转后的次序输出字符串是:FranceBritainAmericaJapanGermany可编辑资料 - - - 欢迎下载精品_精品资料_试验 2 派生类与继承2.1 试验目的和要求(1) 把握派生类的声明方法和派生类构造函数的定义方法.(2) 把握不同继承方式下,基类成员在派生类中的拜访属性.(3) 把握在继承方式下,构造函数与析构函数的执
9、行次序与构造规章.(4) 学习虚基类在解决二义性问题中的作用.2.2 试验内容与步骤1. 输入以下程序./test4_1.cpp #include using namespace std.class Basepublic:void setxint ix=i . Int getxreturn x . public:int x . .class Derived:public Base public:void setyint iy=i . int getyreturn y . void showcout ”Base:x=”xendl .public:inty . .int mainDerived b
10、b .bb,setx16 .bb.sety25 .bb.show .cout ”Base:x=”bb.xendl . cout ”Derived:y= ”bb.yendl . cout ”Base:x= ”bb.getxendl .可编辑资料 - - - 欢迎下载精品_精品资料_cout ”Derived:y= ”bb.getyendl .return 0.(1) 写出程序的运行结果.(2) 按以下要求,对程序进行修改后再调试,指出调试中出错的缘由.将基类 Base中数据成员 x 的拜访权限改为 private 时,会显现哪些错误?为什么?将基类 Base中数据成员 x 的拜访权限改为 pro
11、tected 时,会显现哪些错误?为什么?在源程序的基础上,将派生类Derived 的继承方式改为private 时,会显现哪些错误?为什么?在源程序的基础上,将派生类Derived 的继承方式改为protected 时,会显现哪些错误?为什么?2. 编写一个同学和老师的数据输入和显示程序.同学数据有编号、姓名、性别、年龄、系别和成果,老师数据有编号、姓名、性别、年龄、职称和部门.要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person,并作为同学类Student 和老师类Teacher的基类.供参考的类结构如下:class Person. .class Student:public
12、Person. .class Teacher:public Person. .3. 按要求阅读、编辑、编译、调试和运行以下程序.(1) 阅读、编辑、编译、调试和运行以下程序,并写出程序的运行结果./test4_3_1.cpp #include #includeusing namespace std.class MyArray public:MyArrayint leng.MyArray.void Input .void Displaystring.protected:int*alist .int length . .MyArray:MyArrayint lengifleng=0cout ”er
13、ror length ”. exit1 .可编辑资料 - - - 欢迎下载精品_精品资料_alist=new int leng .length=leng .ifalist=NULLcout ”assign failure ”. exit1 .cout ”MyArray 类对象已创建. ”endl .MyArray:MyArraydelete alist .cout ”MyArray 类对象被撤销. ”endl .void MyArray:Displaystring strint i .int *p=alist .coutstrlength ”个整数:“. fori=0 .ilength .i+
14、,p+ cout*p ”.coutendl .void MyArray:Inputcout ”请键盘输入 ”length ”个整数 :”. int i .int *p =alist .fori=0 .i*p .int mainMyArray a5 .a.Input .a.Display “显示已输入的 ”.return 0.(2) 声明一个类 SortArray 继承类 MyArray, 在该类中定义一个函数,具有将输入的整数从小到大进行排序的功能.【提示】在第( 1)步的基础上可增加下面的参考框架: class SortArray : public MyArray public:void S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年面向对象程序设计实验指导书 2022 面向 对象 程序设计 实验 指导书
限制150内