《实验二 面向对象编程.doc》由会员分享,可在线阅读,更多相关《实验二 面向对象编程.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验二 面向对象编程一、 实验目的:掌握类与对象的定义方法,成员函数的实现与调用方法,领会类实现数据隐藏与封装的原理。二、 实验时间:三、 实验地点:四、 实验内容:1、 编写Circle类,有数据成员Radius, 成员函数get_area()用于计算面积, get_perimeter()用于计算周长, disp( )用于显示面积和周长, set_radius()设置半径, get_radius()获取半径。 完善必要的构造函数,构造一个Circle的对象进行测试,对构造函数和析构函数的调用情况进行分析。2、 编写圆柱体类Cylinder,有数据成员Circlr对象和长度Len, 成员函数g
2、et_vol() 计算体积, get_area()计算表面积。完善必要的构造函数和拷贝构造函数,构造Cylinder的对象进行测试。对构造函数,拷贝构造函数和析构函数的调用情况进行分析。3、 设计学生类Stu,含no(学号),name(姓名),deg(成绩)数据成员,成员函数有setdata()用于设置对象,disp()用于输出8089分段学生数据。在main()中定义对象数组,用于存储输入学生数据。五、实验要求: 在上机前写出全部源程序; 六、实验结果分析:源程序及结果分析:1. Circle类#include using namespace std;const float PI = 3.1
3、4;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
4、;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 m
5、ain() 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,L
6、en;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:Cy
7、linder() 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();/构造函数
8、 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() S
9、tudent 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
10、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()
11、 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
12、 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:I
13、nput() 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:
14、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 *
15、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; /将生成的数放入生生成数数组 coutr ; n-; if(n=0) return 0; /结束 结果分析:七、实验心得体会及问题反馈: 本实验主要是对面向对象的编程。同时又外加了简单复数的实现,随机数的选取和矩形面积的计算。这些主要是对面向对象编程的简单的初步熟悉,通过类,对象和实现方法的掌握。又插入对构造函数,复制构造函数和析构函数的复习。我从这个实验中明白了,类与对象的关系,类与类之间的关系,当然最重要的是明白了如何建立他们之间的关系,以此来实现实验或者实际问题的要求。
限制150内