1.简单加减乘除计算器实现



 

#include<iostream>

using namespace std;

/*Operation操作类*/
class Operation
{
private:
    double a, b;
public:
    Operation() : a(0), b(0) {}
    void set_a(double ta) { a = ta; }
    double get_a() { return a; }

    void set_b(double tb) { b = tb; }
    double get_b() { return b; }

    virtual double GetResult()
    {
        double result = 0;
        return result;
    }

};

/*加减乘除类*/
class OperationAdd : public Operation
{
    double GetResult()
    {
        double result = 0;
        result = get_a() + get_b();
        return result;
    }
};

class OperationSub : public Operation
{
    double GetResult()
    {
        double result = 0;
        result = get_a() - get_b();
        return result;
    }
};

class OperationMul : public Operation
{
    double GetResult()
    {
        double result = 0;
        result = get_a() * get_b();
        return result;
    }
};

class OperationDiv : public Operation
{
    double GetResult()
    {
        double result = 0;
        if (get_b() == 0)
            throw "错误:除数不能为0";
        result = get_a() / get_b();
        return result;
    }
};

/*简单工厂类*/
class OperationFactory
{
public:
    static Operation* createOperate(char operate)
    {
        Operation* oper = nullptr;
        switch (operate)
        {
        case '+':
            oper = new OperationAdd;
            break;
        case '-':
            oper = new OperationSub;
            break;
        case '*':
            oper = new OperationMul;
            break;
        case '/':
            oper = new OperationDiv;
            break;
        }

        return oper;
    }
};


int main()
{

    try {
        /*通过一个单独的类来做这个创造实例化的过程,这就是工厂*/
        Operation *oper = OperationFactory::createOperate('+');
        oper->set_a(5);
        oper->set_b(4);
        double result = oper->GetResult();
        cout << result << endl;
    }
    catch (const char* e)
    {
        cout << e << endl;
    }


    system("pause");
    return 0;
}

2.UML图

12-27 07:35
查看更多