大话设计模式一:代码无错就是优----简单工厂模式

来源:互联网 发布:网络的弊端 编辑:程序博客网 时间:2024/05/13 13:06
/***计算机控制台程序**要求体现面向对象的思想*/#include <iostream>#include <string>using namespace std;//运算类(基类 抽象类)class Operation{public:Operation(double _numberA = 0.0, double _numberB = 0.0):numberA(_numberA), numberB(_numberB){}void SetNumberA(double _numberA){numberA = _numberA;}void SetNumberB(double _numberB){numberB = _numberB;}virtual double GetResult() = 0;protected:double numberA;double numberB;};//加减乘除类(派生类)//加class OperationAdd : public Operation{public:double GetResult();private:double result = 0.0;};double OperationAdd::GetResult(){result = numberA + numberB;return result;}//减class OperationSub : public Operation{public:double GetResult();private:double result = 0.0;};doubleOperationSub::GetResult(){result = numberA - numberB;return result;}//乘class OperationMul : public Operation{public:double GetResult();private:double result = 0.0;};doubleOperationMul::GetResult(){result = numberA * numberB;return result;}//除class OperationDiv : public Operation{public:double GetResult();private:double result = 0.0;};doubleOperationDiv::GetResult(){if (numberB == 0)throw;result = numberA / numberB;return result;}//运算工厂函数Operation* createOperate(char operate){Operation *oper = NULL;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(){double numberA, numberB, result;char c;cout << "numberA = ";cin >> numberA;cout << " numberB = ";cin >> numberB;cout << endl;cout << "what do you want to do? ";cin >> c;Operation* oper = createOperate(c);oper->SetNumberA(numberA);oper->SetNumberB(numberB);result = oper->GetResult();cout << " result is:" << result << endl;}

0 0
原创粉丝点击