C++ --多态之实现一个计算器

15 篇文章 0 订阅

文章目录

一、多态实现一个计算器

  • 多态的优点:组织结构清晰可读性好方便扩展和维护

分别使用,普通和多态实现一个计算器,体会一下多态带来的好处

1.1 普通实现

//多态的优点:组织结构清晰,可读性好,方便扩展和维护
//分别使用,普通和多态实现一个计算器,体会一下多态带来的好处
//普通实现
#include <iostream>
using namespace std;
#include <string>
class Calculator
{
public:
	int num1;
	int num2;
	//只有加减乘运算,如果后续需要增加减法,需要修改compute函数代码,不易扩展和维护
	int compute(string operation)
	{
		if (operation == "+")
			return num1 + num2;
		else if (operation == "-")
			return num1 - num2;
		else if (operation == "*")
			return num1 * num2;
		else
		{
			cout << "NO this Operation,Error
";
			exit;
		}
	}
};
void test()
{
	Calculator c;
	c.num1 = 100;
	c.num2 = 200;
	cout << c.compute("+") << endl << c.compute("-") << endl << c.compute("*") << endl;
}
int main()
{
	test();
	return 0;
}

1.2 多态实现

#include <iostream>
using namespace std;
//多态来实现计算器
class AbstractCalculator
{
public:
	int num1;
	int num2;
	//虚函数,用户实现多态
	virtual int compute()
	{
		return 0;
	}
};
class AddCalculator : public AbstractCalculator
{
public:
	virtual int compute()
	{
		return num1 + num2;
	}
};
class DelCalculator : public AbstractCalculator
{
public:
	virtual int compute()
	{
		return num1 - num2;
	}
};
class MulCalculator : public AbstractCalculator
{
public:
	int compute()
	{
		return num1 * num2;
	}
};
//这里可以很方便的来扩展除法,而不需要修改上面的代码。如果哪个出现问题可以快速定位
class DivCalculator : public AbstractCalculator
{
public:
	int compute()
	{
		return num1 / num2;
	}
};
void test2()
{
	AbstractCalculator* abc = new AddCalculator;
	abc->num1 = 200;
	abc->num2 = 100;
	cout << abc->compute() << endl;
	delete abc;

	abc = new DelCalculator;
	abc->num1 = 200;
	abc->num2 = 100;
	cout << abc->compute() << endl;
	delete abc;

	abc = new MulCalculator;
	abc->num1 = 200;
	abc->num2 = 100;
	cout << abc->compute() << endl;
	delete abc;

	abc = new DivCalculator;
	abc->num1 = 200;
	abc->num2 = 100;
	cout << abc->compute() << endl;
	delete abc;
}
int main()
{
	test2();
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值