C++中三個 類的案例

案例一、
請設計一個 Person 類,Person 類具有 name 和 age 屬性,提供初始化函數 (Init),並提供對 name 和 age 的讀寫函數(set,get),但必須確保 age 的賦值在有 效範圍內(0-100),超出有效範圍,則拒絕賦值,並提供方法輸出姓名和年齡.

#include <iostream>
#include <string.h>
using namespace std;

class Person
{
private://私有數據
        char m_name[32];//定義時候不要初始化
        int m_age;
public://公有函數
		
		//初始化函數
        void initPerson(char *name, int age)
        {
            strcpy(m_name,name);
                    m_age = age;
        }
		//對m_name進行寫操作
        void setName(char *name)
        {
            strcpy(m_name,name);
        }
		//對m_name進行讀操作
        char *getName(void)
        {
            return m_name;
        }
		//對m_name進行寫操作
        void setAge(int age)
        {
            if(age>0 && age<100)
                m_age = age;
            else
                cout << "無效"<<endl;
        }
		//對m_name進行讀操作
        int getAge(void)
        {
            return m_age;
        }
		//遍歷數據
        void showPerson(void)
        {
            cout <<"姓名:"<<m_name<<" 年齡:"<<m_age<<endl;
        }


};

int main(int argc, char *argv[])
{
    Person pee;//通過類,實例化一個對象
     pee.initPerson("bbb",20);//初始化一個對象
     cout << "姓名:"<<pee.getName()<<endl;
     cout <<"年齡" << pee.getAge()<<endl;
     pee.showPerson();//遍歷

     pee.setName("ccc");//寫一個名字
     pee.setAge(19);//寫一個年齡
    cout << "姓名:"<<pee.getName()<<endl;
    cout <<"年齡" << pee.getAge()<<endl;
    pee.showPerson();

    return 0;
}

運行結果:
在這裏插入圖片描述
案例二、設計立方體類
設計立方體類(Cube),求出立方體的面積( 2ab + 2ac + 2bc )和體積( a * b * c),分別 用全局函數和成員函數判斷兩個立方體是否相等。

#include <iostream>

using namespace std;
class Cub
{
 private:
    int m_l;
    int m_w;
    int m_h;
 public:

    void setL(int l)//長
    {
        m_l = l;
    }

    void setW(int w)//寬
    {
        m_w = w;
    }

    void setH(int h)//高
    {
        m_h = h;
    }

    int getL(void)
    {
        return m_l;
    }
    int getW(void)
    {
        return m_w;
    }
    int getH(void)
    {
        return m_h;
    }

    //計算面積
    int gets()
    {
        return 2*(m_l*m_w+m_l*m_h+m_h*m_w);
    }

    //計算體積
    int getc()
    {
        return m_l*m_w*m_h;
    }

    //局部比較函數
    bool conparecub2(Cub &ob)
    {
        if(m_l == ob.m_l && m_h == ob.m_h && m_w == ob.m_w)
            return true;
        else
            return false;

    }
};

//全局比較 函數
bool comparecub1(Cub &cub1,Cub &cub2)//用引用的好處:傳參數,節省空間
{
    if(cub1.getL()==cub2.getL() && cub1.getH()==cub2.getH() && cub1.getW()==cub2.getW())
        return true;
    else
        return false;
}

int main(int argc, char *argv[])
{
    Cub cub1;
    cub1.setL(10);
    cub1.setW(10);
    cub1.setH(10);

    //計算面積
    cout << "cub1的面積" <<cub1.gets() << endl;

    //計算體積
    cout << "cub1的體積" <<cub1.getc() <<endl;

    Cub cub2;
    cub2.setL(10);
    cub2.setW(10);
    cub2.setH(10);

    //全局比較
    if(comparecub1(cub1,cub2)==true)
    {
        cout << "相等" << endl;
    }
    else
    {
        cout << "不相等" <<endl;
    }

    Cub cub3;
    cub3.setL(10);
    cub3.setW(20);
    cub3.setH(10);
    //局部比較
    if(cub3.conparecub2(cub1)==true)
        cout << "相等" << endl;
    else
        cout <<"不相等"<<endl;

    return 0;
}

運行結果:
在這裏插入圖片描述案例三、點和圓的關係
設計一個圓形類(AdvCircle),和一個點類(Point),計算點和圓的關係。 假如 圓心座標爲 x0, y0, 半徑爲 r,點的座標爲 x1, y1: 1)點在圓上:(x1-x0)(x1-x0) + (y1-y0)(y1-y0) == rr 2)點在圓內:(x1-x0)(x1-x0) + (y1-y0)(y1-y0) < rr 3)點在圓 外:(x1-x0)(x1-x0) + (y1-y0)(y1-y0) > r*r

#include <iostream>

using namespace std;
class Point//設計點的類
{
private:
    int m_x;
    int m_y;

public:
    void setX(int x=0)
    {
        m_x = x;
    }

    void setY(int y=0)
    {
        m_y = y;
    }

    int getX(void)
    {
        return m_x;
    }

    int getY(void)
    {
        return m_y;
    }


};
class Circle//設計圓的類
{
private:
    Point m_p;
    int m_r;


public:
    void setR(int r)
    {
        m_r = r;
    }

    int getR(void)
    {
        return m_r;
    }

    //設置圓心
    void setPoint(int x,int y)
    {
        m_p.setX(x);
        m_p.setY(y);
    }
    Point getPoint(void)
    {
        return m_p;
    }

    //判斷點與圓的關係
    void compareCircle(Point &ob)
    {
        int distance =(ob.getX()-m_p.getX())*(ob.getX()-m_p.getX())+(ob.getY()-m_p.getY())*(ob.getY()-m_p.getY());
        
        if( distance >( m_r*m_r ))
            cout << "點在圓外"<<endl;
        else if( distance ==( m_r*m_r ))
            cout << "點在圓上"<<endl;
        else
            cout << "點在圓內"<<endl;

    }


};

int main(int argc, char *argv[])
{
    //實例化一個點
    Point point;

    point.setX(15);
    point.setY(15);

    //實例化一個圓的對象
    Circle circle;
    circle.setR(10);
    circle.setPoint(20,20);

    //判斷點與圓的關係
    circle.compareCircle(point);
    return 0;
}

運行結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章