类图及度量:
(1)第一次作业
第一次作业中出现了两个较为复杂的方法,为输入的输出函数,在第一次作业中由于对面向对象思想的不熟练导致了输入和输出有面向过程的代码出现。
(2) 第二次作业
第二次作业中, 读入函数还是相对复杂,第二次作业依然运用正则表达式读入,而正则表达式极为复杂。
(3)第三次作业
就三次作业来看,总体的优缺点:
优点:
整体不会出现类超长的情况,类和类之间的意义区别也比较好。
缺点:
类中的方法总是界限模糊,以及对实例对象的理解不够透彻,第二次及第三次作业中对继承的应用不够熟练,重写和应用父类也出了许多问题。
三次的读入函数都写的相对复杂,对读入的方法还是没有很好体会。
二.分析自己程序的bug
未考虑到字符串中可能有’\v’‘\f’的情况,在互测中被发现,并在bug修复中改正
第二次作业中,出现了的bug:在读入多项式的因数忽略了负数的情况,导致所有带负号的项都会出错。
这是在READ类中出现的,在我的读入方法中,会通过正则表达式直接读入多项式的一项,然后继续读入每一个因数,设计的时候其实常数也算在因数的一类中,但在读入的过程中被我忽略了,导致了bug的出现。
这次通过强测点且没有被互测查出,但程序并没有优化,性能很差。
三.分析自己发现别人程序bug所采用的策略
1.在自己写程序考虑到的容易出错的点,会先用这些数据点测一下
2.跟同学交流,询问他们测到的bug
3.阅读房间中同学的代码,发现疑惑的地方会用一些数据点测一下
第一次的作业中,有三个类:主类(main),多项式(Polynomial),多项式中的项(Term),读入和格式判定的主要是正则表达式。
第二次作业基本进行了重构,有10个类:
Main:主类。
Gather(所有因数的父类)
Poly:多项式的项,即一整个乘积项。
PolyNomial:多项式,用于求导结束储存与转换成字符串的输出。
Term:多项式中的因数及其指数。
Read:其中包含读入的方法,第二次作业中依然使用了正则表达式判断读入的格式与方法。
第三次作业在第二次作业的基础上稍作改动,改动最大的地方是读入部分,增加了一个类放求导的函数。
Main:主类。
Gather(所有因数的父类)
Poly:多项式的项,即一整个乘积项。
PolyNomial:多项式,用于求导结束储存与转换成字符串的输出。
Term:多项式中的因数及其指数。
Reader:其中包含读入的方法,第三次作业中使用了递归降幂的方式读入。
Derivation:求导。
在第一单元的三次作业中,刚开始学习java也遇到了许多困难,第一次作业中第一次利用面向对象的思想编程,进行简单的求导,完成的不算很差,第二次作业中,提高了一些难度,因为对自己架构的不熟练,导致出现了很蠢的bug,做作业的时候也花费了很多的时间,而且强测的成绩也很不理想,体会到了思路清晰的重要性。在第二次bug修复中改正并做修改完成第三次作业,第三次作业相对于第二次作业变化并不算大,因为第二次的代码结构还不错,所以第三次没有花费过多的精力,也让我体会到了代码扩展性的重要性。但优化很难,由于担心正确性,并没有做优化,这也是较为遗憾的一点。获得了经验也吸取了教训,希望在接下来的oo课程中能获得更多的知识与能力。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。