作为一个面向对象编程的小白,这三次作业对于我来说难度其实非常大。所幸,OO教务组合理地安排作业让我这个小白也能逐渐接受这一切。
第一次作业分析:
由于是首次使用Java语言编写面向对象程序,因此本次作业写得并不理想。事实上,也正是因为第一次的原因,导致我的代码充满了面向过程的感觉,并没有很好的将表达式类的属性进行封装。因而在DEBUG阶段造成了很大的麻烦。
纵观第一次作业,主要的bug出现在两个地方:其一,使用正则表达式时,没有考虑当输入的表达式过长时,导致爆栈,从而使得程序crash。其二,未能准确理解指导书中对数字范围的定义。从这两点让我意识到仔细阅读理解指导书的重要意义。
第二次作业分析:
在有了第一次的开发经验之后,第二次的作业便好了许多。由于指导书已经对每一个类以及其属性都说明的很清楚,因此此次开发的难度并不是很高。唯一需要注意的一点就是当请求队列非空的时候,需要判断前后的请求发起时间来确定新的请求是否能够入队,否则会出现错误。
第三次作业分析:
第三次作业是在第二次作业的傻瓜调度上新增了“捎带”的功能。由于捎带功能的出现,每进行一次捎带,会使得电梯运行的时间增加,因而会导致新的同质请求出现。我的程序只考虑到了原本的同质请求,没有考虑由于“捎带”而导致电梯运行的时间,从而使得原本在傻瓜调度的电梯系统中非同质的请求变为了新的同质请求,这使得我的程序出现了错误。在算法的设计上,我应该改为每次将主请求及其捎带入队之后,计算运行时间,并且根据这个运行时间,将原本的请求队列遍历,删除新出现的同质请求,这样才能保证运行完主请求后,不会出现新的同质请求。
关于测试样例方面,我的测试样例是主要针对于边界情况的测试。我个人认为一般能正确跑出结果的程序,一般的测试样例都能正确,因此主要针对边界情况进行测试即可。
不知不觉已经做完3次OO的作业了,可以说,这几次作业绝对是“拖延症”患者的噩梦。如果像从前面对计组那样,总将作业拖到deadline前一天才开始动工的话,绝对是自讨苦吃的行为。每次拿到指导书的时候,我认为有必要花费一整天的时间仔细思考此次任务的要求,规划设计方案,明确每个类的属性以及方法。如果一开始便能够合理设计每个类及其方法,那么出现bug的时候,便能够很快地找到bug出现的原因并且进行修改。
OO之旅已然过去四分之一,望诸君且行且珍惜,切莫放弃!