实验十
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验十类与对象的基本概念
一、实验目的
类是C++扩展数据类型,可以封装不同类型的数据成员和函数成员。类是面向对象程序设计的基础。本次实验内容包括面向对象的基本概念、构造函数与析构函数,从实际问题抽象出类等,通过实验要求掌握以下内容:
1、掌握面向对象的基本概念和类的定义方法。
2、掌握类成员的访问权限以及访问类成员的方法。
3、掌握内联函数和默认函数。
4、掌握构造函数和析构函数的意义及使用方法。
二、实验内容
1、范例:设计并测试一个矩形类(Rectangle)。属性为矩形的左下角与右上角的坐标,矩形水平放置。操作为计算矩形的周长和面积。
程序】
#include
#include
using namespace std;
class Rectangle{
double left,top;
double right,bottom;
public:
Rectangle(double l=0,double t=0,double r=0,double b=0);
~Rectangle(){};
void Assign(double l,double t,double r,double b);
void Show();
double Area();
double Perimeter();
};
Rectangle::Rectangle(double l,double t,double r,double b){
left=l;top=t;
right=r;bottom=b;
}
void Rectangle::Assign(double l,double t,double r,double b){ left=l;top=t;
right=r;bottom=b;
}
void Rectangle::Show(){
cout<<"left-top point is("< cout<<"right-bottom point is("< return fabs((right-left)*(bottom-top)); } double Rectangle::Perimeter(){ return 2*(fabs(right-left)+fabs(bottom-top)); } int main(){ Rectangle rect; rect.Show(); rect.Assign(100,200,300,400); rect.Show(); Rectangle rectl(0,0,200,200); rectl.Show(); rectl.Assign(100,200,300,400); rectl.Show(); cout<<"面积"< cout<<"面积"< "< return 0; } 【要求】 (1)将Rectangle(double l=0, double t=0, double r=0, double b=0); 改为Rectangle(double l, double t, double r, double b); 程序仍能正确运行吗?为什么? (2)注意成员函数void Show( )、double Area () 、double Perimeter( )的使用,因为在第三章如果需编写类似功能的一般函数是需要带参数(形参)的。 而在此处作为类的成员函数又不需要带参数。思考为什么? (3)理解void Assign(double l,double t,double r,double b);函数的作用。将Rectangle(double l=0, double t=0, double r=0, double b=0); 改为Rectangle(double l, double t, double r, double b);这时,有人认为Rectangle(double l, double t, double r, double b) 和void Assign(double l,double t, double r,double b)的功能相同,那么Assign 函数能否去掉呢?请试一试,结果会怎样? 2、定义一个圆类(Circle),要求用两种方法定义: 方法一:要求属性为半径,操作为计算圆的周长和面积。 #include using namespace std; void main(){ double r,s,l,PI=3.14159; cout<<"请输入圆的半径r="; cin>>r; s=PI*r*r; l=2*PI*r; cout<<"\n"<<"圆的面积s="< } 方法二:要求属性为半径(radius)、圆周长和面积,操作为输入半径,并计算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构造函数中生成)和拷贝构造函数。 #include using namespace std; double PI=3.14159;