实验二 面向对象编程.doc_第1页
实验二 面向对象编程.doc_第2页
实验二 面向对象编程.doc_第3页
实验二 面向对象编程.doc_第4页
实验二 面向对象编程.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验二 面向对象编程一、 实验目的:掌握类与对象的定义方法,成员函数的实现与调用方法,领会类实现数据隐藏与封装的原理。二、 实验时间:三、 实验地点:四、 实验内容:1、 编写Circle类,有数据成员Radius, 成员函数get_area()用于计算面积, get_perimeter()用于计算周长, disp( )用于显示面积和周长, set_radius()设置半径, get_radius()获取半径。 完善必要的构造函数,构造一个Circle的对象进行测试,对构造函数和析构函数的调用情况进行分析。2、 编写圆柱体类Cylinder,有数据成员Circlr对象和长度Len, 成员函数get_vol() 计算体积, get_area()计算表面积。完善必要的构造函数和拷贝构造函数,构造Cylinder的对象进行测试。对构造函数,拷贝构造函数和析构函数的调用情况进行分析。3、 设计学生类Stu,含no(学号),name(姓名),deg(成绩)数据成员,成员函数有setdata()用于设置对象,disp()用于输出8089分段学生数据。在main()中定义对象数组,用于存储输入学生数据。五、实验要求: 在上机前写出全部源程序; 六、实验结果分析:源程序及结果分析:1. Circle类#include using namespace std;const float PI = 3.14;class Circle public: Circle (float r); float set_radius();/设置半径, float get_radius();/获取半径。 float get_area();/用于计算面积, float get_perimeter();/用于计算周长, void disp( );/用于显示面积和周长, Circle(); private: float Radius;Circle:Circle(float r) Radius = r; cout构造函数调用成功endl;float Circle:set_radius()/用来设置圆的半径float r;Radius = r;return Radius;float Circle:get_radius()/用于获取圆的半径return Radius;float Circle:get_perimeter() return 2*PI*Radius;float Circle:get_area() return PI*Radius*Radius;void Circle:disp() coutThe perimeter is get_perimeter()endl; coutThe area is get_area()endl;Circle:Circle() cout析构函数调用成功endl;int main() Circle circle(5.5); coutThe Radius is 5.5endl; circle.disp(); return 0; 结果分析:2. 圆柱体类Cylinder#includeusing namespace std;const float PI = 3.14;class Cylinder public: Cylinder(float pCirclr,float pLen); Cylinder(Cylinder &c); float get_vol(); float get_area(); Cylinder(); private: float Circlr,Len;Cylinder:Cylinder(float pCirclr,float pLen) Circlr=pCirclr; Len=pLen; cout构造函数调用成功endl;Cylinder:Cylinder(Cylinder &c) Circlr=c.Circlr; Len=c.Len; cout拷贝构造函数调用成功endl;float Cylinder:get_vol() return PI*Circlr*Circlr*Len;float Cylinder:get_area() return 2*PI*Circlr*Circlr+2*PI*Circlr*Len;Cylinder:Cylinder() cout析构函数调用成功endl;int main() float pCirclr; float pLen; coutpCirclr; cinpLen; Cylinder c1(pCirclr,pLen); Cylinder c2(c1); coutThe volume is:c2.get_vol()endl; coutThe area is:c2.get_area()endl; return 0;结果分析:3. Student 类#include#includeusing namespace std;class Student public: Student();/构造函数 void setdata(); /输入信息 void disp(); /结果输出 private: int no; char name20; float deg;Student:Student()void Student:setdata() int pno; char pname20; float pdeg; cinpno; cinpname; cinpdeg; no=pno; strcpy(name,pname); deg=pdeg;void Student:disp() if (deg=80) coutno:no name:name degree:degendl;int main() Student stu4; /申请对象数组 for(int i=0;i4;i+) /分别输入每个对象的信息 coutInput number name deg:; stui.setdata(); for(int i=0;i4;i+) stui.disp(); return 0;结果分析:4.复数类#include using namespace std;class Complex public: Complex(); /构造函数 void Input(); /输入实部和虚部 int get_RealPart(); /获取实部 int get_ImaginayPart(); /获取虚部 void Disp(); /结果打印输出 Complex(Complex &p); Complex(); private: int rp; int ip;/构造函数Complex:Complex()/拷贝函数Complex:Complex(Complex &p) rp = p.rp; ip = p.ip;/获取实部int Complex:get_RealPart() return rp;/获取虚部int Complex:get_ImaginayPart() return ip;/输入函数void Complex:Input() coutrp; cinip;/输出函数void Complex:Disp() if(rp!=0&ip!=0) if(ip0) cout复数为:rp+ipiendl; else cout复数为:rpipiendl; else if(rp=0&ip!=0) cout实部为0 复数为:ipiendl; else if(rp!=0&ip=0) cout虚部为0 复数为:rpendl; else cout实部和虚部都为0 复数为:0endl;/析构函数Complex:Complex()int main()Complex c; /申请对象c.Input();c.Disp();return 0;结果分析:5.矩形类#include using namespace std;class Point public: Point(); void Input(); /坐标输入函数 float get_x(); /获取横坐标 float get_y(); /获取纵坐标 private: float x,y;class Rectangle public: Rectangle(Point px, Point py); /构造函数 void get_RectangleArea(); /计算面积函数 void Disp(); /面积结构展示函数 private: Point p1, p2; float RectangleArea;Point:Point()/输入坐标void Point:Input() coutxy;/获取横坐标float Point:get_x() return x;/获取纵坐标float Point:get_y() return y;/构造函数Rectangle:Rectangle(Point px, Point py) p1 = px; p2 = py;/计算矩形的面积void Rectangle:get_RectangleArea() float a,b; a = p1.get_x() - p2.get_x(); b = p1.get_y() - p2.get_y(); RectangleArea = a*b;/面积结果打印void Rectangle:Disp() cout矩形的面积为:RectangleAreaendl;int main() Point p1, p2; /申请p1, p2两个对象 p1.Input(); /输入第一个点的坐标 p2.Input(); /输入另一个点的坐标 Rectangle Area(p1, p2); /申请Area对象 Area.get_RectangleArea(); Area.Disp(); /计算结果打印 return 0;结果分析:6. 136随机选择不同的7个数#include #include #include using namespace std;void GetRandNum(int *r) /生成一个在136间的整数 *r = rand()%36+1;int main() int a7, n = 7; srand(int)time(0); cout136中随机选7个不同数结果如下:endl; while(1) int r = 0, k = 0; GetRandNum(&r); for(int i = 0; i(7-n); i+) if(ai = r) k+; /如果生成的随机数等于以有的数则K加一 if(k=0) /k=0说明原先生成的数和此时生成的数不重复 a7-n = r; /将生成的数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论