欢迎来到天天like的博客

博主正在学习c++,网页设计,java,不定时记录自己的学习过程,分享自己的学习心得,让我们一起体验编程的快乐吧

C++练习案例1.计算机类(利用多态实现)

c++简单计算机类

简介

大家好,这里是天天like的博客,这是我发的第一篇随笔,用来记录我的学习日程,大家可以相互学习,多多交流,感谢
今天我要记录的随笔是在学习c++多态的知识点练习改进的一个案例。

在写代码的过程中是感觉到思路清晰明确,要修改的时候能够快速的找到所需要的代码块。

1.首先搭建出大致的框架

void menu()
{
	cout     << "*******************************"<< endl
		 << "******      1.加法       ******"<< endl
		 << "******      2.减法       ******"<< endl
	 	 << "******      3.乘法       ******"<< endl
		 << "******      4.除法       ******"<< endl
		 << "******      5.取余       ******"<< endl
		 << "******      6.乘方       ******"<< endl
		 << "******      7.开根       ******"<< endl
		 << "******      8.次幂       ******"<< endl
		 << "******      0.退出       ******"<< endl
		 << "*******************************"<<endl;
}

2.接下来写计算类

  • ①先实现个超级类(利用多态的知识,方便拓展与维护)
class AbstractCalculator     //抽象计算类
{
public:
	virtual int getRusult()  //这里要写virtual关键字,方便下面的类继承时的同名函数进行重写
	{
		return 0;
	}

	int m_A;   //定义两个变量
	int m_B;
};
  • ②开始继承父亲的财产
class AddCalculator : public AbstractCalculator //addition  加法
{
public:
	int getRusult()
	{
		return m_A + m_B;
	}
};

class SubCalculator : public AbstractCalculator   //subtraction  减法
{
public:
	int getRusult()
	{
		return m_A - m_B;
	}
};

class MulCalculator : public AbstractCalculator  //multiplication  乘法
{
public:
	int getRusult()
	{
		return m_A * m_B;
	}
};

class DivCalculator : public AbstractCalculator  //division  除法
{
public:
	int getRusult()
	{
		return m_A / m_B;
	}
};

class SurCalculator : public AbstractCalculator   //Surplus  取余
{
public:
	int getRusult()
	{
		return m_A % m_B;
	}
};

class PowCalculator : public AbstractCalculator   //Power  乘方
{
public:
	int getRusult()
	{
		return m_A * m_A;
	}
};

class SqrtCalculator : public AbstractCalculator   //Sqrt  开根
{
public:
	int getRusult()
	{
		return sqrt(m_A);
	}
};

class PowpCalculator : public AbstractCalculator   //Powp   次幂
{
public:
	int getRusult()
	{
		return pow(m_A,m_B);   //计算m_A的m_B次方
	}
};

3.实现功能

  • ① 分别用不同函数实现不同功能
void Add(int a,int b)
{
	cout << "请输入a值:";
	cin >> a;
	cout << "请输入b值:";
	cin >> b;
	AbstractCalculator* p = new AddCalculator;         //加法
	p->m_A = a;
	p->m_B = b;
	cout <<endl << p->m_A << " + " << p->m_B << " = " << p->getRusult() << endl << endl;
	delete p;

	cout << "加法操作完成,稍等请按任意键清屏" << endl;
	system("pause");
	system("cls");
}

void Sub(int a, int b)
{
	cout << "请输入a值:";
	cin >> a;
	cout << "请输入b值:";
	cin >> b;
	AbstractCalculator* p = new SubCalculator;         //减法
	p->m_A = a;
	p->m_B = b;
	cout << endl << p->m_A << " - " << p->m_B << " = " << p->getRusult() << endl << endl;
	delete p;

	cout << "减法操作完成,稍等请按任意键清屏" << endl;
	system("pause");
	system("cls");
}

