OO第一单元总结

经过了三周的奋战,OO的第一阶段表达式求导也暂时告一段落了,在这里就让我总结一下我这一个越的学习经历与获得的经验吧。

一、基于度量的程序结构分析

 作业一

(1)结构
 

由于第一次作业是我刚刚接触面向对象,而且比较简单,所以就采用简洁的分步式结构。把输入,求导,输出分开来编写,使每一段能够单独进行调试。

用ArrayList来储存多项式,求导时顺序遍历求导即可。

(2)耦合度

 

可以看出程序的复杂度较高,每个类所执行的功能太过繁琐,不易进行维护工作。

第二次

(1)结构

 

 第二次作业我依旧沿用第一的方法,将每个项用正负号分开,并将其中四种不同类型的单项分开计算,把每个子多项式化为一个四元组。构建完ArrayList之后再逐项进行求导。

(2)耦合度

 

 

 虽然第二次作业的代码量比第一次的要大,当我花了恒大的功夫在代码的结构优化上,所以相较第一次的来说要有所进步。

第三次

(1)结构

 到了第三次作业,难度剧增前面只保存系数与指数的方法不在适用了,我思考了一番后决定把多项式为三层,第一层为多项式,第二层为加号分割后的小多项式,第三层是乘号分割的单项。而单项又有四种,所以我先为他们构建了一个父类,之后Cos,Sin,X,以及常数都继承自父类。所以单项一旦有嵌套,便把子多项式取出重新构建,最后的结果就像树一般。而求导时要从外面开始逐层求导。为了化简的方便,我把最后的输出字符串重新存入一个静态类中,之后再重新构造树型多项式,逐项检查进行化简。

(2)耦合度

在小多项式的类中有太多的方法,而且每个方法都比较复杂所以这次在这一部分出现了不少的BUG。

二、我程序中的BUG

第一次

第一次作业由于最后的排查工作不够仔细,有一个显而易见的bug在提交前没有找到,当输入只有一项且指数为零时,在输出时我依旧把这一项抹去,就导致输出为空,这是及不应该出现的。

第二次

第二次作业我进行了认真的bug查找工作,但是由于在最后一天的化简工作后没有仔细进行覆盖式审查,导致漏写一个符号,造成了不可挽回的损失。

第三次

第三次作业在优化后我已经来不及做bug检查工作了,导致最后漏洞百出。

总结

在写完稿时需要进行初步的排查,而优化工作时有风险的投资,有可能为了那二十分而丢掉更多的分,所以要将时间与进度进行权衡。

我的bug主要产生在优化阶段,还是对于程序的封装做到不到位,在优化阶段经常需要对于前面已经写好的部分做修改,我认为这是很不好的,有可能只是一个小小的修改便让我之前的努力全部白费。

所以在以后的学习中,不但要做到数据的密封性,还要做到程序的密封性。让结构更有层次,更有条理。

三、寻找bug时采取的策略

在OO课程中,最有趣的环节便是互测了,在阅读他人的代码时发现其优秀之处,加以学习,如果找到他人的bug,分析其为何会产生。让我们在互相学习之中进步,我相信这才是互测的初衷。

在寻找bug时我发现主要集中在读入处理,以及输出的优化错误两个方面,只要认真观察,就不难发现其中的错误之处。如果发现具体的错误之后能将其改正那是再好不过的了。

四、Applying Creational Pattern

在最后一次作业中,我发现最后的单项,虽然有四种形式,但它们除了构造方法不同,大部分的方法都可以继承自一个公共的父类。

回顾我所写的代码,其中有许多地方都是图一时的写起来顺手,就进行超长的代码书写,丝毫不注意格式,这是十分糟糕的行为。在写代码之前就应该为自己以后的工作着想,对代码进行合理的封装,以达到工厂化的目的。

个人感觉面向对象对于一个项目来说简直就是灵魂,它可以保证各个小目标共同开展,独立检测,最后只用拼装在一起便可以完成最终的大目标。

在以后的OO课程中,我必将继续熟悉面向对象的编程思想,不断实践,不断进步。

posted @ 2019-03-27 18:37  ybw6  阅读(103)  评论(0编辑  收藏  举报