收藏 分销(赏)

实验二--面向对象编程.doc

上传人:仙人****88 文档编号:11258028 上传时间:2025-07-11 格式:DOC 页数:9 大小:111.50KB 下载积分:10 金币
下载 相关 举报
实验二--面向对象编程.doc_第1页
第1页 / 共9页
实验二--面向对象编程.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
实验二 面向对象编程 一、 实验目的: 掌握类与对象的定义方法,成员函数的实现与调用方法,领会类实现数据隐藏与封装的原理。 二、 实验时间: 三、 实验地点: 四、 实验内容: 1、 编写Circle类,有数据成员Radius, 成员函数get_area()用于计算面积, get_perimeter()用于计算周长, disp( )用于显示面积和周长, set_radius()设置半径, get_radius()获取半径。 完善必要的构造函数,构造一个Circle的对象进行测试,对构造函数和析构函数的调用情况进行分析。 #include "stdafx.h" #include<iostream> using namespace std; const double PI=3.1415926; class Circle { public: double get_area();//用于计算面积 double get_perimeter();//用于计算周长 void disp();//用于显示面积和周长 void set_radius(double r);//设置半径 double get_radius();//获取半径 Circle(double r=0);//调用构造函数 Circle(Circle &r);//复制构造函数 ~Circle();//析构函数 private: double radius; }; double Circle::get_area() {return radius*radius*PI; } double Circle::get_perimeter() {return 2*radius*PI; } void Circle::disp() { cout <<"圆的半径:"<<get_radius()<<endl; cout <<"圆的面积:"<<get_area()<<endl; cout <<"圆的周长:"<<get_perimeter()<<endl; } void Circle::set_radius(double r) {radius=r; } double Circle::get_radius() {return radius; } Circle::Circle(double r) { radius=r; cout<<"调用构造函数"<<endl; } Circle::Circle(Circle &r) { radius=r.radius; cout<<endl<<"调用复制构造函数"<<endl; } Circle::~Circle() { radius=0; cout<<"调用析构函数"<<endl; } int main(int argc, char* argv[]) { double r; cout<<"请输入半径:"; cin>>r; Circle c1(r); c1.disp(); Circle c2=c1; cout<<"测试复制构造体:"<<endl; c2.disp(); cout<<endl<<"初始参数:"<<endl; Circle c3; c3.disp(); cout<<"请输入半径:"; cin>>r; c3.set_radius(r); cout<<"结果:"<<endl; c3.disp(); system("pause"); return 0; } 2、 编写圆柱体类Cylinder,有数据成员Circle对象和长度Len, 成员函数get_vol() 计算体积, get_area()计算表面积。 完善必要的构造函数和拷贝构造函数,构造Cylinder的对象进行测试。对构造函数,拷贝构造函数和析构函数的调用情况进行分析。 // shiyan2_2.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include "iostream" using namespace std; const double PI=3.1415926; class Circle { public: double get_area();//用于计算面积 double get_perimeter();//用于计算周长 void disp();//用于显示面积和周长 void set_radius(double r);//设置半径 double get_radius();//获取半径 Circle(double r=0);//调用构造函数 Circle(Circle &r);//复制构造函数 ~Circle();//析构函数 private: double radius; }; double Circle::get_area() {return radius*radius*PI; } double Circle::get_perimeter() {return 2*radius*PI; } void Circle::disp() { cout <<"圆的半径:"<<get_radius()<<endl; cout <<"圆的面积:"<<get_area()<<endl; cout <<"圆的周长:"<<get_perimeter()<<endl; } void Circle::set_radius(double r) {radius=r; } double Circle::get_radius() {return radius; } Circle::Circle(double r) { radius=r; } Circle::Circle(Circle &r) { radius=r.radius; } Circle::~Circle() { radius=0; } class cylinder {public: double get_vol(){return c1.get_area()*len;};//计算体积 double get_area(){return 2*c1.get_area()+c1.get_perimeter()*len;};//计算表面积 void set_len(double l){len=l;};//设置长度 double get_len(){return len;};//获取长度 //----初始Circle类相关数据--- void set_Radius(double r){c1.set_radius(r);}; double get_Radius(){return c1.get_radius();}; double get_Area(){return c1.get_area();}; double get_Perimeter(){return c1.get_perimeter();}; //------------------------ //----显示相关数据------ void disp0(); void disp1(); //-------------------- cylinder(Circle c,double len=0);//调用构造函数 cylinder(cylinder &c);//复制构造函数 ~cylinder();//析构函数 private: Circle c1; double len; }; void cylinder::disp0() { cout <<"圆柱底面积:"<< get_Area() <<endl; cout <<"圆柱底面周长:"<< get_Perimeter() <<endl; } void cylinder::disp1() { cout <<"圆柱的表面积:"<<2*get_Area()+get_Perimeter()*len<<endl; cout <<"圆的体积:"<<get_Area()*len<<endl; } cylinder::cylinder(Circle c,double len):c1(c),len(len){cout<<"调用圆柱构造函数:"<<endl;} cylinder::cylinder(cylinder &c):c1(c.c1){len=c.len;cout<<"调用圆柱复制构造函数"<<endl;} cylinder::~cylinder() {c1.set_radius(0); len=0; cout<<"调用圆柱的析构函数"<<endl; } int main(int argc, char* argv[]) {double Ra,len; cout<<"输入圆柱体半径:"; cin>>Ra; Circle c; cylinder c2(c); c2.set_Radius(Ra); c2.disp0(); cout<<endl<<"输入圆柱体高:"; cin>>len; c2.set_len(len); cout<<"结果为:"<<endl; c2.disp1(); system("pause"); return 0; } 3、 设计学生类Stu,含no(学号),name(姓名),deg(成绩)数据成员,成员函数有setdata()用于设置对象,disp()用于输出80—89分段学生数据。在main()中定义对象数组,用于存储输入学生数据。 // shiyan2_3.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "iostream" #include "string" using namespace std; class Student {public: void setdata(int no,string name,float deg);//用于设置对象 void disp();//用于输出80—89分段学生数据 private: int no;//学号 string name;//姓名 float deg;//成绩 }; void Student::setdata(int No,string Name,float Deg) { no=No; name=Name; deg=Deg; } void Student::disp() { if((deg>=80.0)&&(deg<90.0)) { cout<<no<<"\t"<<name<<"\t"<<deg<<endl; } } int main() { int n,i,No; float Deg; string Name; Student stu[100]; cout<<"请输入要添加学生的数量:"; cin>>n; for(i=0;i<n;i++) { cout<<endl; cout<< "请输入第"<<i+1<<"名学生的学号:"; cin>> No; cout<< "请输入第"<<i+1<<"名学生的姓名:"; cin>> Name; cout<< "请输入第"<<i+1<<"名学生的成绩:"; cin>> Deg; stu[i].setdata(No,Name,Deg); } cout << "成绩在80~89分之间的学生如下:" <<endl; cout<<"学号"<<"\t姓名"<<"\t成绩"<<endl; for(i=0;i<n;i++) stu[i].disp(); system("pause"); return 0; } 五、实验要求: 在上机前写出全部源程序; 六、实验结果分析: 1、编写Circle类,有数据成员Radius, 成员函数get_area()用于计算面积, get_perimeter()用于计算周长, disp( )用于显示面积和周长, set_radius()设置半径, get_radius()获取半径。 完善必要的构造函数,构造一个Circle的对象进行测试,对构造函数和析构函数的调用情况进行分析。 2、编写圆柱体类Cylinder,有数据成员Circle对象和长度Len, 成员函数get_vol() 计算体积, get_area()计算表面积。 完善必要的构造函数和拷贝构造函数,构造Cylinder的对象进行测试。对构造函数,拷贝构造函数和析构函数的调用情况进行分析。 3、设计学生类Stu,含no(学号),name(姓名),deg(成绩)数据成员,成员函数有setdata()用于设置对象,disp()用于输出80—89分段学生数据。在main()中定义对象数组,用于存储输入学生数据。 七、实验心得体会及问题反馈: 类与对象,通过实验初步熟悉。对于class类其实与C语言中的结构体类似,只不过class分为public private protect三类,而且可以把函数作为类的成员。所谓对象就是把一个抽象的类具体化,比如我定义一个class you{}; you me; 这个me就是一个对象。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服