面向对象程序设计案例

1 .设计立方体类

设计立方体类(Cube),求出立方体的面积( 2*a*b + 2*a*c + 2*b*c )和体积( a * b * c),分别用全局函数和成员函数判断两个立方体是否相等。

//立方体类
class Cub{
public:
    void setL(int l){ mL = l; }
    void setW(int w){ mW = w; }
    void setH(int h){ mH = h; }
    int getL(){ return mL; }
    int getW(){ return mW; }
    int getH(){ return mH; }
    //立方体面积
    int caculateS(){ return (mL*mW + mL*mH + mW*mH) * 2; }
    //立方体体积
    int caculateV(){ return mL * mW * mH; }
    //成员方法
    bool CubCompare(Cub& c){
        if (getL() == c.getL() && getW() == c.getW() && getH() == c.getH()){
            return true;
        }
        return false;
    }
private:
    int mL; //
    int mW; //
    int mH; //
};

//比较两个立方体是否相等
bool CubCompare(Cub& c1, Cub& c2){
    if (c1.getL() == c2.getL() && c1.getW() == c2.getW() && c1.getH() == c2.getH()){
        return true;
    }
    return false;
}

void test(){
    Cub c1, c2;
    c1.setL(10);
    c1.setW(20);
    c1.setH(30);

    c2.setL(20);
    c2.setW(20);
    c2.setH(30);

    cout << "c1面积:" << c1.caculateS() << " 体积:" << c1.caculateV() << endl;
    cout << "c2面积:" << c2.caculateS() << " 体积:" << c2.caculateV() << endl;

    //比较两个立方体是否相等
    if (CubCompare(c1, c2)){
        cout << "c1和c2相等!" << endl;
    }
    else{
        cout << "c1和c2不相等!" << endl;
    }

    if (c1.CubCompare(c2)){
        cout << "c1和c2相等!" << endl;
    }
    else{
        cout << "c1和c2不相等!" << endl;
    }
}

 

2. 点和圆的关系

设计一个圆形类(AdvCircle),和一个点类(Point),计算点和圆的关系。

假如圆心坐标为x0, y0, 半径为r,点的坐标为x1, y1:

1)点在圆上:(x1-x0)*(x1-x0) + (y1-y0)*(y1-y0) == r*r

2)点在圆内:(x1-x0)*(x1-x0) + (y1-y0)*(y1-y0) < r*r

3)点在圆外:(x1-x0)*(x1-x0) + (y1-y0)*(y1-y0) > r*r

//点类
class Point{
public:
    void setX(int x){ mX = x; }
    void setY(int y){ mY = y; }
    int getX(){ return mX; }
    int getY(){ return mY; }
private:
    int mX;
    int mY;
};

//圆类
class Circle{
public:
    void setP(int x,int y){
        mP.setX(x);
        mP.setY(y);
    }
    void setR(int r){ mR = r; }
    Point& getP(){ return mP; }
    int getR(){ return mR; }
    //判断点和圆的关系
    void IsPointInCircle(Point& point){
        int distance = (point.getX() - mP.getX()) * (point.getX() - mP.getX()) + (point.getY() - mP.getY()) * (point.getY() - mP.getY());
        int radius = mR * mR;
        if (distance < radius){
            cout << "Point(" << point.getX() << "," << point.getY() << ")在圆内!" << endl;
        }
        else if (distance > radius){
            cout << "Point(" << point.getX() << "," << point.getY() << ")在圆外!" << endl;
        }
        else{
            cout << "Point(" << point.getX() << "," << point.getY() << ")在圆上!" << endl;
        }
    }
private:
    Point mP; //圆心
    int mR; //半径
};

void test(){
    //实例化圆对象
    Circle circle;
    circle.setP(20, 20);
    circle.setR(5);
    //实例化点对象
    Point point;
    point.setX(25);
    point.setY(20);

    circle.IsPointInCircle(point);
}

 

 

转载于:https://www.cnblogs.com/mmc9527/p/10429813.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值