OO第一单元

一.程序结构的分析

由于第三次作业最为复杂,在此我直接对第三次作业进行分析

先上图

OO第一单元_第1张图片

 

OO第一单元_第2张图片

 

   从上面的结果可以看出,我的代码的类之间的耦合度非常高,代码非常复杂。我虽然使用了继承关系但这主要是为了使用共用的正则表达式。而且我在类之间进行嵌套,在创建对象时能够实现递归地调用构造方法创建对象。在之后的求导,合并同类项等操作使都能递归地调用相应的方法,这使我的程序耦合度大大提升,大大增加了之后的debug环节的难度。

 二.分析bug

  由于第一次作业没被互测和强侧出bug,就省略。我先简要分析下第二次作业的bug。第二次作业相对于第一次作业进行了重构,而且我完全抛开第一次作业重新写了代码,这导致我第二次作业出现了细节处的bug,而这些bug在第一次作业就已经被我解决了,在重构之后我把那些细节部分给忘了,导致bug出现。

  第三次作业中,由于我的类之间耦合度非常高,导致主要遇到的主要问题就是深拷贝和浅拷贝的问题。我开始在程序运行过程中发现,当我在修改某一个对象的值时,其他的我不希望修改的对象被修改了,但是我修改的是我new的新的对象。这是由于类的耦合度过高,虽然new了新对象,但是新对象的属性却和原对象相同,修改时原对象的属性也被修改了。后来我在创建方法中也创建新属性,才解决这个问题。还有的主要bug就是正则表达式的匹配问题,match方法采用贪婪匹配,导致我判断表达式合法时遇见问题。另外还像表达式括号输出的一些细节问题。

三.互测

  互测时主要是使用我自己用的测试样例,但是测试功能的较少,主要测试边界数据,还有自己遇到的一些细节问题。

四.对象创建模式

  对象创建模式可以使对象创建的过程更为简洁,主要办法是通过分析表达式含义的字符串参数来更改创建的对象的属性,我的办法是在类的构造方法中实现对表达式的分析,再对对象的属性赋值。

五.心得体会

  这次作业我真是被类之间的耦合的折磨够呛,我应为没怎么使用继承和接口,导致代码非常复杂。而且我对进行递归计算的计算流程很迷糊,写代码时也不是很有信心,递归一次还能想明白,两次三次就想不清会发生什么了,对算法不是很有信心。而且在debug时很多情况是对从黑箱开始进行分析,调试过程也很艰难。最后最重要的还是要向别人多学习继承和接口的使用办法来降低类之间的耦合度,避免bug扎得太深。

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