• 作业七-四则运算与简单工厂模式初步结合


    题目连接

    题目描述

    • 请将随机生成数字、表达式的部分设计成:一个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等等,一些遇到问题,先不要自己随便乱按之类的,出错了,很容易到达一种不可挽回的地步,所以应该去网上查查解决方法,按照网上操作,去完成。

    附上一些git的链接

    官方文档
    大文件解决方案

  • 相关阅读:
    vue动态路由
    主题色
    vue项目后台demo
    NavigationDuplicated: Avoided redundant navigation to current location:
    vue screenfull使用问题
    ionfont 引入带颜色的svg
    vue项目使用websocket技术
    获取用户访问服务器的真实ip的nginx设置
    windows快速重命名脚本bat
    GitHub 中的LICENSE:开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
  • 原文地址:https://www.cnblogs.com/q1076452761/p/6958471.html
Copyright © 2020-2023  润新知