• 面向对象程序设计案例


    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);
    }

     

  • 相关阅读:
    Hash碰撞
    数字证书编码ASN.1
    Python数据挖掘银行分控模型的建立
    Linux Docker 安装 Jenkins
    docker 常用命令
    公网 IP 绑定免费域名
    linux下docker和主机之间的文件拷贝
    Jenkins 各种自动项目触发方式
    TCP协议详解1 NK
    ubuntu下C++环境安装 NK
  • 原文地址:https://www.cnblogs.com/mmc9527/p/10429813.html
Copyright © 2020-2023  润新知