2023年面向对象程序设计(C++) 实验指导书.docx
《2023年面向对象程序设计(C++) 实验指导书.docx》由会员分享,可在线阅读,更多相关《2023年面向对象程序设计(C++) 实验指导书.docx(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验1类和对象1.1实验目的和规定(1)理解类和对象的概念,掌握声明类和定义对象的方法。(2)掌握构造函数和析构函数的实现方法。(3)初步掌握使用类和对象编制C+程序。(4)掌握对象数组、对象指针和string类的使用方法。(5)掌握使用对象、对象指针和对象引用作为函数参数的方法。(6)掌握类对象作为成员的使用方法。(7)掌握静态数据成员和静态成员函数的使用方法。(8)理解友元的概念和掌握友元的使用方法。1. 2实验内容和环节1 .输入下列程序/ / t es t 4 l.cpp#inclu d e usi n g n a mespac e std;c lass Coo r di n ate
2、p u blic:Coor d inate(i n t x 1 , i nt y 1) x= x 1 ;y =yi;C oordinate(Coordinate &p);Coo r d i n a te() co u t MD e stru ctor i s c a 1 le d edn”; v oid M y A r ra y :Inputcout V”请键盘输入 V vie n gth V个整数:;int i;int * p =alist;f o r ( i =0;i 1 e n gt h ;i+,p+)c i n * p ;)int m a i n()MyAr ray a (5);a.I
3、 n put();a. D ispl a y(“显示已输入的);ret urn 0;(2)声明一个类Sor t Array继承类MyArray,在该类中定义一个函数,具有将输入的整 数从小到大进行排序的功能。【提醒】在第(1)步的基础上可增长下面的参考框架:c 1 as s SorlArray : public MyAr ray publ i c :void So r t ();S o rtA r r ay( i n t 1 e ng) :M y A r r a y(le ng)coutMSo r t Array 类对象已创建 ”vV e ndl;)v i r tual So Array ()
4、;:SortArray: S ortA r r a y()c o utJ,S o rtArr a y 类对象被撤消。”endl;)void S o rtArra y :So r t()(/ /请自行编写Sort函数的代码,将输入的整数从小到大排序。)/并将主函数修改为:in t m a in ()So r t A r r a y a(5);s.InputQ;s.D i s pl a y(显示排序以前的”);s.Sort();s.Di s play(显示排序以后的”);r e (urn 0;)声明一个类ReArray继承类M y Ar r a y,在该类中定义一个函数,具有将输入的整数进 行倒置
5、的功能。【提醒】在第(1)步的基础上可增长下面的参考框架:Class ReArray:pub 1 ic MyArr a yPu bl i c :V o id r ev e r s e ();ReArray( i nt I e ng);V i rtual -RcArr a y();请读者自行编写构造函数、析构函数和倒置函数ReArray,以及修改主函数。(3)声明一个类AverA r r a y继承类MyArray,在该类中定义一个函数,具有求输入 的整数平均值的功能。【提醒】在第(1)步的基础上增长下面的参考框架:c lass A v erA r ray:publi c My Ar ray P
6、ubli c :Av e rArra y ( i nt 1 e ng);-Ave r Array();D oubl e Aver();;请读者自行编写构造函数、析构函数和求平均值函数Ave r (求解整数的平均值),以及 修改主函数。(2)声明一个 NewArray 类,同时继承了 类 So r t A rray,RcAr r ay 和 Aver Ar ray,使得类 NewAiray的对象同时具有排序、倒置和求平均值的功能。在继承的过程中声明MyArr a y为虚基类,体会虚基类在解决二义性问题中的作用。实验3多态性3.1实验目的和规定(1 ) 了解多态性的概念。(2)掌握运算符重载的基本方
7、法。(3)掌握虚函数的定义和使用方法。(4)掌握纯虚函数和抽象类的概念和用法。3. 2实验内容与环节1 .分析并调试下列程序,写出程序的输出结果,并解释输出结果。/ / lest 5 _l.cp p# in c 1 u deusing namespace s t d ;cl a s s Bpublic:v i rtua 1 v oid fl (double x )cout”B:f 1 ( d ou b lc)xcn d 1;)voi d f2(do u b 1 e x)co ud o ubl e ) ,2*xen d 1;void f 3 (d o uble x)co u tv V”B: :
8、f 3( d ouble)n3* x e ndl;)c lass D: publ i c Bpubli c :v i r t ual void f 1 (d o ublc x)cou t D :: fl (do u ble),x e ndl;1void I2(doubl e x) c ou t D: :f2(d o u ble) v2* x cn d 1;)v o id f 3(d o u b le x )coutfl(l. 23);pb-fl(1.2 3);pb-f2 ( 1 . 23);pb-f3(1.2 3);pb- f 3 (3.1 4);rctu r n 0 ;)2.编写一个程序,其
9、中设计一个时间类Ti me,用来保存时、分、秒等私有数据成员, 通过重载操作符“ + ”实现两个时间的相加。规定将小时范围限制在大于等于0,分钟范围 限制在05 9 ,秒钟范围限制在059秒。【提醒】时间类Timepu b lie:Tim e (int h=0 int m=0, i nt s = 0 );Time o p erator+( T imc&);void dispt i m e (s t ring);private:i n t h ou r se;i nt min u t e s;int secon d s;3 .给出下面的抽象基类co n la i ner;class con t
10、ainer (pro t e cted:double ra d iu s ;p ub 1 i c :c onta i nc r (do u bl e rad iusl);virtu aldo u b 1 e surfac e _ a rea()=0;v i rt u al d o u b 1 e vo 1 ume()=0;;规定建立3个继承conta i nc r的派生类cub e、sphcr e与cylin d cr,让每一个派生 类都包含虚函数surf a ce_a rea()和volume。,分别用来计算正方体、球体和圆柱体的 表面积及体积。规定写出主程序,应用C+的多态性,分别计算边长
11、为6. 0的正方体、 半径为5.0的球体,以及半径为5.0和高为6. 0的圆柱体的表面积和体积。4 .编写一个程序用于进行集合的并、差和交运算。例如输入整数集合9543 6 7 ) 和2 4 6 9 ,计算出它们进行集合的并、差和交运算后的结果。【提醒】i. 可用以下表达式实现整数集合的基本运算:sl+s2两个整数集合的并运算sl-s2两个整数集合的差运算sl*s2两个整数集合的交运算ii. 参考以下Set类的框架,用于完毕集合基本运算所需的各项功能。c 1 ass setpu b lie:se t :: set ();v o id set:i n put( i nt d );i n t se
12、t: :lenglh();int set:ge t d (int i );voi d set: d i s p ();s e t set: o p erat o r+(se t si);s e t se t :: oper a tor-(set si);se t s et:: o per a tor* (set s 1 );s ct s e t :opcrator= (set s 1 );protected:int len;in t s MAX ;实验4模板与异常解决4. 1实验目的和规定(D对的理解模板的概念。(2)掌握函数模板和类模板的声明和使用方法。(3)学习简朴的异常解决方法。4.2实
13、验内容和环节【.分析并调试下列程序,写出运营结果并分析因素。(1) / / te s t 6 _1_1. c p p# includ e u sin g namespace std;templateTmax(T x, T y ) retur n xy? x: y ;i n i ma x (int a, i n t b)ret urn a b? a:b;)d oub 1 e max (double a , double b ) r e t u m a b ? a:b;ini m a in() coutVv”max(3,7)is“vVmax(3, 7) en d 1;return 0;)(2)/t
14、e s t6I_2.c p p#in c hide using n amespa c e s td;int m a x(int a jn t b)r e turn ab? a: b ;doub 1 e ma x (d ou b 1 e a,doub 1 e b)return ab? a: b ;)i n t m a in() cou tVv“max( 3 ,7) is ttmax(t3,7,)en d 1;ret u r n 0 ;)2 .编写一个求任意类型数组中最大元素和最小元素的程序,规定将求最大元素和最小元素 的函数设计成函数模板。3 .编写一个程序,使用类模板对数组元素进行排序、倒置、
15、查找和求和。【提醒】设计一个类模板tem p 1 ate c 1 as s A r ray 具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别为int型和double型的两个模板类,分别对整型数组与双精度数组完毕所规定的操作。4 .编写一个程序,求输入数的平方根。设立异常解决,对输入负数的情况给出提醒。实验5 C+的流类库与输入输出5 . 1实验目的和规定(1)掌握C+格式化的输入输出方法。(2)掌握重载运算符和“:”的方法。(3 )掌握磁盘文献的输入输出方法。5.2实验内容和环节1.下面给出的cpp程序用于打印九九乘法表,但程序中存在错误。请上机调试,使得此程序运营后,可以输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023年面向对象程序设计C+ 实验指导书 2023 面向 对象 程序设计 实验 指导书
限制150内