OO第一单元总结

一、代码分析

Homew1:

UML图:

OO第一单元总结_第1张图片

度量分析:

OO第一单元总结_第2张图片OO第一单元总结_第3张图片

Homework2:

UML图:

OO第一单元总结_第4张图片

度量分析:

OO第一单元总结_第5张图片

OO第一单元总结_第6张图片

OO第一单元总结_第7张图片

Homew3:

UML图:

OO第一单元总结_第8张图片

度量分析:

OO第一单元总结_第9张图片

OO第一单元总结_第10张图片

OO第一单元总结_第11张图片

OO第一单元总结_第12张图片

总结:

从三次作业来看,我前两次作业均只有两个类,一个主类和一个item类,这是由于前两次作业的表达式比较简单,item的形式相对固定,所以我把项作为最小的单位就能够很好的处理。但是第三次作业加入了复合函数的求导,让项的形式变得复杂,这就导致我前两次的方法不再适用,必须重构,最小的单位变成了因子,使得类的数量大大增加,同时加入表达式树,类内的method也大大增加。所以,提前规划好自己的代码可以避免重构,节约时间。

 

二、自己的Bug分析

第一次作业强测满分,出现了一个同质bug,是由于我是利用+的spilt分词方法进行的,需要把项内的+号去掉,并把项之间的-号换成+-,我用的代码是s = s.replaceAll("(\\d)-(\\d)","$1+- \$2")但是对于1-2-3x这种表达式,执行一次会变成"1+-2-3x",这是因为2已经在"1-2"中匹配了一次,replaceAll不允许再次对2进行匹配。再执行一次就可以很好的解决这个问题了,就算连续出现这种两项相减也能解决。

第二次作业出现了两个bug,一个是强测中,一次是互测中的,强测中的是由于表达式中出现垂直制表符,我默认将输入的字符串中的\s删掉了,但是垂直制表符是不能去掉的,要叛定为WF。另一个bug是互测中我的输出的bug,当项为-1时,我只输出了符号,而忘记输出了1。

第三次作业未通过中测。

 

三、自己分析发现别人程序bug所采用的策略

我个人采用的策略是略读同学的代码,一般放在输入处理、求导和输出的部分,形式化的验证一遍,找到bug后再构造数据,其次是自己构造边界数据,以及自己出现bug的数据用以测试他人的代码,显然这是一个极其痛苦的过程,但痛并快乐着,读别人代码也可以学到很多东西。

 

四、心得与体会

OO真的是痛并快乐着,紧张又刺激,ddl快到的时候真的很慌,但是每一次作业都能学到很多的东西,很有收获。自己前几次作业都是ddl快到的时候才完成的,这样真的很不好,可能一方面是在家里学习会变得比较慵懒,另一方面是当作业难度提高后,由于没有清晰的思路,一直没有动手,这就导致了第三次作业的翻车,以后应该吸取教训,尽早动手,不要在ddl的时候赶。另外,讨论区是个好东西,没有思路的时候可以看一下,但是也不能过度依赖,要有自己的想法。我个人对前两次的作业都比较满意,因为感觉和别人所说的都不太一样,但很可惜第三次没能延续这个方法,重构浪费了大量的时间。有付出才会有收获,之后的OO我一定会努力的。

你可能感兴趣的:(OO第一单元总结)