void Mul(int a, int b)
{
	cout << "请输入a值:";
	cin >> a;
	cout << "请输入b值:";
	cin >> b;
	AbstractCalculator* p = new MulCalculator;         //乘法
	p->m_A = a;
	p->m_B = b;
	cout <<endl << p->m_A << " * " << p->m_B << " = " << p->getRusult() << endl << endl;
	delete p;

	cout << "乘法操作完成,稍等请按任意键清屏" << endl;
	system("pause");
	system("cls");
}

void Div(int a, int b)
{
	cout << "请输入a值:";
	cin >> a;
	cout << "请输入b值:";
	cin >> b;
	AbstractCalculator* p = new DivCalculator;         //除法
	p->m_A = a;
	p->m_B = b;
	cout <<endl << p->m_A << " / " << p->m_B << " = " << p->getRusult() << endl << endl;
	delete p;

	cout << "除法操作完成,稍等请按任意键清屏" << endl;
	system("pause");
	system("cls");
}

void Sur(int a, int b)
{
	cout << "请输入a值:";
	cin >> a;
	cout << "请输入b值:";
	cin >> b;
	AbstractCalculator* p = new SurCalculator;         //取余
	p->m_A = a;
	p->m_B = b;
	cout <<endl << p->m_A << " % " << p->m_B << " = " << p->getRusult() << endl << endl;
	delete p;

	cout << "取余操作完成,稍等请按任意键清屏" << endl;
	system("pause");
	system("cls");
}

void Pow(int a)
{
	cout << "请输入a值:";
	cin >> a;
	AbstractCalculator* p = new PowCalculator;         //乘方
	p->m_A = a;
	cout <<endl << p->m_A << "的乘方:" << p->getRusult() << endl << endl;
	delete p;

	cout << "乘方操作完成,稍等请按任意键清屏" << endl;
	system("pause");
	system("cls");
}

void sqrt1(int a)
{
	cout << "请输入a值:";
	cin >> a;
	AbstractCalculator* p = new SqrtCalculator;         //开根
	p->m_A = a;
	cout <<endl << p->m_A << "的开根结果为:" << p->getRusult() << endl << endl;
	delete p;

	cout << "开根操作完成,稍等请按任意键清屏" << endl;
	system("pause");
	system("cls");
}

void Pow1(int a, int b)
{
	cout << "请输入a值:";
	cin >> a;
	cout << "请输入b值:";
	cin >> b;
	AbstractCalculator* p = new PowpCalculator;         //x的y次幂
	p->m_A = a;
	p->m_B = b;
	cout <<endl << p->m_A << "的" << p->m_B << "次方为: " << p->getRusult() << endl << endl;
	delete p;

	cout << "次幂操作完成,稍等请按任意键清屏" << endl;
	system("pause");
	system("cls");
}
  • ②接下来实现主函数
int main()
{
	int select = 1;
	int a = 0, b = 0;
	while (true)
	{
		menu();
		cout << "请输入选项:";
		cin >> select;
		switch (select)
		{
		case 1:
			Add(a, b); //加法
			break;
		case 2:
			Sub(a, b);  //减法
			break;
		case 3:
			Mul(a, b);  //乘法
			break;
		case 4:
			Div(a, b);  //除法
			break;
		case 5:
			Sur(a, b);  //取余
			break;
		case 6:
			Pow(a);     //乘方
			break;
		case 7:
			sqrt1(a);   //开根
			break;
		case 8:
			Pow1(a, b); //次幂
			break;
		case 0:
			cout << "欢迎下次使用" << endl;  //退出
			return 0;
			break;
		default:
			exit(0);
			break;
		}
	}
	system("pause");
	return 0;
}
  • 一些演示图


结束

以上的代码参考源为:b站黑马程序员c++学习视频

希望大家能一起相互监督学习,一起进步,加油!

posted @ 2020-09-11 15:11  天天like  阅读(320)  评论(0)    收藏  举报