oo第一次总结

  oo课程的恐怖之处早有耳闻,听前辈们说课程使用的是JAVA语言,可是自己认知里的JAVA仅仅停留在那杯冒着热气的咖啡上,连基本的语法都不会,怎么去面对oo呢?所以第一周就上网找了mooc视频,学习一些基础的东西。可是有些东西,光光掌握语法肯定是不够的,所谓面向对象课程,想教给我们自然是面向对象的编程方法。三次作业中,虽然用的是JAVA,但代码的字里行间,赫然是披着JAVA外衣的C。因为不熟悉JAVA的函数库(感觉函数也是C的概念,JAVA里该叫方法了吧),很多时候编程的思维局限在C的套路上,有时自己想了很久也不知道如何解决的过程,后来惊喜地发现JAVA里有现成的方法。

 第一次作业

  第一次作业还是比较简单的,关键在于匹配输入模式以及提取关键信息。根据mooc里的善意提醒,我们纷纷选择了使用正则表达式进行输入的匹配。比起状态机的实现方式,正则表达式很简洁。但忽略了输入过长导致的爆栈使得公测点最后一个未通过。回头再看mooc,其实视屏中前辈们有提醒爆栈的问题,只是自己选择性的忽视了。而此外,第一次作业其实就是流程化的C,训练目的想让我们体会的C和JAVA的区别除了感觉eclipse编译器更好用之外,似乎并未发现语言的大的差异。第一次作业互测分配给我的代码给我以一种特别高大上的感觉,在我还停留于和语法作斗争的时候,别人已经想着如何使自己的代码更加的模块化,我仔细地看了别人的代码,这才感觉到,JAVA是一种面向对象的语言,第一次课所想让我们学习的,在别人的代码里,看到了。可见这样的互测虽引起大家的一些情绪,但所带来的好处,也是相对存在的...

 第二次作业

  第二次作业就是电梯系列的第一关,傻瓜电梯,其实实现这样一部电梯并不难,但这一次是严格要求面向对象的编程,好在第一次作业看了其他同学的代码后对面向对象这个概念有了浅薄的理解,再联系C++面向对象的思想,也算是能够完成,但我发现,这一次比作业比第一次作业的难度的提高,其实最体现在对于指导书的理解,甚至我码代码的时间还没有看指导书的时间长(不包括debug)。指导书里有了更多地要求,也有了更多地自由区域要求我们在ReadMe文档中给出自己的设计想法。作业要求的五个类中,楼层类并未产生实际效用,后来老师讲解的时候说可能有的楼层电梯就是无法使用(比如在维护),这样更贴近生活实际,让我们恍然大悟。第二次作业的难点个人觉得在于如何判断同质请求,但是只要老老实实的从头遍历请求队列,时间上会变慢,但是不会产生bug,此外需要考虑一些异常比如时间超出int范围,可以通过把字符串转化为int时抓取错误来避免crash。

第三次作业

  第三次作业是在第二次的基础上增加一个捎带功能,其实如果单单只是实现这样一个功能并不复杂,只需要在第二次作业的schedule的基础上增加一些规则就可以,但是我发现增加了这样的功能后会导致本来可以执行的请求变成同质请求,也有可能会把本来同质的请求变得可执行。于是在每次变更主请求只有再要进行行的同质判断,遍历请求队列,时间上编的复杂,不知道有没有好的方法可以简化这一步骤。而这一次对指导书的输出理解的不到位,导致输出差了括号,很可惜。从上图可以看出我的ask类实现的功能太多,俨然一个上帝类,这是不可取的。可见我对面向对象的编程方法理解不到位。其余都与作业二的电梯大同小异,不再赘述。

找bug方法

1、用自己的测试样例跑一边,若出现自己出现过的错误,可以很轻松判断bug的一些可能原因;

2、看代码中的错误,比如正则表达式可以通过看对方的表达式,来判断那些输入可能导致错误;

3、参考readme,对其所描述的实现功能进行测试,看是否有误;也可以看哪些可能的请求对方未考虑到;

4、进行边界测试;

5、对自己没有给出的测试,对照bug树,考虑是否添加测试。

小结

  总的来说三次作业的难度还是蛮够的,其实,最关键的我个人认为还是对参考书的理解,磨刀不误砍柴工。上来就开始敲代码最后肯定会发现有许多地方不符合要求(第三次作业的教训)。利用好时间很重要,拖延症万万要不得。最后还是要说,前三次作业的主要目的,感觉还是让我们理解什么是面向对象,面向对象的优点在哪;以及帮助我们这些无JAVA基础的人渐渐熟悉JAVA,日后的学习中,一方面,我要深入的去理解面向对象的方法,还有就是要熟练掌握JAVA语言,不能建空中楼阁,空能谈方法,一上手就不行是没有用的。

  面对这三次作业,已经尘埃落定。无论好坏与否,将来的学习生活中,应当调整心态,继续前行。

转载于:https://www.cnblogs.com/silence-age/p/8717583.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值