设计模式-计算器
加法类
#pragma once
#include "Operation.h"
class OperationAdd :
public Operation
{
public:
OperationAdd();
~OperationAdd();
public:
double GetResult();
};
#include "pch.h"
#include "OperationAdd.h"
OperationAdd::OperationAdd()
{
}
OperationAdd::~OperationAdd()
{
}
double OperationAdd::GetResult()
{
double result = 0;
result = GetNumberA() + GetNumberB();
return result;
}
减法类
#pragma once
#include "Operation.h"
class OperationSub :
public Operation
{
public:
OperationSub();
~OperationSub();
public:
double GetResult();
};
#include "pch.h"
#include "OperationSub.h"
OperationSub::OperationSub()
{
}
OperationSub::~OperationSub()
{
}
double OperationSub::GetResult()
{
double result = 0;
result = GetNumberA() - GetNumberB();
return result;
}
乘法类
#pragma once
#include "Operation.h"
class OperationMul :
public Operation
{
public:
OperationMul();
~OperationMul();
public:
double GetResult();
};
#include "pch.h"
#include "OperationMul.h"
OperationMul::OperationMul()
{
}
OperationMul::~OperationMul()
{
}
double OperationMul::GetResult()
{
double result = 0;
result = GetNumberA() * GetNumberB();
return result;
}
除法类
#pragma once
#include "Operation.h"
class OperationDiv :
public Operation
{
public:
OperationDiv();
~OperationDiv();
public:
double GetResult();
};
#include "pch.h"
#include "OperationDiv.h"
OperationDiv::OperationDiv()
{
}
OperationDiv::~OperationDiv()
{
}
double OperationDiv::GetResult()
{
double result = 0;
if (GetNumberB() == 0)
throw("除数不能为0.");
result = GetNumberA() / GetNumberB();
return result;
}
操作类
#pragma once
class Operation
{
public:
Operation();
virtual ~Operation();
private:
double _numberA;
double _numberB;
public:
void SetNumberA(double a = 0);
double GetNumberA();
void SetNumberB(double b = 0);
double GetNumberB();
public:
virtual double GetResult();
};
#include "pch.h"
#include "Operation.h"
Operation::Operation()
{
_numberA = 0;
_numberB = 0;
}
Operation::~Operation()
{
}
void Operation::SetNumberA(double a)
{
_numberA = a;
}
double Operation::GetNumberA()
{
return _numberA;
}
void Operation::SetNumberB(double b)
{
_numberB = b;
}
double Operation::GetNumberB()
{
return _numberB;
}
double Operation::GetResult()
{
double result = 0;
return result;
}
测试
#include "pch.h"
#include <iostream>
#include "OperationAdd.h"
#include "OperationSub.h"
#include "OperationMul.h"
#include "OperationDiv.h"
int main()
{
OperationAdd Add;
OperationSub Sub;
OperationMul Mul;
OperationDiv Div;
double res;
Add.SetNumberA(6);
Add.SetNumberB(2);
res = Add.GetResult();
std::cout << "ADD:" << res << std::endl;
Sub.SetNumberA(6);
Sub.SetNumberB(2);
res = Sub.GetResult();
std::cout << "Sub:" << res << std::endl;
Mul.SetNumberA(6);
Mul.SetNumberB(2);
res = Mul.GetResult();
std::cout << "Mul:" << res << std::endl;
Div.SetNumberA(6);
Div.SetNumberB(2);
res = Div.GetResult();
std::cout << "Div:" << res << std::endl;
std::cout << "Hello World!\n";
getchar();
}

浙公网安备 33010602011771号