8.24---面向对象设计案例

//设置一个圆形类和一个点类,判断点和圆的关系
#include<iostream>
using namespace std;
class Point
{
public:
    void setX(int x)
    {
        m_X = x;
    }
    int getX()
    {
        return m_X;
    }
    void setY(int y)
    {
        m_Y = y;
    }
    int getY()
    {
        return m_Y;
    }
private:
    int m_X;
    int m_Y;
};
class Circle
{
public:
    void setR(int r)
    {
        m_R = r;
    }
    int getR()
    {
        return m_R;
    }
    void setCenter(Point p)
    {
        m_Center = p;
    }
    Point getCenter()
    {
        return m_Center;
    }
    //利用成员函数判断点和圆的关系
    void isInCircleByclass(Point &p)
    {
        //获取圆心和点距离的平方
    int Distance = (m_Center.getX() - p.getX()) * (m_Center.getX() - p.getX()) + (m_Center.getY() - p.getY()) * (m_Center.getY() - p.getY());
    int rDistance = m_R*m_R;
    if ( Distance == rDistance )
    {
        cout << "成员函数::点在圆上" << endl;
    }
    else if (rDistance<Distance )
    {
        cout << "成员函数::点在圆外" << endl;
    }
    else
    {
        cout << "成员函数::点在圆内" << endl;
    }
    }
private:
    int m_R;//半径
    Point m_Center;//圆心
};
//利用全局函数判断点和圆的关系
void isInCircle(Circle &c,Point &p)
{   //获取圆心和点距离的平方
    int Distance = (c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) + (c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());
    int rDistance = c.getR() * c.getR();
    if ( Distance == rDistance )
    {
        cout << "点在圆上" << endl;
    }
    else if (rDistance<Distance )
    {
        cout << "点在圆外" << endl;
    }
    else
    {
        cout << "点在圆内" << endl;
    }
}
void test01()
{
    Point p1;
    p1.setX(10);
    p1.setY(10);

    Circle c1;
    Point center;
    center.setX(20);
    center.setY(5);
    c1.setCenter(center);
    c1.setR(20);

    //利用全局函数判断点和圆的关系
     isInCircle(c1,p1);
     //利用成员函数判断点和圆的关系
     c1.isInCircleByclass(p1);
}






int main()
{
    test01();
    system("pause");
    return EXIT_SUCCESS;
}
//设计立方体类,求出立方体的面积和体积,分别用全局函数和成员函数判断两个立方体是否相等
#include<iostream>
using namespace std;

class Cub
{
public:
    //设置长
    void setL(int l)
    {
        m_L = l;
    }
    //获取长
    int getL()
    {
        return m_L;
    }
    //设置宽
    void setW(int w)
    {
        m_W = w;
    }
    //获取宽
    int getW()
    {
        return m_W;
    }
    //设置高
    void setH(int h)
    {
        m_H =h;
    }
    //获取高
    int getH()
    {
        return m_H;
    }
    //求立方体的面积
    void getCubeS()
    {
        int s = 2 * m_L * m_W + 2 * m_L * m_H + 2 * m_W * m_H;
    cout << "立方体的面积为:" << s << endl;
    }
        //求立方体的体积
    void getCubeV()
    {
        int v = m_L * m_W * m_H;
    cout << "立方体的体积为:" << v << endl;
    }
    

    //通过成员函数判断两个立方体是否相等
    bool compareCubeByClass(Cub&cub)
    {
        bool ret = m_L == cub.getL() && m_W == cub.getW() && m_H == cub.getH();
        return ret;
    }
private:
    int m_L;//长
    int m_H;//高
    int m_W;//宽
};
//用全局函数判断两个立方体是否相等
bool compareCube( Cub & cub1, Cub & cub2)
{
    if ( cub1.getL() == cub2.getL()&&cub1.getH()==cub2.getH()&&cub1.getW()==cub2.getW())
    {
        return true;
    }
    return false;
}
void test01 ()
{
    Cub c1;
    c1.setL(20);
    c1.setH(10);
    c1.setW(20);
    c1.getCubeS();
    c1.getCubeV();


    //通过全局函数判断两个立方体是否相等
    Cub c2;
    c2.setL(20);
    c2.setH(10);
    c2.setW(20);

    bool ret = compareCube(c1, c2);
    if ( ret )
    {
        cout << "通过全局函数判断::c1和c2是相等的。" << endl;
    }
    else
    {
        cout << "通过全局函数判断::c1和c2是不相等的。" << endl;
    }
    //通过成员函数判断两个立方体是否相等
    bool ret2 = c1.compareCubeByClass(c2);
    if ( ret2)
    {
        cout << "通过成员函数判断::c1和c2是相等的。" << endl;
    }
    else
    {
        cout << "通过成员函数判断::c1和c2是不相等的。" << endl;
    }


}
int main()
{
    test01();
    system("pause");
    return EXIT_SUCCESS;
}

