2017《面向对象程序设计》课程作业四
面向对象的方法划分类
在做这个四则运算的软件中,我主要是把整个问题当做两个类来判断,类中包含的对象也有指向输出文件的指针以及随机生成符号,随机数字等完成整个四则运算问题所要用到的函数。主要还是为本身的需求服务吧,因为输出文件的指针几乎每个成员函数都要用到,索性就归到这两类当中去了。
class cal
{
public:
void random(int *a, int*b, int*c, int *d);
void print( int v, int c);//对于结果的输出
void writefile(char *str, char *p);//写出文件
int test(int total, char *p1);
int generateExpression(int x);
float calcusum(int a, int b, char sig);
string combine(string a, string b, char sign);
string int_string(int number);
char randop();
private:
char *p;
};
class read
{
public:
void boundary();//用于生成界面
int fileread(char *p1);//读入文件并返回题目数值
private:
char *pr;//读入指针
int num;
};
类与类之间的联系
联系的话还是通过成员函数与指针来实现的,由于设定成私有变量的缘故,这也是作业中我感觉比较重要的一块,很好地反映了之前所学的知识,不过这之中也有learning by doing的部分,这里简略的贴下代码,通过ostringstream转换成string类型。
ostringstream ss1;
ss1 << reply;
string str1 = ss1.str();
联系部分也是通过指针来跟类中的成员函数来进行的,由成员函数之间发送信息,互相引用各自的成员函数来进行的。
实现自动出题
还是通过随机生成数字,随机生成符号,由于是string类型结合起来比较方便,进而得到生成的题目,具体我通过流程图表示出来(●`∀´●)
)
git链接
感想
感觉这次的作业也并非是单纯的轻松的,也在之前的代码上面进行了一系列的修改,相当于一次缓冲期,通过对于系统化的流程图的绘制及理解,也能更好迭代代码。面向对象是从用户和整体角度出发的,把问题作为一组相互作用的实体,显式表示实体间的关系,我想这次作业也可以很好反映这一点。