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;
}