当前位置: 首页 > 编程学习 > 软件工程 > 面向对象 > 正文

OO第一次博客作业总结反思

2018-04-22 来源:博客园/xiaoxin83121

使用了masteruml插件来生成类图和metrics插件分析代码

第一次作业

1、UML类图

>在第一次作业中,使用了两个类,代码中有没有使用的变量与函数,为平衡两个类的内容,我将输出函数放在了多项式类中,但是仍然不够平衡。

2、量化分析:

>处理字符串输入的过程,按照面向过程的思路来写,嵌套的判断条件过多,时间空间复杂度都比较高,写的并不简洁。

3、程序中的bug:

公测bug:压力测试,在数据量较大的情乱下,我对计算结果进行了取模运算,导致了公测出错。错误来源处于多项式计算的过程中,在最终获得运算结果并存入结果数组中,为了保持与输入相同的最多六位数的要求,我对结果进行了取模运算,这与程序中类的设计没有太多关联。

被发现的bug:对于一种特殊情况(指导书没有说明)没有在Readme中说明的incomplete错误。这次bug提示我,一定要好好写readme,尽可能的覆盖程序的所有边界情况,防止出错。

自己的程序还是存在问题,在输入时没有限制输入的最多数目,将数组开成了100大小,且数组的操作并没有包括在trycatch代码块中,如果多项式个数非常多,程序会出现crash

4、分析别人bug的方法:

分析别人bug的方法,首先,我将我自己的测试用例都尝试了一遍,结合其指导书上 的要求,找到了其未处理指数为负数的bug(同时也说明公测并没有涉及到这个问题);其次,我阅读了TA的代码,在代码中,负责处理输入的模块并不是由正则表达式来完成的,在抱着感兴趣的态度阅读了与正则表达式不同的有限状态机的实现过程中,画出了流程图,并找到了在有限状态机过程中存在的一个计数错误问题(多项式超过50项仍能计算)和一个输出错误问题。我的测试过程是,首先测试了几个压力测试,然后将我在编写程序时用到的测试样例,可能出错的点进行了测试,最后看代码中会不会出现问题。

5、心得体会:

在第一次作业之前,只使用java编写过一个简单的商店管理系统,但是第一次作业写的仍然不够OO。主要的代码都在Computeploy类中,两个类并不均衡。输入部分,采用正则表达式进行判断是否满足要求,为了防止爆栈,将正则表达式进行了两次拆分;计算部分,我参考了C语言,写的比较面向过程,采用比较传统的字符串处理来处理数据,然后进行计算,对result多项式进行输出。

优点是,对数组进行存储的时候比较方便,可以直接使用;正则表达式分成了两个;在ploy类中实现的打印方法,相对来说更加均衡

缺点是,空间利用率不高,数组开的比较大;没有考虑到超过最大限制数目多项式的存储问题;计算过程偏向于面向对象;正则表达式容易出现爆栈现象。