欧欧
欧欧
hOmewOrk1 多项式的加减
刚拿到作业的时候,根本不知道怎么写,不知道java怎么输入,不知道及各类之间要怎么互相关联,总之就是各种多项式懵逼。
和大家不同的是,一天我只能速成破产版java,破产版面向对象,对真正的豪华版面向对象还是不甚了解。
知乎上知名的匿名用户的这个图,想必大家都已经看过了:
把一组数据结构和处理它们的方法组成对象,把相同行为的对象归纳为类,通过类的封装隐藏内部细节,通过继承实现类的特化/泛化,通过多态实现基于对象类型的动态分配。 By 知乎id:Milo Yip (侵删)
然后就硬生生的分成了三类:ComputerPoly
, Poly
, Judege。
简洁的介绍一下:
ComputePoly
四个方法的功能依次是:
- 解析输入的多项式字符串提取每一个多项式;
- 解析出每一个操作符;
- 调用
Poly
类的方法进行计算; - 主方法进行字符串的输入以及调用
Judge
判断输入的字符串是否合法;
Poly
三个方法的功能依次是:
- 多项式加操作;
- 多项式见操作;
- 返回计算后的多项式,打印;
Judge
该类的方法就是为了判断输入的字符串是否合法,合法则返回true
,不合法发挥false
。
关于测试:
- 最基本的就是先对输入合法性判断进行测试;
- 然后对边界情况进行测试,比如输入的字符串个数超过了界限;
- 第三测试程序会不会因为爆数组等奇奇怪怪的原因而
crash
,即程序的鲁棒性检查; - 最后就是阅读理解代码找到可能存在的设计上的缺陷;
以上就是我对第一次作业的简单的理解;
hOmewOrk2&3:电梯
苟活了第一次作业之后,第二次作业对我这种菜菜已经开始有一丝丝的不友好了,我本来对于组织小的部分构成全局的能力就比较弱。于是乎,这对与大伙来说很简单的任务,我又不知道从哪个地方对这部傻傻的电梯开刀。
首先当然是要好好花点时间阅读指导书,我们搞清楚要求是什么,以及怎么实现每一个要求,并把所有的东西串联起来。
我首先将指导书里的要求单独的摘出来,写了一个pdf,如下(第二次部分):
这的确在后续写代码过程中给了我很大的帮助,我不需要不断的在指导书中挑字眼,挑句子,也不用去issue反复看。
以下是第二次作业的类图,以及之间的依赖关系:
首先我在主类Main
里做了输入的指令的合法性判断,并将每一条合法的请求传给Queue
类,进行存储,我比较直接地将所有的合法的请求一股脑地全都扔进了Queue
类中。Queue
类会返回每条请求的类别、目标楼层、方向以及时间。每次调度器类Scheduler
都会从Queue
类中取出一条请求,由Shceduler
类中的scheduler
方法,获取Elecator
返回的电梯当时的状态,进行同质请求判断,若不同质则将请求传给command
类中,再由command
类调用Elevator
中的方法printState
打印每条请求执行后的状态。
作业三的类图及其依赖关系:
增设了主请求类(mainRequest),以及有点聪明的调度器类(alsScheduler),继承自原来有点傻调度器类。
有点聪明调度器的作用就是用来处理捎带请求的,然后通知请求还是由有点傻调度器来完成。
主请求类的作用就是用来记录和传递当前主请求的各种属性以及状态,传参数给有点聪明调度器类进行捎带请求的判断。
心得
菜菜就不要极限操作了,早点准备早点写完,早点debug。第三次作业的极限操作严重失败,顾此失彼,捉襟见肘,补了这个漏洞出现那个漏洞,最后甚至没有时间检查不合法的输入,我的输出是否正确,以至于我多输出了一行没有标注#
的废话,不合法输入检查全错,血亏!
还有一点就是一定要理解指导书里的每一句话,不要没有理解就开始瞎写。最后的极限操作我有时候甚至分不清测试样例里面那些是捎带请求,那些不是捎带请求,连这些都分不清,还怎么写代码?
所以准备工作一定要先做充分。希望今后的欧欧多欧少呕。