C++类与对象实验(六)
题:
1、 设计描述平面坐标上的点CPoint类,该类满足下述要求:
•具有x,y坐标信息;
•具有带默认形参值的构造函数,参数分别用于初始化x和y坐标信息;
•具有获取x、y信息的GetX和GetY函数,具有设置x、y信息的SetX和SetY函数;
2、 设计一个矩形类CRectangle,该类满足下述要求:
•具有矩形的左下角和右上角两个点的坐标信息,这两个点的数据类型是CPoint;
•具有带参数的构造函数CRectangle(const CPoint &, const CPoint &),参数分别用于设置左下角和右上角两个点的坐标信息;
•具有设置左下角和设置右上角的两个点坐标的功能SetLPoint(const CPoint &)和SetRPoint(const CPoint &);
•具有获得周长(GetPerimeter)和获得面积(GetArea)的功能。
3、 在main函数中,完成以下工作:
•动态创建一个CRectangle类的对象a_rectagnle,其初始的左下角和右上角坐标分别为(2,5)、(6,8);调用GetPerimeter和GetArea获得矩形周长和面积,并将周长和面积显示在屏幕上;
///////////////////////////////////////////////////////
接下来,我把总的代码发出来:
我采用了.h和.cpp文件,类在.h文件中声明,在.cpp文件中定义。
总的工程包括:cpoint.h cpoint.cpp rectangle.h rectangle.cpp main.cpp
cpoint.h
#ifndef _CPOINT_H #define _CPOINT_H #include <iostream> using namespace std; class CPoint { public: CPoint(int X,int Y):x(X),y(Y){} int GetX(); int GetY(); void SetX(int); void SetY(int); private: int x,y; }; #endif
cpoint.cpp
#include "cpoint.h" int CPoint::GetX() { return x; } int CPoint::GetY() { return y; } void CPoint::SetX(int X) { x=X; } void CPoint::SetY(int Y) { y=Y; }
rectangle.h
#ifndef _RECTANGLE_H #define _RECTANGLE_H #include "cpoint.h" class CRectangle { public: CRectangle(const CPoint &a,const CPoint &b):c1(a),c2(b){} void SetLPoint(const CPoint &); void SetRPoint(const CPoint &); void GetPerimeter(); void GetArea(); private: CPoint c1,c2; }; #endif
rectangle.cpp
#include "rectangle.h" #include "cpoint.h" void CRectangle::SetLPoint(const CPoint &a) { c1=a; } void CRectangle::SetRPoint(const CPoint &b) { c2=b; } void CRectangle::GetPerimeter() { int Perimeter=0; Perimeter=( c2.GetX()-c1.GetX() )*2 + ( c2.GetY()-c1.GetY() )*2; cout << "Perimeter is:" << Perimeter << endl; } void CRectangle::GetArea() { int Area=0; Area=( c2.GetX()-c1.GetX() )*( c2.GetY()-c1.GetY() ); cout<<"Area is:"<<Area<<endl; }
main.cpp
#include "rectangle.h" int main() { const CPoint a(2,5),b(6,8); CRectangle *p=new CRectangle(a,b); p->SetLPoint(a); p->SetRPoint(b); p->GetPerimeter(); p->GetArea(); delete p; return 0; }
OK,就是这样啦!