第一单元OO总结

一.基于度量来分析自己的程序结构

第一次作业

由于要求简单,所以代码简单,但是扩展性不强。


 

程序分析

结构比较简单,用GetTerm方法获取表达式。Term就是一个单独的项,TermMap存放了多项式。

构造了求导方法和print方法。实际上print方法的扩展性不高,toString方法更好。

度量分析

复杂度并不高,而且真正复杂度高的方法是print方法,这是一个相对独立的方法。

第二次作业与第三次作业

第二次作业完成时就考虑了第三次的实现,二者之间改变不多


 

程序结构

可以认为表达式是由sin函数,cos函数以及幂函数和常数组成。所以就设置了一个父类Term,它有四个子类Xterm,Sinterm,Costerm,

PolyTerm。前三个的含义很明显,最后一个其实是一个数组,代表多个Term相乘。最终代表多项式的类是Polynominal,内含Term类

的集合,表示多个Term相加(减法就是系数为负)。同时有一个PolyMatcher类匹配字符串。每一个Term类以及Polynomial类都有dao

方法(求导)和toString方法,以及化简的方法。

 

度量分析

程序方法复杂度明显高于其他方法的有toString,equals,change(输入字符串处理)。这些方法其实都相对独立。

 

二.bug分析

在第三次作业的互测环节中,我被找到了两处bug。一处是tosSring方法的bug,这个bug比较浅显,而且也相对比较

独立。另外一处是在进行多项式乘法时,应该使用正确的clone方法。这算是一个关联比较大的bug。解决这个bug比

较简单,但是当时没有考虑到这一点就是设计上的欠缺了。

 

三.发现别人程序bug所采用的策略 

 先是用自己的评测机进行基础功能测试(可能是生成的数据太弱没发现bug),再自己构造数据。自己的构造数据主要

是针对题目的边界条件等一些特殊情况进行构造。这种构造方法就很难找到一些隐藏的bug(比如我自己的bug)。所以

还是要写一个好的构造函数。

 

四.对比和心得体会

这个单元我的第一次作业有很多面向过程的部分,所以最后就重构了。重构之后的第二次作业和第三次作业的区别比较小,

这个时候我就感觉到了一个好的设计模式能够有多方便。我第三次作业的处理方法其实和大多数同学是相似的。不过与优

秀的同学相比我的不足之处就是优化功能做的不好。我只是将括号展开,然后合并同类项。但是有些同学在三角函数化简

上做了许多工作,而且有许多好的方法值得我学习。我的心态其实开始就有些不对,我认为功能对了就差不多了,但实际

上优化工作量十分大,完成好的优化对我的能力提升也是很有帮助的。

posted @ 2020-03-17 19:46  dfghjksg  阅读(181)  评论(1)    收藏  举报