设计模式-计算器

加法类

#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();
}

  

posted @ 2019-08-27 18:28  N_zero  阅读(481)  评论(0)    收藏  举报