作业七-四则运算与简单工厂模式初步结合
题目描述
- 请将随机生成数字、表达式的部分设计成:一个Random基类,基类中有random()方法。并由该基类派生出RandomNumber类、RandomOperation类,继承并覆盖父类方法。
- 学习简单工厂模式,思考能否将该模式运用到题目的第一点要求中。
作业要求
- 体会继承和多态的思想
- 发表一篇博客,博客内容为:提供本次作业的github链接,题目描述的代码部分的解释、简单工厂模式的学习。
过程
- 通过简单工厂模式的学习与尝试,事先自己写个小程序在 简单工厂的初步尝试博客中有说明
- 按照作业要求,我将本来随机数放在表达式类中,现在从中分离出一个随机基类,两个派生类
- 与上一篇博客相结合,在基类中建立两个虚函数(应该一个也可以)一个用于转换成字符,一个用于生成随机数
- 之后创建一个工厂类,工厂类的内容与上篇博客内容一样,改成RandomFactroy类。
- github
修改的部分代码:
class Random {
public:
Random(){}
~Random(){}
virtual char get_rand(int k) { return ' '; }
virtual int create() { return -1; }
};
class randomNumber :public Random
{
public:
randomNumber(){}
~randomNumber(){}
virtual int create();
virtual char get_rand(int k);
};
class randomOperator : public Random
{
public:
randomOperator(){}
~randomOperator(){}
virtual int create();
virtual char get_rand(int k);
};
/*以下为相应的一些函数内容*/
int randomNumber::create()
{
return rand() % 10;
}
int randomOperator::create()
{
return rand() % 4;
}
char randomOperator::get_rand(int k)
{
switch (k)
{
case 0:return '+';
case 1:return '-';
case 2:return '*';
case 3:return '/';
default:return ' ';
}
}
char randomNumber::get_rand(int k)
{
return k + 48;
}
生成表达式函数中的改变:
过程中的问题:
- 在相结合方面,没有遇到大问题,毕竟在上一篇博客有一些尝试
- 主要是在于git上传时又出现错误了
- 因为之前进行界面编辑的尝试,是写在本地库中,没有上传,到这次作业,进行上传,发现文件大小超过100M是无法上传的,。
- 尝试了好多方法,都出现了一些错误,一直改不出来,看完网上博客发现,自己已经进入一个麻烦的境地。
- 最后返回到之前作业五的git版本,再进行修改,上传。
体会:
对于利用简单工厂模式,我认为降低了其耦合性,也会使得代码变得比较有条理。
对于git等等,一些遇到问题,先不要自己随便乱按之类的,出错了,很容易到达一种不可挽回的地步,所以应该去网上查查解决方法,按照网上操作,去完成。