BUAA-OO-第一单元总结

BUAA-OO-第一单元总结

  OO课程第一单元马上就要过去了,我也经历了连续三周魔鬼作业的考验。对于我这样没有任何面向对象思想的小白来说,每次作业都是十分痛苦且艰难的。首先很高兴自己三次作业都拿到了还不错的成绩,但高兴之余我也发现了很大问题:我的代码一点也不OO,我仍然在用C语言的面向过程思想去写代码。这是我急需改变的编程思想。

  第一次作业

  第一次作业我的基本思路是:

  1、判断非法空白字符是否存在,如果没有非法空白字符,就删掉所有空白字符(空格和\t)。(简化正则表达式)

  2、使用lookingAt()函数去匹配第一项是否合法,如果合法就删掉第一项,继续循环判断,直到str为空。(避免大正则暴栈)

  3、根据特定+-号的位置将表达式拆分开,并根据拆分的格式将系数和指数存在两个ArrayList数组中。

  4、根据系数和指数进行求导操作,并进行一些合并和化简。

  一共有两个类,第一个类为主函数类,只有一个方法,20行。第二个类为多项式类,其中有6个方法,分别为删空格、匹配合法、拆项、计算、输出、返回是否合法。每个方法大概在30-40行,共190行。每个方法的控制分支数目较多,因为要匹配各种不同情况,所以if else嵌套比较多。

  在强测和互测中幸运地没有bug,共发现别人2个bug,没有特别构造数据,用暴栈和特殊字符hack了2个人。

  第二次作业

     第二次的做法基本同第一次,只不过存指数的数组多了几个,合法条件的判断多了不少。

  一共有三个类,第一个类为主函数类

  在强测发现了两个bug,是在化简时考虑不周全导致。发现别人3个bug,有根据正则的漏洞构造特定数据。

  第三次作业

  第三次作业我的基本思路是:

  1、判断非法空白字符是否存在,如果没有非法空白字符,就删掉所有空白字符(空格和\t)。(同第一次)

  2、根据不在括号内的+-号将表达式拆分开

  3、根据不在

猜你喜欢

转载自www.cnblogs.com/monokuma/p/10583622.html