oo第一次作业总结

oo第一次作业总结

第一次作业:

问题分析:

第一次看见第一次作业感觉就是一个字符串处理,要点在于正则表达式的判断提取。为了方便描述正则表达式,将正则表达式分成了因子(数字和幂函数),项,多项式。总体判断后逐项提取。储存采用了ArrayList并且加入单项式类(常数和指数),求导是对自己作变化。

代码度量:

 

 

 

 

第一次作业在设计架构仅仅是按照C语言的思路在写,将求导,合并同类项等等的处理全部作为了一个方法来写,所以设计架构上想的不太尽如人意。

Bug分析:

个人最明显的bug是在clone的时候少复制了一个属性导致出现了大量的错误数据。

另外就是特殊字符、爆栈、0项处理等等bug

0项处理的bug主要是在于优化性能之后导致空的列表导致crash。爆栈的问题在贪婪匹配的问题上。特殊字符的问题在于正则的处理。

第二次作业:

问题分析:

相对于第一次作业增加了乘法以及三角函数。基础的解决思路在于改变多项式的因子类,在因子类下建立幂函数类以及三角函数类,将求导分解在幂函数以及三角函数类中。相对于第一次作业增加了输入类,输出类,字符串处理类。这一次的作业没有再次盲目使用正则表达式,而是利用replace对多项式进行了预处理从而大大方便了信息提取以及错误判断。

除此之外表达式的优化也出现了一定的难度,但是基于贪心的算法对三角函数进行优化是可以解决多数的优化数据获得最优解的。

代码度量:

 

 

 

现在看来代码中的各个方法之间的联系多余复杂各类之间交互性有一些高。相比于上一次代码的架构上有了许多进步。

Bug分析:

本次作业出现的bug相对于上一次没有了WF上的错误而是主要集中于求导表达式错误。而且大部分的错误出现在了优化是造成的错误,主要缺少了测试优化的数据造成的。

第三次作业:

问题分析:

第三次作业的难度无疑在于嵌套上。嵌套用C语言的思路来讲无非就是递归,自然也就想到了树结构。作业中的提示相当重要,就是讲组合项作为一个类来写,将求导作为接口放入类中从而构成了树结构。对于表达式的解析以及求导自然也采用了递归的方法。

表达式的解析方法采用了从顶层开始按照+-*、嵌套的顺序进行分解知道遇到单项停止,建立叶子节点。按照递归的解析方法建立树结构,求导也建立树结构的基础上,不过这一次求导的过程是建立一个新的表达式而不再是修改。

代码度量:

 

由于本次的分类比较多也就不怕代码的复杂度(测试模块化)。所以个各类之间的联系看起来有点恐怖。

 

Emmmm。。。看来代码设计的架构并不怎好看,主要是解析的方法设计得比较复杂,调用了太多类。

Bug分析

bug主要集中在解析式的处理上忽视了边界的数据以及优化时疏忽了某些情况导致输出错误。个人的bug是在于()的解析处理上出现了一些问题。在格式处理上,由于嵌套因子的出现常常会忽略关于括号的一些bug

 

 

总结与收获:

1、熟悉面向对象的思路,在对象的基础上考虑事情。

2、增强代码的可扩展性,这就要求我们把各个过程看作是某个机器,机器之间通过合作完成目标。

3、注意整个代码设计的模块化,方便测试扩展以及维护。

4、一些能优化的地方要尽可能的优化,要不然别人麻烦,自己也麻烦。

5、代码个各类在调用时一定尽可能的将动作都作为方法来处理,方便模块化测试。

6、注意些好错误类,方便维护。

posted @ 2019-03-27 15:49  于金佐  阅读(109)  评论(0编辑  收藏  举报