BUAA OO第一单元作业总结

第一单元作业总结

一、结构分析

因为一开始始终无法上手java,所以前两次的作业都放弃了,最后好不容易写出来了第三次作业。

 

类图:

  

  在类图中,我们可以发现用的类不多,其中主体函数在MainClass中,MainClass中存在有解析表达式的函数,而在此函数调用递归的过程中,返回的参数会有列表和因子数等,故我新建了一个Object类用来作为函数返回类型。

 

方法复杂度:

 

 

   在类图中,我们可以发现用的类不多,其中主体函数在MainClass中,MainClass中存在有解析表达式的函数,而在此函数调用递归的过程中,返回的参数会有列表和因子数等,故我新建了一个Object类用来作为函数返回类型。

  在第一单元的作业中,因为对面向对象方法掌握得不够好,我主要运用的是面向过程的方法,其中主要的思想是递归以及多项相乘的求导法则。

  代码实现需求的大致思路是:将输入进来的字符串定义为可变字符的类型,用正则表达式不断去匹配字符串的开头,如果匹配成功因子如常数、三角函数、幂函数等,将其存在列表中;一直循环输入匹配并存储进列表,直到遇到+号或-号等项的分割符时停止,将得到的该项的因子列表又存进项列表,并继续匹配读入的字符串,如此往复......知道字符串读入结束,我们就得到了一个存储列表类型的列表,底层列表存的是每一项的因子,二层列表存的是每一项的列表;输出时,循环遍历列表,用多项相乘求导法则求出对应的导函数,得到结果。

  缺点:正如上述所说,由于采用了面向过程的思维方法,对各个类的设定较少,可读性和可扩展性不高,没有将相似功能的代码部分提取出来,在今后的学习中会积极改正。

  优点:在代码实践的过程中,自己能清晰地了解代码的运行规则,实现思路承接得很紧密。

二、BUG分析

  在不间断多次提交代码时,代码顺利过了弱测,但中测的一些数据点始终没能通过,直到截止最后一次也没能修复此bug。在提交截止后,自己又不断尝试找到bug,最后发现是对一种格式错误的判定出现了问题,造成格式错误但没有判断出来和对项的分割不准确的问题。例如,在有括号不匹配的情况,自己没有去判断;另外,在一些数据中,会将+号或者-号读入项的因子中而不是判定格式错误会造成数据点未通过。

三、发现BUG策略

  在寻找自己bug的过程中,我不断寻找一些边界条件和难以考虑到的格式错误的数据点,以此来发现错误、修复错误。除此之外,会借用同学的评测机生成数据,并与生成的标准答案进行匹配,在大量的数据评测中找到bug。从中,我也感受到了,bug有时就在某些细节的地方,不仔细观察调试是很难发现出来的,故之后在初次编写代码的时候要格外小心。

四、重构经历

  因为前两次作业一直都没写出来完整代码,所以也就没有重构。

五、心得体会

  经过第一单元作业的折磨,我最大的感悟就是pre很重要,pre可以帮助我们尽快掌握一些java语言知识和面向对象的思想,更快的上手第一次的作业。可以慢,但是不能停,不能放弃,做了第三次作业之后发现前两次作业真的不难,尤其第一次,真的很可惜。

  能力是可以被锻炼出来的,学习新东西的开始都会是痛苦的,但是熬过去,后面就会顺心一点。我现在还是很依赖教学,自学的能力有待加强。对自己的要求应该高一点,感觉在六系被虐的我已经毫无上进心了,可能就是对自己要求不够高才能允许自己放弃作业两次吧。要好好抓紧时间,做好预习和课后的复盘,加深自己的理解,真正学着东西才是最重要的,而不是单纯为了敷衍作业。

  因为单元作业都是迭代的,所以要有迭代开发的思想,上课也很重要要认真听,要赶紧从面向过程过渡到面向对象,每次课上的内容都对后面的作业有帮助。学会工厂模式,增强代码的可扩展性。坚持吧!相信oo过后,我的能力一定会更上一层楼。

posted @ 2021-03-29 22:36  y123h  阅读(85)  评论(1编辑  收藏  举报