19201619-唐轩Java第三阶段总结性博客
前言
本次Java作业总共十一次,结构和难度上都是循序渐进的适当增加了难度,前几次的作业还只是在c语言的基础上与Java的转换,难度系数不是很大,也比较好理解。到了作业中期的时候引入了类的继承和多态、接口等方法,使得结构变得复杂了起来。到了后期的Java作业主要是面向过程和面向对象等,更多的是一个工程类作业,对于学生的基础知识还是很有很大的考察,并且在此基础上更多的考察的是学生的综合解决问题的能力,善于把复杂的问题转化为平时学过的知识。
一、作业过程总结
1、第九次作业考察的是对一个雨刷程序进行拓展,使得它可以满足不同的系统,从而实现不同的功能。过程实现主要是通过设计类与类之间的关系和类的封装性、继承性以及多态性的综合使用,在拓展的时候可以通过接口和抽象类的使用来完成。第十次作业同样也是一道复杂问题,需要实现一个可以通过输入一串源码从而识别出Java中的53个关键字,这道题更多的是考察学生对于文件上的操作,利用ArrayList和HashMap等工具类来解决问题。第十一次作业则是表达式的求值,这道题目涉及的知识面很广,不仅需要考察学生对于栈之间的操作,明白元素的入栈和弹栈,还要熟练掌握字符串之间的一些操作。在解决判断输入是否合法时,在很大的程度上是考察学生对于正则表达式的熟练掌握情况,几乎所有判断输入合法都需要通过正则表达式来解决。除此之外,还需要涉及到泛型等知识,对于学生的综合能力有着一个很大的考量。
2、在练习这三次作业的时候,随着作业的深入,我们也逐渐的感觉到了作业的难度和对于我们的挑战,从最开始的时候去完成一些简单的输入输出,到之后可以利用Java去执行一些操作,到后面流的输入,涉及到了文件的层次,到现在成为了一个功能很完善的程序。在第九次作业中主要是考察对于程序的重构,主要是类的一些特性,例如利用多态性去解决问题。而在第十次作业对关键字的统计之中则更多的是考察对于一些工具类的使用,去利用List来储存数据,利用集合set和map等来实现键值对排序等方法。使得在输出的时候可以按照要求升序排列。第十一次的表达式求值则更多的是侧重于正则表达式,学会利用正则表达式的特性来判断输入的数据是否是自己想要的。这三次作业并没有什么串联关系,而是分开考察一些重要的知识点。
3、在练习的时候主要难度在于正则表达式的掌握和一些接口的使用方面,对于正则表达式而言,只能自己慢慢去理解编写,或者上网查找一些常用的表达式进行修改。在接口方面因为常常不理解泛型的含义,导致一些问题很难去解决,只能通过上网查找类似的资料去一遍遍的反复理解琢磨。
4、随着题目难度的增大,所花费的时间也是随之增加,即使题量减少了,但是还是很难去完成所有题目,这三次的作业都几乎需要花上一两天的时间去研究题目所需要的一些知识点,然后才能够逐渐着手去完成作业,总体完成时间几乎都与截至时间相差无几,甚至在很多时候无法通过所有测试点。
5、在编程的时候很考察对于整道题目的整体认知,需要完整的去架构,而不是想到什么就写什么。在下手做题目之间,需要好好去研读任务书或者附件,完全理解题目的要求,想到应该用到哪些知识,先把需要用到的知识点弄懂之后再来动手去做题目。例如雨刷程序功能扩展设计题目中含有指导书,里面举了很多例子也详细的介绍了需要的雨刷系统,我们就应该根据指导书去实现它描述的主要功能。
二、设计心得
1、学习Java一个学期了,从最开始学习一些简单的输入输出,到后面学习类的时候了解到了一些Java中的新特性,例如Lambda表达式等,对于一些问题的解决方法变得更加丰富了起来,在逐渐学习的过程中,我们了解到了Java的三大特性:封装性、继承性、多态性,了解到了类的多样复杂化,对于解决问题的思路也变得开阔了起来。
2、在设计类的时候,我们需要去考虑是使用外部类还是内部类或者匿名类,去了解不同属性的类和构造方法、属性之间有什么区别,去掌握public、final、private等之间的区别和相似点,去理解子类继承和接口之间的区别,明确什么时候使用抽象类,掌握Lambda表达式对于代码的简化。
3、在编程的时候,不能只考虑实现当前的功能,而是更多的考虑到在实现功能的同时使得代码能够适应不同环境,在面对以后的更多需求的时候能够便于修改。尽量使得类与类之间能够相互独立,使得在修改功能的时候只修改一些代码,多多使用接口,让代码具有很强的复用性。
三、测试的理解与实践
1、在写代码的时候经常会遇到很多报错,从而导致代码无法运行,在深入学习之后,可以通过一些异常处理来解决程序执行期间出现的一些错误,从而更好地去解决问题。
2、在编写过程中,可以通过eclipse的一些自带的报错功能来进行调试,通过调试来解决问题。
四、课程收获
1、在练习的过程中,越来越发现自己能力的不足,在面对复杂问题时需要用到的很多个方面的知识点不能去将它们串联起来,但是通过实验和作业的不断练习之中,原本不会的一些知识点也逐渐了解并掌握了,原本上课时一些没听懂的概念在自己课后的练习中也更加深刻了。
2、能够更好的理解类与类之间的关系,了解到了正则表达式对于判断输入合法的强大之处,了解到了lambda表达式对于代码的简化,了解到了通过键值对来精确匹配自己想要的内容,认识到了代码也是可以直接对文件进行操作的。
五、对课程的建议
还是希望老师可以在每次作业或者实验之后能够讲解一些,或者把题目源码发出来,让学生们有哪些不懂的地方可以自己私下去研究。在上课时多多增加一些老师与学生之间的互动,留一些时间在课堂上让学生训练刚学习到的知识点,也方便老师了解到学生在哪些方面上还有疑惑。