java学习的第一阶段总结
前言:在大一学习了C语言之后,基本掌握了一门面向过程的程序设计语言,本学期所学习的java是一门面向对象的语言,在问题的解决方面不像C一样是以过程来思考问题,而是要以面向对象的思维来解决问题。此篇文章是对于本学期前三次Java作业的一个阶段性总结,第一次作业花费了最多的时间,有一个测试点没有过,第二次花费了大概3.5小时,第三次大概花费了8小时,作业难度不大,只是需要自主学习的知识还有很多。
1.作业过程总结:
三次作业逐步将面向对象思维体现:
第一次的作业没看出老师所讲的啥叫面向对象思维,也不知道这种思维写作业和C语言有什么不一样。于是乎,第一次的作业我是在思考面向对象的基础上写出来的代码,但是写完之后总看不出啥为面向对象,啥为面向过程。脑海里只浮现老师所讲的:创建个对象、使用该对象的某个方法......稀里糊涂的,过程和对象好像没啥区别,也就那样用,随后就写完代码提交得了。
第二次作业来了,提出了更多要求,不再像第一次那样没有限制地写代码,而是点名要创建固定地方法名称。在第一次作业思索了这么久地面向对象地基础上,再加上老师已经给了提示(要求写出对应地方法),写起第二次作业来还算是比较上手,分分钟我就写好了一个题(代码写的比较慢,但思路还算是清晰),开始有点理解了啥是面向对象。
在第三次作业来之前,老师给教过了UML类图,因此第三次作业果不其然地出现了。前两道题是按照以前套路出题,后两道题虽然给出了UML图,但和第二题功能一模一样。在经过前两次作业的训练之后,更加理解了面向对象是一个什么样的情况,因此,主要是运用用面向对象的思维来写的,对于创建对象,对对象的一些操作也更加熟练些。
三次作业就这样由浅到深逐步更加理解Java是一个怎样的面向对象。
三次作业的时间比例大概是30:7:16
原因:第一次作业写完之后还有一个测试点总是过不了,看过同学代码之后也没有发现有什么不对,最后还是没有解决。第二次作业比较简单,思路清晰。第三次也不难,只是有个测试点比较麻烦就是:下n天:整型数最大值测试。算法忘记了int的最大值(计算过程会越界)这种情况,最后还是在同学的提醒下明白了。写代码的不严谨直接导致了写代码的时间长的问题,今后得多加思考、训练,做到严谨,减少问题的出现。
2.OO设计心得:
面向过程(C语言)是一门注重怎么写、怎么算的语言,而java作为面向对象的语言,强调对象操作,即不管中间的算法是怎么实现的,而是直接使用对象的方法即行,进而,也会让Java代码更加通用(在写其他一个程序的时候可以使用之前写过的方法、类)。另外,Java还有很多已经有的一些基本方法,例如比较两个数大小、类型转化、字符的匹配等等,这些是C并不具有的。这也许就是Java比C更方便、通用的原因。
例如:Java可以通过对象来对程序简化算法,就像DateUtil date = new DateUtil(year, month, day);这里创建了一个date对象,随后,可以使用该对象的一些操作,date.getMonth()、date.getDay()等一些浅显易懂的操作,让程序可读性更高、容易理解,但是C语言没有像Java这样的对象概念,因此不会有这样简便易懂的操作。
3.测试的理解与实践:
测试对于一个编程来讲是至关重要的,测试是尽可能考虑所有情况让代码运行。因此,代码的好坏与否,通过测试可以直接体现出来。经过三次作业,发现了老师的测试用力的不严谨问题,在第三次作业的后三题,题目所给的测试用例过不了,居然可以过提交后老师的测试点;另一个问题就是,在下n天功能上,n很大时候,不同的代码跑出来相差一天,放上去提交居然也正确。可能是测试点不够具有代表性所导致。在我看来,测试点的选用应当按照正常值、边界值(极端)两个方面考虑,还有就是需要考虑不同种算法的边界(极端)情况、分支情况,尽可能的覆盖全面,方可算是质量质量高的测试点,通过得代码也是质量高(不考虑可读性等其他因素)的。
4.课程收获:
初学习Java后,初次理解了Java作为面向对象得灵活性。也确实是,java写起程序来对思路更加清晰明了,不像C语言那样要全局把握,各个操作都是一体的,移植性差些。经过此三次作业,了解到了java的一些固有操作(例如如何new一个对象、如何调用另一个类、如何转字符串为数字、转数字为字符串等等)、一些算法的写法UML类图、和Java面向对象的思维。
5.对课程的建议:
希望老师多出些代表性题目来训练我们,同时也希望老师可以多讲解些实例,多讲些技巧、实际应用。