课程作业七
请将随机生成数字、表达式的部分设计成:一个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}