




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南**大学实验报告课程名称面对对象程序设计名称实验三多态性院系_信息工程学院__班级__计科172学生姓名_**__实验三多态性一.实验目的本实验的目的是使学生了虚函数的作用,掌握多态的概念、编译时多态、运行时多态,掌握运算符重载和虚函数的使用方法。二.实验环境VisualC++6.0及以上版本。三.实验内容熟悉掌握C++多态的有关知识。根据老师布置的实验题目,提前分析题目规定所需要的类,设计好解决题目规定需要的对象个数,设计解决问题需要的主函数等。题目能够从下列题目中选择一种。1.定义一种实数类Real,类中涉及一种数据组员real,构造函数、display()函数以及重载的+、-、*、/运算符。用公有继承方式声明一种复数类Complex,该类涉及两个数据组员real,image,并重载Real类的函数和+、-、*、/运算符。编写一种复数四则运算计算器。2.Shape是一种几何图形的基类,它最少有求本身周长函数Circumference()和求本身面积函数Area()。从Shape类派生出Circle类、Ellipse类、Triangle类和Rectangle类,分别继承基类Shape的Circumference()和Area(),并增加新的组员。编写主函数,定义各派生类对象,求多派生类对象的周长之和、面积之和。3.其它和本实验目的相符的题目,根据学生实际状况增加对应的题目,但题目难度不应低于以上两个题目。注意:从以上题目中选择一种作为实验题目。选择题目2四、实验原理1.按照题目规定分析解决问题需要的类;2.进行类的设计并实现;3.分析解决问题需要定义的对象及对象间的消息传递关系;4.设计主函数实现题目规定。五、数据构造和程序设计实验中出现的问题以及解决方案:问题一:改为实验总结学习使用虚函数实验动态多态性。而虚函数就是在基类中被核心字virtual阐明,并在派生类中重新定义的函数,且在派生类中重工业新定义时,函数原型,涉及返回类型、函数名、参数个数与参数类型的次序,都必须与基类中的完全相似。另外,构造函数不能是虚函数,但析构函数能够说虚函数。函数的重载办法有一参数个数相似,但是类型不同;二参数个数不同;三const(常量)源代码#include<iostream>#include<cmath>usingnamespacestd;constdoublePI=3.1415926;classShape{ public: virtualdoubleCircumference()=0; virtualdoubleArea()=0; virtualvoidshow(){};};classCircle:publicShape{ public: Circle(doublea):Shape(){ radius=a; } Circle(Circle&c){ radius=c.radius; } doubleCircumference(){ return2*PI*radius; } doubleArea(){ returnPI*radius*radius; } voidshow(){ doublea,b; a=Circumference(); b=Area(); cout<<"圆周长:"<<a<<"圆面积"<<b<<endl; } private: double radius;};classEllipse:publicShape{ public: Ellipse(doublea,doubleb):Shape(){ Lradius=a; Wradius=b; } Ellipse(Ellipse&c){ Lradius=c.Lradius; Wradius=c.Wradius; } doubleCircumference(){ return(Wradius/Lradius)*(Lradius+Wradius); } doubleArea(){ returnPI*Lradius*Wradius; } voidshow(){ doublea,b; a=Circumference(); b=Area(); cout<<"椭圆周长:"<<a<<"椭圆面积"<<b<<endl; } private: double Lradius; doubleWradius;};classTriangle:publicShape{ public: Triangle(doublea,doubleb,doublec):Shape(){ aLength=a; bLength=b; cLength=c; if(a+b<=c||a+c<=b||b+c<=a) { cout<<"三角形两边之和需不不大于第三边!"<<endl; exit(0); } } Triangle(Triangle&c){ aLength=c.aLength; bLength=c.bLength; cLength=c.cLength; } doubleCircumference(){ returnaLength+bLength+cLength; } doubleArea(){ doublep; p=(aLength+bLength+cLength)/2.0; returnsqrt(p*(p-aLength)*(p-bLength)*(p-cLength)); } voidshow(){ doublea,b; a=Circumference(); b=Area(); cout<<"三角形周长:"<<a<<"三角形面积"<<b<<endl; } private: double aLength; doublebLength; doublecLength;};classRectangle:publicShape{ public: Rectangle(doublea,doubleb):Shape(){ Length=a; Width=b; } Rectangle(Rectangle&c){ Length=c.Length; Width=c.Width; } doubleCircumference(){ return2*(Length+Width); } doubleArea(){ returnWidth*Length; } voidshow(){ doublea,b; a=Circumference(); b=Area(); cout<<"长方形周长:"<<a<<"长方形面积"<<b<<endl; } private: double Length; doubleWidth;};intmain(){ inti; doublea,b,c,d,e; doublecircumference,area; Shape*s[4]; cout<<"圆的半径"<<endl; cin>>a; Circlecircle(a); cout<<"椭圆长半径和短半径"<<endl; cin>>b>>c; Ellipseellipse(b,c); cout<<"三角形三边:"<<endl; cin>>a>>b>>c; Triangletriangle(a,b,c); cout<<"长方形的长和宽:"<<endl; cin>>d>>e; Rectanglerectangle(d,e); s[0]=&circle; s[1]=&ellipse; s[2]=▵ s[3]=&re
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑电气安装与智能化控制考核试卷
- 文具行业新材料研究与开发考核试卷
- 半导体器件的光电耦合器件考核试卷
- 标准化服务在环保设备制造的技术创新考核试卷
- 染整工艺优化与节能减排考核试卷
- 拍卖行业国际市场预测与分析考核试卷
- 中草药种植的农业产业链协同创新考核试卷
- 塑料板材的耐切割性能研究考核试卷
- 孤残儿童庇护服务社会效益提升路径研究与实践案例考核试卷
- 模拟射击器材租赁合同范本考核试卷
- (医学课件)腰椎穿刺术课件
- 参保人员转诊就医审核意见单
- 动物免疫接种技术课件
- 大班健康《换牙我不怕》课件
- 93年国际大专辩论赛经典辩词
- 冻猪肉储备投标方案
- 幼儿园大班绘本故事-神奇的大蒜【幼儿教案】
- GB/T 17639-2023土工合成材料长丝纺粘针刺非织造土工布
- 2023年广东省深圳市龙华区中考道德与法治二模试卷及答案解析
- 舟山国储基地扩建项目开山回填与隧道工程爆破项目设计方案
- 信用修复申请文书(当事人适用)
评论
0/150
提交评论