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++学习视频
希望大家能一起相互监督学习,一起进步,加油!



浙公网安备 33010602011771号