OO前三次作业总结
(罗马不是一天建成的,我的第一次OO作业是一点点看书百度出来的。。。)
作为没有接触过Java的新手,在听完第一节OO理论课之后,我认为首要是得有思维上的转变,从过去写C的过程式思维转换为面向对象式的思维模式,什么是对象?为什么要引入对象?面向对象的编程思维是怎么样的?以及如何去设计实现?于是,根据自己浅薄的理解,我开始了我的第一次尝试,在第一次作业“多项式加减运算”中试着向其靠拢,以下是第一次作业程序的度量和类图:

可以说第一次作业的体验并不是很好(尽管后面也不是很好。。。),且不说因为没有JAVA的基本功底造成的影响,个人觉得在思维模式上还是走的面向过程式的代码风格。对于一个从0开始的我来说,收获还是挺多的:通过这次作业的设计和实践,接触到一种别样的思维模式,学习了Java语言一些基本方法的使用,并着重学习了使用正则表达式来处理输入情况等方面的内容(然而由于对matcher类的错误理解,虽然在第一次作业的设计实现中没有造成影响,却成了第二次作业的隐患)。
接着,迎来了第二次作业,实现一个基于FAFS调度策略的单部“傻瓜式”电梯,以下是第二次作业程序的度量和类图结构:


在第二次作业的学习过程中,主要了解了类的属性和方法、对象的一些特性,以及如何在设计层面上加深类与类之间的交互和均衡。我们需要的是一个单部“傻瓜式”电梯来根据一定调度策略满足楼层用户和电梯内用户的需求,那么将其抽象为几个类(电梯类、 楼层类、请求类、请求队列类、调度类),分别考虑这些类里应有的属性和方法,然后按照逻辑思路进行设计实现。个人觉得本次作业中有关于类与类的交互以及类的均衡性做得不够好,有些类的设置感觉空有其名,而有些类则承担了太多任务,同时,还是会有种时而面向过程时而面向对象的奇怪感觉。。。
第三次作业是第二次的加强版,基于FAFS调度策略且具有捎带功能的单部ALS电梯,以下是第三次作业程序的度量和类图结构:


在第三次作业的学习过程中,学习了继承、多态、接口等方面的知识,可以说有点面向对象的感觉了。本次作业对于我来说的一个重难点就是有关于调度策略上的逻辑设计以及如何结合本节课所学的理论知识来实现这一设计,然而在对课上理论知识的具体实践中,还是觉得有些别扭,可能理解得还是不够到位。
Bug问题
关于这3次作业自身的bug,总结一下就是对于matcher类的掌握不到位造成的格式测试有误,以及在第三次作业调度策略实现的过程中,细节性问题考虑不周造成的功能性测试错误。
在测试别人的程序过程中,采用的一般性方法是:过一遍测试样例,然后读代码分析其思路,这个过程应该说是以一种审视的角度不断提出可能存在的问题,并设计相应样例来进行测试,经历了这个阶段过后,再以一种欣赏的角度去读代码来学习别人的优点,比如设计思路整体框架层面上的,以及解决一些共性问题的方法等等。
心得体会:
对于前三次作业的心得体会,总结以下几点:
1.作业的完成就是一个分析问题、设计思路解决问题、测试中发现问题再解决问题、最后自我评估反思的过程。良好的设计依赖于整体上的把握和对细节的处理,整体框架的构建一方面是需要严谨的设计思路作指导,另一方面则是要抽象出需要的类及其属性方法,为的是满足一定的功能需求;对细节的处理主要依据指导书的要求以及在自己的设计中具体需要注意的问题。
2.在作业的设计实现过程中,多多沟通可以扩展自己的思路,在一些处理问题方法的选择中,个人觉得合适的才是最好的。
3.课堂上所学的理论知识只有付诸于实践才能体会其内涵所在,面向对象的思维模式需要在不断摸索、不断尝试中才能养成,对于我来说,这个过程可能有些艰巨并且缓慢,但也只有尝试了才能使之真正成为自己的。
4.由于我没有写过多少代码,也没有过团队合作的经验。。。但就现在来看,我意识到编程良好习惯的养成很重要。
(由于笔者资历浅薄,还请多多包涵,如有错误之处,请多多指教,谢谢!)
浙公网安备 33010602011771号