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

    课程第七次作业

    git传送

    题目描述

    • 请将随机生成数字、表达式的部分设计成:一个Random基类,基类中有random()方法。并由该基类派生出RandomNumber类、RandomOperation类,继承并覆盖父类方法。
    • 学习简单工厂模式,思考能否将该模式运用到题目的第一点要求中。

    部分代码展示:

    class Randomvalue       //随机生成类
    {
    public:
    	Randomvalue();//初始化数字和符号
    	//int randomNumber();         //用于随机生成数字
    	//char randomOperation();     //用于随机生成运算符
    protected:
    	vector<char> sign;
    	vector<int> num;
    };
    class RandomNumber :public Randomvalue//RandomNumber类继承于Randomvalue
    {
    public:
    	RandomNumber() : Randomvalue(){}
    	int randomNumber();         //用于随机生成数字
    };
    class RandomOperation :public Randomvalue//RandomOperation类继承于Randomvalue
    {
    public:
    	RandomOperation() :Randomvalue(){}
    	char randomOperation();//用于随机生成运算符
    };
    
    class Problem
    {
    public:
    
    private:
    	string str1, str2;
    	Filestream F;
    	Randomvalue R;
    	RandomNumber r1;
    	RandomOperation r2;
    	CreatExpresstion C;
    	Mutual M;
    };
    

    工厂模式的学习

    学习体会:

    1. 简单工厂模式的应用,能使代码的封装性更好。一个好的程序员很注重这一点,好的代码封装性能增加代码的安全性,也使合作变得更加轻松。工厂模式能统一的创建类的对象,通过传参能在工厂中创建类,返回一个类的指针。
    2. 基类声明的纯虚函数派生类必须实现。

    思考问题:

    可以将工厂模式应用与随机类的创建,通过传入来获取工厂创建完成的类的指针

    学习链接

    学习代码展示:

    class RandomSimpleFactory//随机类简单工厂
    {
    public:RandomSimpleFactory(){}
    	   static Randomvalue* creatrandom(const char & x);
    };
    
    class RandomNumber :public Randomvalue//RandomNumber类继承于Randomvalue
    {
    public:
    	RandomNumber() : Randomvalue(){}
    	virtual int randomNumber();         //用于随机生成数字
    //	virtual char randomOperation();     //用于随机生成运算符
    };
    class RandomOperation :public Randomvalue//RandomOperation类继承于Randomvalue
    {
    public:
    	RandomOperation() :Randomvalue(){}
    //	virtual int randomNumber();         //用于随机生成数字
    	virtual char randomOperation();     //用于随机生成运算符
    };
    
    Randomvalue* RandomSimpleFactory::creatrandom(const char & x)//工厂模式函数实现
    	{
    		if (x == 'o')
    			return new RandomOperation();
    		else if (x == 'n')
    			return new RandomNumber();
    	}
    	
    	
    	
    Randomvalue *r1 = RandomSimpleFactory::creatrandom('n');
    	Randomvalue* r2 = RandomSimpleFactory::creatrandom('o');
    
    
    expression = Tostring(r1->randomNumber()) + Tostring(r2->randomOperation()) + Tostring(r1->randomNumber());
    
  • 相关阅读:
    CSS样式表
    lianxi!
    传值
    lei!
    3.10
    if else&& stwitch break
    if else 语句
    2016.3.6
    进制转换
    PHP 面向对象的三大特征
  • 原文地址:https://www.cnblogs.com/mercuialC/p/6973352.html
Copyright © 2011-2022 走看看