zoukankan      html  css  js  c++  java
  • 第七次课程作业

    第七次课程作业

    题目描述

    Github链接

    1.请将随机生成数字、表达式的部分设计成:
    一个Random基类,基类中有random()方法。并由该基类派生出RandomNumber类、RandomOperation类,继承并覆盖父类方法。

    2.学习简单工厂模式,思考能否将该模式运用到题目的第一点要求中。

    其实最开始看到这次作业我是感觉很牵强的要我们强行加一个Random()类,然后要求我们强行派生,没有思路。但静静的想了想并尝试了感觉是最简易的派生方式了hhh,如下:

    /*一个Random()基类,包含随机方法*/
    class Random
    {
    public:
    	virtual int RandomNum() {return 1;};
    	virtual char RandomOperator() {return ' ';};
    
    };
    
    /*Random()下的一个子类,用于随机生成数字*/
    class RandomNumber:public Random
    {
    public:
    	//随机生成一个数字,范围在0~10之间
    	int RandomNum();
    	/*{
    		srand(RandomeSeed());
    		int randNum;
    		randNum = rand() % 11;
    		return randNum;
    	}*/
    };
    /*Random()下的另一个子类,用于随机生成操作符*/
    class RandomOper :public Random
    {
    public:
    	//随机生成一个操作符并返回,返回类型为char
    	char RandomOperator();
    	/*{
    		int randOperIndex;
    		srand(RandomeSeed());
    		randOperIndex = rand() % operListLen;
    		return rand_Oper_List[randOperIndex];
    	}*/
    };
    

    这放在同一个Expression.h文件中的class声明,然后再Expression.cpp中对两个类中的随机生成方法进行定义。

    /*随机生成一个数字,范围0~10*/
    int RandomNumber::RandomNum()
    {
    	srand(RandomeSeed());
    	int randNum;
    	randNum = rand() % 11;
    	return randNum;
    }
    
    ///*随机生成一个操作符并返回,返回值类型char*/
    char RandomOper::RandomOperator()
    {
    	int randOperIndex;
    	srand(RandomeSeed());
    	randOperIndex = rand() % operListLen;
    	return rand_Oper_List[randOperIndex];
    }
    
    

    运行结果截图如下:
    简单工厂模式:
    在网上简单的查阅了一些有关于简单工厂模式的资料,但是还没有理解的很透彻,就简单的说一下目前我的理解收获吧:

    1.通过工厂模式隐藏类对象创建时的细节,用户不需要了解其中的细节,只需要知道用的是哪一个工厂就行了。(只需要通过参数传参的形式就可以进行一些修改)

    2.对于子类的分块化及后续添加一些新子类 比较方便。

    简单工厂模式和我们的四则运算相关联我的想法是:建立一个工厂类,其中有随机生成操作数字,随机生成操作符,随机生成一个操作part等等,在需要处只需通过参数的形式调用工厂类中的子类即可,具体还没有实现。

    由于还没有很深的理解及运用简单工厂模式,所以对于其一些缺点还没有很好的认识,只是根据一些网还是那个参考的资料有一些模糊的概念。
    参考简单工厂模式的博客链接1

    博客链接2

    另外对于上次的图形界面的设计由于遇到一些编译器上缺乏dll文件的困难没有实现,已经向郁杨同学请教并解决了这个问题,接下来将会实现图形界面设计。

  • 相关阅读:
    初级Springboot(一)
    java.lang.NoClassDefFoundError: Could not initialize class xxx
    Python requests.post嵌套多层json参数调用接口
    weblogic安装部署war包——windows
    angularJs 页面{{xxx}}使用三目运算符
    liunx下误删除/var目录下的empty文件,导致ssh连接不上
    Java判断一个时间是否在时间区间内
    centos7下配置免密码登录
    左连接去重(objec)
    java util.Date和sql.Date转换(时区转换)
  • 原文地址:https://www.cnblogs.com/heihuifei/p/6964811.html
Copyright © 2011-2022 走看看