老师布置了个作业:可拓展性或灵活性,指软件可快速改进以满足业务需求的变化,以一个简单系统为例理解在设计上要如何实现这个性能。可以一个简单的计算器为例,使用C++实现。
然后经过各种查,用已懂的知识写了个,下面贴上计算器的代码。
期间遇到错误提示:"A"的初始化操作由"case"标签跳过,这个错误是因为怕用了别的case而导致这个变量不创建,解决方法为把case(0),case(1)...后代码用{}括起来。
#include<iostream>
#include<string>
using namespace std;
//运算类
class COperation{
private:
double dNumA; //数字A
double dNumB; //数字B
public:
void SetNumA(double n){ //设置数字A
dNumA = n;
}
void SetNumB(double n){ //设置数字B
dNumB = n;
}
double GetNumA(){ //取得数字A
return dNumA;
}
double GetNumB(){ //取得数字B
return dNumB;
}
virtual double GetResult() // 得到运算结果
{
double result = 0;
return result;
}
};
//加法类
class COperationAdd :public COperation
{
public:
double GetResult()override
{
double result = 0;
result = GetNumA() + GetNumB();
return result;
}
};
//减法类
class COperationSub :public COperation
{
public:
double GetResult()override
{
double result = 0;
result = GetNumA() - GetNumB();
return result;
}
};
//乘法类
class COperationMul :public COperation
{
public:
double GetResult()override
{
double result = 0;
result = GetNumA() * GetNumB();
return result;
}
};
//除法类
class COperationDiv :public COperation
{
public:
double GetResult()override
{
double result = 0;
if (GetNumB() == 0){
std::cout << "除数不能为0。";
return NULL;
}
result = GetNumA() / GetNumB();
return result;
}
};
int main()
{
int n;
double x, y;
while(true)
{
cout << " == == == == == == == == == == == == == == == == == == ==" << endl;
cout << " 0. 加法运算" << endl;
cout << " 1. 减法运算" << endl;
cout << " 2. 乘法运算" << endl;
cout << " 3. 除法运算" << endl;
cout << " 4. 退出 " << endl;
cout << " == == == == == == == == == == == == == == == == == == ==" << endl;
cout << "运算类型选择:";
cin >> n;
switch(n){
case(0) : {
COperationAdd A;
cout << "请输入数据x和y:";
cin >> x >> y;
A.SetNumA(x);
A.SetNumB(y);
cout << x << " + " << y << " = " << A.GetResult() << endl; break;
}
case(1) : {
COperationSub A;
cout << "请输入数据x和y:";
cin >> x >> y;
A.SetNumA(x);
A.SetNumB(y);
cout << x << " - " << y << " = " << A.GetResult() << endl; break;
}
case(2) : {
COperationMul A;
cout << "请输入数据x和y:";
cin >> x >> y;
A.SetNumA(x);
A.SetNumB(y);
cout << x << " * " << y << " = " << A.GetResult() << endl; break;
}
case(3) : {
COperationDiv A;
cout << "请输入数据x和y:";
cin >> x >> y;
A.SetNumA(x);
A.SetNumB(y);
cout << x << " / " << y << " = " << A.GetResult() << endl; break;
}
case(4):exit(0);
default: break;
}
}
return 0;
}