资源描述:
《模板(形状类的设计与实现)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VisualC++程序设计实验实验报告2011年4月30日学号姓名时间专业班级实验题目:形状类的设计与实现实验目的:(1)理解虚函数的特性。(2)理解纯虚函数和抽象类的特性。(3)掌握用虚函数实现运行时的多态的方法等。实验内容与步骤:内容:(1)、程序Ex_Shape:定义一个抽象类CShape,包括纯虚函数Area(用于计算机面积)和SetData(用于重设形状大小)然后派生出三角形CTriangle类、矩CRect形类、CCircle圆类,分别求出其面积。最后定义一个CArea类,计算这几个形状的面积之和,个形状的数据通过CArea类构造函数或成
2、员函数来设置,编完一个完整的程序。(2)程序Ex_Complex:定义一个复数类CComplex,通过重载运算符“*”和“/”,直接实现两个复数间的乘除运算。运算符“*”用成员函数实现重载,而运算符“/”拥友元函数实现重载。编译一个完整的程序。提示:两复数相乘的计算公式为:(a+bi)*(c+di)=(ac-bd)+(ad+bc)I,两复数相除的计算公式为:(a+bi)/(c+di)=(ac+bd)/(c*c+d*d)+(bc-ad)/(c*c+d*d)i。步骤:1、创建工作文件夹打开计算机,在“D:VisualC++程序王莹”文件夹中创建一个新
3、的子文件夹“实验2”。2、输入并运行程序Ex_Shape.cpp输入并运行并运行程序Ex_Shape.cpp的具体步骤如下:(1)启动VisualC++6.0(2)单击标准工具栏上的“NewTextFile”按下按钮,在新打开的文档窗口中输入下列程序代码:#includeclassCShape{public:virtualfloatArea()=0;//将Area定义成纯虚函数virtualvoidSetData(floatf1,floatf2)=0;//将SetData定义成纯虚函数};classCTriangle:publ
4、icCShape{public:CTriangle(floath=0,floatw=0){H=h;W=w;}floatArea()//在派生类定义纯虚函数的具体实现代码{return(float)(H*W*0.5);}voidSetData(floatf1,floatf2){H=f1;W=f2;}private:floatH,W;};classCRect:publicCShape{public:CRect(floath=0,floatw=0){H=h;W=w;}floatArea()//在派生类定义纯虚函数的具体实现代码{return(float)(
5、H*W);}voidSetData(floatf1,floatf2){H=f1;W=f2;}private:floatH,W;};classCCircle:publicCShape{public:CCircle(floatr=0){R=r;}floatArea()//在派生类定义纯虚函数的具体实现代码{return(float)(3.14159265*R*R);}voidSetData(floatr,float)//保持与纯虚函数一致{R=r;}private:floatR;};classCArea{public:CArea(floattriWidt
6、h,floattriHeight,floatrcWidth,floatrcHeight,floatr){ppShape=newCShape*[3];ppShape[0]=newCTriangle(triWidth,triHeight);ppShape[1]=newCRect(rcWidth,rcHeight);ppShape[2]=newCCircle(r);}~CArea(){for(inti=0;i<3;i++)deleteppShape[i];delete[]ppShape;}voidSetShapeData(intn,floatf1,floa
7、tf2=0)//n为0表示操作的是三角形,1表示矩形,2表示圆形{if((n>2)
8、
9、(n<0))return;ppShape[n]->SetData(f1,f2);}voidCalAndPrint(void)//计算并输出{floatfSum=0.0;char*str[3]={"三角","矩","圆"};for(inti=0;i<3;i++){floatarea=ppShape[i]->Area();//通过基类指针,求不同形状的面积cout<10、"<