//Operation.h
#ifndef _OPERATION_H_
#define _OPERATION_H_
class Operation
{
public:
double _numberA;
double _numberB;
Operation();
virtual ~Operation();
virtual double GetResult()=0;
};
class OperationAdd:public Operation
{
public:
double GetResult();
};
class OperationSub:public Operation
{
public:
double GetResult();
};
class OperationMul:public Operation
{
public:
double GetResult();
};
class OperationDiv:public Operation
{
public:
double GetResult();
};
#endif
//Operation.cpp
#include "Operation.h"
#include <iostream>
using namespace std;
Operation::Operation()
{
_numberA=0;
_numberB=0;
}
Operation::~Operation()
{
}
double OperationAdd::GetResult()
{
double result=0;
result = _numberA+_numberB;
return result;
}
double OperationSub::GetResult()
{
double result=0;
result = _numberA-_numberB;
return result;
}
double OperationMul::GetResult()
{
double result=0;
result = _numberA*_numberB;
return result;
}
double OperationDiv::GetResult()
{
double result=0;
if(_numberB==0.0)
{
cout<<"除数不能为0!"<<endl;
return 0;
}
result = _numberA/_numberB;
return result;
}
//OperationFactory.h
#ifndef _OPERATION_FACTORY_H_
#define _OPERATION_FACTORY_H_
class Operation;
class OperationFactory
{
public:
OperationFactory();
virtual ~OperationFactory();
Operation* CreateOperate(char operate);
};
#endif
//OpreationFactory.cpp
#include "OpreationFactory.h"
#include "Operation.h"
#include <iostream>
using namespace std;
OperationFactory::OperationFactory()
{
}
OperationFactory::~OperationFactory()
{
}
Operation* OperationFactory::CreateOperate(char operate)
{
Operation* pOperate =NULL;
switch (operate)
{
case '+':
pOperate = new OperationAdd();
break;
case '-':
pOperate = new OperationSub();
break;
case '*':
pOperate = new OperationMul();
break;
case '/':
pOperate = new OperationDiv();
break;
default:
cout<<"无效的运算符"<<endl;
return NULL;
}
return pOperate;
}
//main.cpp
#include "Operation.h"
#include "OpreationFactory.h"
#include <iostream>
using namespace std;
int main()
{
char operate;
double numA;
double numB;
cout<<"请输入数字1:";
cin>>numA;
cout<<"请输入运算符:";
cin>>operate;
cout<<"请输入数字2:";
cin>>numB;
OperationFactory* pOperFac=new OperationFactory();
Operation* pOper= pOperFac->CreateOperate(operate);
pOper->_numberA = numA;
pOper->_numberB = numB;
double result = pOper->GetResult();
cout<<numA<<operate<<numB<<"="<<result<<endl;
return 0;
}