oo第四次作业

第一次作业分析


 

  第一次作业要实现的是多项式加减法,刚拿到指导书我大致读了一遍并且结合ppt简单思考了一下就开始写程序了,由于是第一次写oo作业,我刚写完poly类和ComputePoly类之后简单的输入结果发现运行出错,我检查了一下是我poly类中的add和sub的设计出现了问题,而且computePoly类里更像是面向过程程序,加上刚开始写java对构造函数理解的不是很透彻,在编程过程中走了不少弯路,所以我不得不重新构造我自己的程序,第二次设计的过程中我一边对着指导书一边在纸上把自己的思路简单地列出来,包括如何使用数组来表示多项式的幂和系数、计算过程的实现,经过认真的思考之后,这一次对类的关系有更深刻的认识,把输入到计算再到输出的过程想清楚,再进行编程顺手了许多。

  现在回看第一次作业的类图,发现自己当时在检测字符串异常也就是check类的设计有一些问题,虽然当时对程序的鲁棒性上进行充分的设计,把所有可能出现异常的输入情况都列举出来,但当时自己傻傻的写了27个方法,而且代码内容除了正则表达式以外完全一样,其实完全可以将它封装成一个方法。然后在互测被同学查到的两个bug也都是异常处理不全(本来以外正则表达式的情况已经想的很全了),总是在这种细节问题上出错。

  总之第一次作业让自己对面向对象编程有了更深入的理解,通过对面向过程和面向对象的比较体会到面向对象封装的特点,还有就是正则表达式的学习,解决了代码编写时不少的困难,方便了代码编写。

 

第二、三次作业分析


  吸取第一次作业的经验教训,第二次作业我认真的阅读指导书中的内容,花了一下午的时间把指导书中每句话的逻辑关系搞清楚,结合助教在讨论群和issue的解释,在纸上大致写了一下五个类中的属性和方法以及它们之间的关系,然后在开始写代码,这次真的写的更加得心应手。

  第三次作业是在第二次的基础上增加了捎带功能,一开始我觉得只是觉得增加这一个功能可以继承然后重写一下方法就好了,但是真正实践起来我发现我把事情想得过于简单了,光指导书中关于捎带功能的描述和输入输出举例就有五页内容,感觉第三次作业的思考量比第二次作业大了很多,在设计上给人带来了很大困难,我花了一天时间才把算法想了个大概,很多细节的处理还是后来加的,包括同层输出顺序、同层的捎带情况还有still的处理等,我的大体思路是先确定主指令,然后遍历整个队列寻找该主指令可以捎带的指令,若找到就执行,然后当达到主指令目标楼层时执行该层的捎带指令和主指令,执行完后寻找新的主指令,直至队列为空,可能一开始在设计方面花了比较长的时间,算法的思路比较清晰,之后在测试时也没出太大问题避免了推到重来的情况,但在细节的考虑上感觉自己稍有欠缺,被同学找到了一个初始阶段在第一层的一系列指令之后有的输出有遗漏的问题,对于这种特殊情况下次应该考虑清楚。

 

心得体会


 

1.早下手早看指导书,拒绝拖延症,这三次作业下手的比较早,没有到最后赶ddl,这也给之后的测试工作充分的时间,感觉自己在这点上做的比较到位。

2.前期的指导书阅读以及构思真的特别重要,在这方面多花一点时间能减少不少之后写程序时遇到的困难。

3.构思代码时一些细节上的要求要都考虑进去,以免debug时大幅度的改代码,有时往往会把自己搞晕

4.构造测试样例时要覆盖分支树上的所有分支,只有充分的测试才能发现自己隐藏的bug。

5.readme写的时候不能对付,要仔细和自己的程序在内容上一一对照。

5.在debug的时候一定要静下心来,不能面对bug产生烦躁情绪,这样心态容易崩,遇到bug可以先看看指导书结合自己的思考,然后再检测自己代码逻辑上的问题

 

最后希望大家能互相交流学习,一起进步!

 

posted @ 2018-04-03 17:22  jun_xiao  阅读(132)  评论(0编辑  收藏  举报