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,就是这样啦!

 

posted @ 2014-12-02 19:56  ht-beyond  阅读(950)  评论(0编辑  收藏  举报