此外还有头文件的应用,圆类面向对象的设计

//设置一个圆形类和一个点类,判断点和圆的关系
#include<iostream>
using namespace std;
#include"point.h"
#include"circle.h"

//利用全局函数判断点和圆的关系
void isInCircle(Circle &c,Point &p)
{   //获取圆心和点距离的平方
    int Distance = (c.getCenter().getX() - p.getX()) * (c.getCenter().getX() - p.getX()) + (c.getCenter().getY() - p.getY()) * (c.getCenter().getY() - p.getY());
    int rDistance = c.getR() * c.getR();
    if ( Distance == rDistance )
    {
        cout << "点在圆上" << endl;
    }
    else if (rDistance<Distance )
    {
        cout << "点在圆外" << endl;
    }
    else
    {
        cout << "点在圆内" << endl;
    }
}
void test01()
{
    Point p1;
    p1.setX(10);
    p1.setY(10);

    Circle c1;
    Point center;
    center.setX(20);
    center.setY(5);
    c1.setCenter(center);
    c1.setR(20);

    //利用全局函数判断点和圆的关系
     isInCircle(c1,p1);
     //利用成员函数判断点和圆的关系
     c1.isInCircleByclass(p1);
}






int main()
{
    test01();
    system("pause");
    return EXIT_SUCCESS;
}

#pragma once
#include<iostream>
using namespace std;
//点类
class Point
{
public:
    void setX(int x);
    /*{
        m_X = x;
    }*/
    int getX();
   /* {
        return m_X;
    }*/
    void setY(int y);
    /*{
        m_Y = y;
    }*/
    int getY();
    /*{
        return m_Y;
    }*/
private:
    int m_X;
    int m_Y;
};
#include"point.h"



void Point::setX(int x)
{
    m_X = x;
}
int Point::getX()
{
    return m_X;
}
void Point::setY(int y)
{
    m_Y = y;
}
int Point::getY()
{
    return m_Y;
}
#pragma once
#include<iostream>
#include"point.h"
using namespace std;
//圆类
class Circle
{
public:
    void setR(int r);
    /*{
        m_R = r;
    }*/
    int getR();
    /*{
        return m_R;
    }*/
    void setCenter(Point p);
    /*{
        m_Center = p;
    }*/
    Point getCenter();
    /*{
        return m_Center;
    }*/
    //利用成员函数判断点和圆的关系
    void isInCircleByclass(Point& p);
    /*{
        //获取圆心和点距离的平方
        int Distance = (m_Center.getX() - p.getX()) * (m_Center.getX() - p.getX()) + (m_Center.getY() - p.getY()) * (m_Center.getY() - p.getY());
        int rDistance = m_R * m_R;
        if ( Distance == rDistance )
        {
            cout << "成员函数::点在圆上" << endl;
        }
        else if ( rDistance < Distance )
        {
            cout << "成员函数::点在圆外" << endl;
        }
        else
        {
            cout << "成员函数::点在圆内" << endl;
        }*/

private:
    int m_R;//半径
    Point m_Center;//圆心
};
#include"circle.h"

void Circle::setR(int r)
{
    m_R = r;
}
int Circle::getR()
{
    return m_R;
}
void Circle::setCenter(Point p)
{
    m_Center = p;
}
Point Circle::getCenter()
{
    return m_Center;
}
//利用成员函数判断点和圆的关系
void Circle::isInCircleByclass(Point& p)
{
    //获取圆心和点距离的平方
    int Distance= (m_Center.getX() - p.getX()) * (m_Center.getX() - p.getX()) + (m_Center.getY() - p.getY()) * (m_Center.getY() - p.getY());
    int rDistance = m_R * m_R;
    if ( Distance == rDistance )
    {
        cout << "成员函数::点在圆上" << endl;
    }
    else if ( rDistance < Distance )
    {
        cout << "成员函数::点在圆外" << endl;
    }
    else
    {
        cout << "成员函数::点在圆内" << endl;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值