class Operation
{
public:
Operation(void)
{
}
public:
~Operation(void)
{
}
public:
double numberA;
double numberB;
char operate ;
public:
void setNumberA(double number)
{
numberA = number;
}
double getNumberA()
{
return numberA;
}
void setNumberB(double number)
{
numberB = number;
}
double getNumberB()
{
return numberB;
}
public:
virtual double GetResult()
{
double result = 0;
return result;
}
};
class OperationAdd : public Operation
{
public:
OperationAdd(void)
{
}
public:
~OperationAdd(void)
{
}
public:
double GetResult()
{
double result = 0;
result = numberA + numberB;
return result;
}
};
class OperationSub : public Operation
{
public:
OperationSub(void)
{
}
public:
~OperationSub(void)
{
}
public:
double GetResult()
{
double result = 0;
result =numberA - numberB;
return result;
}
};
class OperationMul : public Operation
{
public:
OperationMul(void)
{
}
public:
~OperationMul(void)
{
}
public:
double GetResult()
{
double result = 0;
result =numberA * numberB;
return result;
}
};
class OperationDiv : public Operation
{
public:
OperationDiv(void)
{
}
public:
~OperationDiv(void)
{
}
public:
double GetResult()
{
double result = 0;
result =numberA / numberB;
return result;
}
};
class OperationFactory
{
public:
OperationFactory(void)
{
}
public:
~OperationFactory(void)
{
}
public:
Operation *oper;
public :
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 strNumberA,strNumberB, result;
char strOperation;
Operation *oper;
OperationFactory factory;
oper = factory.createOperate('*');
oper->setNumberA(2);
oper->setNumberB(4);
result = oper->GetResult();
return 0;
}