多态案例1 计算机类

案例描述: 分别利用普通写法和多态技术,设计实现两个操作数进行运算的计算器类


分别利用普通写法和多态技术,设计实现两个操作数进行运算的计算器类)

普通写法

#include <iostream>
using namespace std;
#include <string>

class Calculator {
    
    
public:
	int getResult(string oper) {
    
    
		if (oper == "+") {
    
    
			return m_Num1 + m_Num2;
		}
		else if (oper == "-") {
    
    
			return m_Num1 - m_Num2;
		}
		else if (oper == "*") {
    
    
			return m_Num1 * m_Num2;
		}
	}
public:
	int m_Num1;
	int m_Num2;
};

void test() {
    
    
	Calculator c;
	c.m_Num1 = 10;
	c.m_Num2 = 10;
	cout << c.m_Num1 << " + " << c.m_Num2 << " = " << c.getResult("+") << endl;
	cout << c.m_Num1 << " - " << c.m_Num2 << " = " << c.getResult("-") << endl;
	cout << c.m_Num1 << " * " << c.m_Num2 << " = " << c.getResult("*") << endl;
}
int main() {
    
    
	test();
	system("pause");
	return 0;
}

在这里插入图片描述

如果要提供新的运算,需要修改源码
在实际开发中,提倡开闭原则
开闭原则:对扩展进行开放,对修改进行关闭

多态技术

功能独立,便于维护与后续开发

#include <iostream>
using namespace std;
#include <string>

class AbstractCalculator{
    
    
public:
	virtual int getResult(){
    
    
		return 0;
	}
	int m_Num1;
	int m_Num2;
};

class AddCalculator :public AbstractCalculator{
    
    
public:
	int getResult(){
    
    
		return m_Num1 + m_Num2;
	}
};

class SubCalculator :public AbstractCalculator{
    
    
public:
	int getResult(){
    
    
		return m_Num1 - m_Num2;
	}
};

class MulCalculator :public AbstractCalculator{
    
    
public:
	int getResult(){
    
    
		return m_Num1 * m_Num2;
	}
};

void test(){
    
    
	AbstractCalculator* abc = new AddCalculator;
	abc->m_Num1 = 10;
	abc->m_Num2 = 10;
	cout << abc->m_Num1 << " + " << abc->m_Num2 << " = " << abc->getResult() << endl;
	delete abc;  //堆区变量,用完记得销毁

	abc = new SubCalculator;
	abc->m_Num1 = 10;
	abc->m_Num2 = 10;
	cout << abc->m_Num1 << " - " << abc->m_Num2 << " = " << abc->getResult() << endl;
	delete abc;

	abc = new MulCalculator;
	abc->m_Num1 = 10;
	abc->m_Num2 = 10;
	cout << abc->m_Num1 << " * " << abc->m_Num2 << " = " << abc->getResult() << endl;
	delete abc;
}

int main() {
    
    
	test();
	system("pause");
	return 0;
}

运行结果:
在这里插入图片描述

总结:C++开发提倡利用多态设计程序架构,因为多态优点很多
优点:
1、组织结构清晰
2、可读性强
3、便于前期和后期的扩展以及维护性高

猜你喜欢

转载自blog.csdn.net/weixin_48245161/article/details/113320459
今日推荐