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

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

    [课程作业七]{https://github.com/metamorphos/Circle/tree/master}
    基类.

    class Random
    {
    protected:
    int n;//随机数
    public:
    Random(){};
    ~Random(){};
    virtual void random()=0;
    virtual char randomOperation()=0;
    virtula int randomNumber()=0;
    };
    

    (派生类)生成随机数.

    class Randomnumber:virtual public Random
    {
    protected:
    int a[10];
    public:
    Randomnumber(){};
    ~Randomnumber(){};
    virtual char randomOperation;
    virtula int randomNumber;
    int get_number(int i)
    {
    return a[i];
    }
    };
    

    (派生类)生成随机运算符.

    class RandomOperation:virtual public Random
    {
    protected:
        char b[10];                  //存储随机符号 
    public:
        Randomoperator(){}
        ~Randomoperator(){}
        virtual char randomOperation();  //随机符号                                            
        virtual int randomNunber();                     
        char get_operation(int i)
        {
            return b[i];
        }
    };
    

    (派生类)生成随机式子.

    class RandomExpression:public RandomOperation,public RandomNumber  
    {
    public:
        RandomExpression();                                         
        RandomExpression(RandomNumber &p1,RandomOperation &p2)      
        {
            for(int i=1;i<10;i++)
            {
                a[i]=p1.get_number(i);
            }
            for(int i=1;i<10;i++)
            {
                b[i]=p2.get_operation(i);
            }
        }
        void random(){};
        void random(char c[100]);
    };
    

    (各类的成员函数).

    void RandomNumber::random()          
    {
        for(int j=0;j<=10;j++)
        {
            n=rand()%10;
            a[j]=n;
        }
    }
    void RandomOperation::random()  
    {
        for(int j=1;j<=10;j++)
        {
            switch(rand()%4)
            {
                case 0:operation[j]='+';break;
                case 1:operation[j]='-';break;
                case 2:operation[j]='*';break;
                case 3:operation[j]='/';break;
            }
        }
    }
    

    学习简单工厂模式###

    理解:将用户的客户端的所需要求发送至简单工厂里,在这个工厂里负责生产满足客户要求的产品,这个产品是抽象多种产品聚合而成的,就像玩具的零件一样,要生产抽象a元件,生产抽象b元件等,这些零碎的元件有抽象产品直接掌管,不需客户端和工厂直接参与。
    图片解析:

    优点及缺点:
    优点:因为分工明确,用户在使用时可以直接根据工厂类去创建所需的实例,有利于整个软件体系结构的优化。
    缺点:工厂类就需要判断何时创建何种种类的产品,这就和创建何种种类产品的产品相互混淆在了一起,违背了单一职责,导致系统丧失灵活性和可维护性。
    总而言之就是,就像一个公司,规模越大,效率越高,客户越多,同时一旦出了乱子,后果也是很大的。
    [学习资料]{http://blog.csdn.net/weiwenlongll/article/details/6918164}

  • 相关阅读:
    人性的经典总结54句
    系统程序员成长计划文本处理(XML解析器)
    系统程序员成长计划-像机器一样思考(二)
    Android输入事件流程
    系统程序员成长计划文本处理(INI解析器)
    request范围内共享属性 request_attribute.jsp
    系统程序员成长计划-像机器一样思考(三)
    系统程序员成长计划-像机器一样思考(一)
    Android IPC机制详解
    系统程序员成长计划文本处理(一)状态机(1)
  • 原文地址:https://www.cnblogs.com/breakbreak/p/6973820.html
Copyright © 2011-2022 走看看