• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

C++类和对象之封装学习案例

开发技术 开发技术 6小时前 4次浏览
# include<iostream>
using namespace std;

class Cube{
public:
    void setL(int l){
        m_L = l;
    }
    void setW(int w){
        m_W = w;
    }
    void setH(int h){
        m_H = h;
    }
    int getL(){
        return m_L;
    }
    int getW(){
        return m_W;
    }
    int getH(){
        return m_H;
    }
    int calculateS(){
        return 2*m_L*m_W + 2*m_W*m_H + 2*m_L*m_H;
    }
    int calculateV(){
        return m_L*m_W*m_H;
    }
    // 利用成员函数判断两个立方体体积是否相等
    // 注意:由于是成员函数,是由一个对象调用的,所以只要传入一个参数 -----------------
    bool isVSameByClass(Cube &c){
    if (calculateV() == c.calculateV()){
        return true;
    }
    else{
        return false;
    }
}


private:
    int m_L; // 长
    int m_W; // 宽
    int m_H; // 高
};

// 利用全局函数判断两个立方体体积是否相等
bool isVSame(Cube &c1, Cube &c2){
    // 用的是引用 是地址传递
    if (c1.calculateV() == c2.calculateV()){
        return true;
    }
    else{
        return false;
    }
}


int main(){
    // 创建立方体对象
    Cube c1;
    c1.setL(10);
    c1.setW(10);
    c1.setH(10);
    cout << "c1的面积为:"<< c1.calculateS() << endl;
    cout << "c1的体积为:"<< c1.calculateV() << endl;

    Cube c2;
    c2.setL(10);
    c2.setW(10);
    c2.setH(10);
    cout << "c1的面积为:"<< c1.calculateS() << endl;
    cout << "c1的体积为:"<< c1.calculateV() << endl;
    
    // 利用全局函数判断两个立方体体积是否相等
    bool result = isVSame(c1,c2);
    if (result){
        cout << "c1 c2体积相等" << endl;
    }
    else{
        cout << "c1 c2不体积相等" << endl;
    }

    // 利用成员函数判断两个立方体体积是否相等
    bool result2 = c1.isVSameByClass(c2);
    if (result){
        cout << "c1 c2体积相等" << endl;
    }
    else{
        cout << "c1 c2不体积相等" << endl;
    }
    return 0;
}
# 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; // 点的x坐标
    int m_Y; // 点的y坐标
};

class Circle{
public:
    // 注意设置和获取圆心的实现
    void setCenter(Point center){
        m_Center = center;
    }
    Point getCenter(){
        return m_Center;
    }
    void setR(int r){
        m_R = r;
    }
    int getR(){
        return m_R;
    }
private:
    int m_R; //半径
    Point m_Center; //圆心 ----------- 由于x和y通常是一个整体,所以这里将它们放到一个Point类里
};

// 判断点和圆的关系
void getRelation(Circle &c, Point &p){
    // 计算点和圆心距离的平方
    int c_X = c.getCenter().getX();
    int c_Y = c.getCenter().getY();
    int p_X = p.getX();
    int p_Y = p.getY();
    int distance = (c_X - p_X)*(c_X - p_X) + (c_Y - p_Y)*(c_Y - p_Y);
    // 计算半径的平方
    int r2 = c.getR() * c.getR();
    // 判断关系
    if (distance == r2){
        cout << "点在圆上" << endl;
    }
    else if (distance > r2){
        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);
    // 判断关系
    getRelation(c,p);

}

// summary:
// 本案例的核心要点是: 在类中可以让另一个类作为本类中的成员


程序员灯塔
转载请注明原文链接:C++类和对象之封装学习案例
喜欢 (0)