zoukankan      html  css  js  c++  java
  • 5. 类和对象封装案例----点和圆位置关系(拆分文件)

    #include <iostream>
    using namespace std;
    
    //根据点到圆心距离来判断
    //点和园关系
    //点类
    class Circle
    {
    public:
        //设置x;
        void setx(int x)
       {
             m_x=x;
        }
        //获取x;
        void getx()
        {
            return x;
        }
        //设置y;
        void sety(int y)
       {
             m_y=y;
        }
        //获取y;
        void gety()
        {
            return y;
        }
    private:
        int m_x; //半径
        int m_y;
    };
    //圆类
    class Circle
    {
    public:
        //设置半径
        void setr(int r)
        {
            m_r=r;
        }
        //获取半径
        void getr()
        {
            return m_r;
        }
        //设置圆心
        void setcenter(Point center)
        {
            m_center=center;
        }
        //获取圆心
        Point getcenter()
        {
            return m_center;
        }
    private:
        int m_r; //半径
        Point m_center; //圆心----->在类中可以让另一个类作为本来中的成员
    };
    
    //判断点和圆关系
    void isisInCircle(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(distance > rdistance)
        {
            cout <<"点在圆外" <<endl;
        }
        else
        {
            cout <<"点在圆内" <<endl;
        }
    }
    
    int main()
    {
        //创建圆
        Circle c;
        c.setr(10);
        Point center;
        center.setx(10);
        center.sety(0);
        c.setcenter(center);
    
        //创建点
        Point p;
        p.setx(10);
        p.sety(10);
    
        //判断关系
        isisInCircle(c,p);
    
        system("pause");
        return 0;
    }

    由于在开发时类中类代码过于不便,采取多个文件写项目

    (1)首先创建一个头文件,留住函数的声明及变量即可。

    #pragma once   //防止头文件重复包含
    #include <iostream>
    using namespace std;
    
    //根据点到圆心距离来判断
    //点和园关系
    //点类
    class Circle
    {
    public:
        //设置x;
        void setx(int x);
    
        //获取x;
        void getx();
    
        //设置y;
        void sety(int y);
    
        //获取y;
        void gety();
    
    private:
        int m_x; //半径
        int m_y;
    };

    (2)写一个分源文件编写实现代码

    #include "point.h"
    //设置x;
    void Point::setx(int x)  //由于是Point类中的成员函数,需要加上Point类作用域
    {
        m_x=x;
    }
    //获取x;
    void Point::getx()
    {
        return x;
    }
    //设置y;
    void Point::sety(int y)
    {
        m_y=y;
    }
    //获取y;
    void Point::gety()
    {
        return y;
    }

    (3)Circle 类拆分文件同理如上。

    (4)最后文件如下

    #include <iostream>
    using namespace std;
    #include "point.h"
    #include "circle.h"
    
    //判断点和圆关系
    void isisInCircle(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(distance > rdistance)
        {
            cout <<"点在圆外" <<endl;
        }
        else
        {
            cout <<"点在圆内" <<endl;
        }
    }
    
    int main()
    {
        //创建圆
        Circle c;
        c.setr(10);
        Point center;
        center.setx(10);
        center.sety(0);
        c.setcenter(center);
    
        //创建点
        Point p;
        p.setx(10);
        p.sety(10);
    
        //判断关系
        isisInCircle(c,p);
    
        system("pause");
        return 0;
    }
    哪有什么胜利可言,坚持意味着一切
  • 相关阅读:
    JAVA_File
    JAVA_解决实现接口方法重名问题
    JAVA_Thread_interrupt
    JAVA_Thread_deadlock
    JAVA_Thread_daemon
    JAVA_数组
    JAVA_Runtime
    Castle项目简介第二部分
    Castle项目简介第一部分(译)
    设置VSS使支持通过Internet访问
  • 原文地址:https://www.cnblogs.com/BY1314/p/12763713.html
Copyright © 2011-2022 走看看