OO第一单元总结

前言

似乎还没有从放假的氛围缓过神来,我就投入到了紧锣密鼓的OO课程学习中。在这一个月中,有很多让我不禁暗叹OO课程果然名不虚传的时候,也有很多让我深夜上头熬到三点的时候...但经历了这些,我真的收获颇多。
作为一个没有学过JAVA的新手,我经历了从零开始的JAVA世界生活,感受到了,在一门课程的强大压力下,个人能力进步的飞速。
第一次作业

  构建了polynomial类和MainClass类,通过MainClass对多项式中的项进行匹配传入polynomial类进行求导并输出。
度量分析

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

OO第一单元总结_第2张图片
bug分析

  第一次作业由于个人时间安排的失误,导致完成的比较仓促,因此出现了比较多的bug。究其原因,是最开始在架构的时候没有想清楚很多细节,等到完成之后,发现有些地方,需要完善的时候,由于时间不允许重构只能用补丁式修改,极大的影响了原有的结构。嵌套循环的逻辑太过复杂,使得修改的时候思路不够清晰,因此出现了一些判断条件处的错误。这次作业没有很好的利用类的思想,而是完全按照以往面向过程的想法来编写,虽然通过中测,但是在互测中给我上了一课。

第二次作业

  构建了除了Main之外的字符串处理StringProcesser,字符串匹配StringMatcher,求导Derivation类(UML图中的TermMatcher是用于测试的与主程序无关)。在Main中先用StringProcesser去掉空格并且合并相邻正负号,然后进行匹配,最后求导输出结果。

度量分析

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

UML图

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

bug分析

  第二次作业完成的比较顺利,依然采用了大正则的方式匹配字符串。仅用了较少的次数提交,便通过了中测。因此没有自己构造更多的数据去测试程序。这导致了我在强测中有一个致命的bug(在用加法求导法则合并各项的导数时,忽略了“如果项的导数由多项相加得到,那么每一项前面都应该赋以该项导数前面的符号”,换句话说,结果不是“项的导数([+-]项的导数)*”而是“项的导数([+-](项的导数))*”)被发现,这个点在互测中也疯狂被刀。。虽然一次提交修复了这些同质bug,但是强测分数一去不复返...经历了这次教训,我深刻理解了自己全面构造测试数据集的重要性。还有一个bug是对空白字符不应用\\s*简单匹配而是用space和\t来匹配,也导致了一个点的失分。

第三次作业

   构建了除Main以外的多项式分解,项分解,求导,各个因子类。通过将表达式分解成项,再将项分解成因子,依次进行求导。

度量分析

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

UML图

 

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

bug分析

  在中测前weak45始终没有通过,经过自动测试数据生成发现是自己在所写正则表达式中对三角函数的幂指数index前面的符号没有捕获。修改后立即通过中测并且在强测和互测中0bug。

 

总结与收获

  1.收获了很多,熟悉了很多面向对象程序设计与构造的方法,比如类,接口,继承,工厂模式等等。自己的代码层次化和风格都有了很大的改善。

  2.仍有不足,debug能力比较不足,发现bug后束手无策的情况经常出现。另外,程序的可扩展性不强,后两次作业均没有使用前一次作业的思路而是大面积重构。

  

   OO课程苦中作乐,编不出来简直要崩溃了,突然发现一种修复或者实现的方法又喜出望外。一言以蔽之,玩的是心跳,收获的是宝贵的财富。

 

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