Java课程总结
Java课程总结
0.前言
不知不觉,一个学期马上就要过去,也马上就要结课了。由于疫情原因,这学期的Java我们都是在网上学习的。相比于在线下学习,有不好的地方比如学习时候不专注,不能像在学校一样全心投入;但是我认为网上学习也是有好处的,就像老师上课讲的一些东西,我们可以立马在eclipse上自己敲代码尝试,能更好的理解、有时候在线下上课时候不好意思当场问出来,而在线上大家都能在线上大胆提出疑问等等。下面就是我对本次课程的一些收获以及一些近三次作业的小总结。
1.作业过程总结
①总结近三次作业之间的知识迭代关系+三个阶段的总结:
1) 本阶段第一次作业,由于上课老师有给大家稍微讲过这道题,因此做起来还是很容易的。而且在作业指导书上也给了源代码,需要我们在给定雨刷程序基础上,来对程序进行重构。这次作业中运用到了抽象类、接口,涉及到了类的封装性、继承性以及多态性的综合运行。
2) 从第二次作业开始,就没给我们指导书了,需要我们自己设计类来解决问题。这题我用到了老师近期有讲过的Map、List、Collections以及迭代器Iterator的使用。这题涉及到了类的封装性以及多态性的综合。
3) 第三次作业“表达式求值”也需要自己设计类图,据老师说好像是去年第一次的大作业,这题主要是老师没教过栈,需要自己去学习栈的用法,也有结合到数据结构。总的来说,学会了栈之后这题感觉不是很难。
三个阶段总结:第三阶段三次作业,可以感觉都是非常综合的了,开始让大家自己设计类,不给指导书了,需要我们自己更深入的思考,不像前几次给了指导书,明确说明、介绍了这个程序的背景,功能以及需求,同时还给我们提供了参考类图来给我们参考。第一阶段大作业大部分都是在一个main里完成,体会不到面向对象思想。第二阶段大作业和第三阶段大作业,几乎都涉及到了封装、继承和多态,但第三次大作业相比于第二次是越来越综合的,而且最大的区别是需要自己思考类的设计,通过这几次作业让我深深体会什么是面向对象编程和其中的封装,继承,多态三大特性。
②如何通过三个阶段作业逐步理解面向对象的封装性、继承性与多态性三大技术特性
从第一阶段的作业中,我们其实就初步理解到了面向对象的封装性,封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体是类,类通常对用户隐藏其实现的细节。第二阶段和第三阶段,我们每次的作业几乎都会运用到封装,继承,多态。比如第二阶段作业图形继承,图形继承与多态,图形卡片排序/分组,层层递进,还有第三阶段作业的“雨刷程序功能扩展设计”、集合collection接口、ArrayList类继承并实现了List接口,HashMap类继承并实现了Map接口等等。我也逐渐理解了:继承是发生在两个类之间,一个类继承另一个类是说这个类属于另一个类,具有另一个类的所有属性和方法,同时它还可以有另一个类不具备的方法和属性。多态是建立在继承的基础上的,一个父类对象可以产生多个不同的子类对象,根据这些子类对象的不同可以具备不同的方法,也就是说表现出了不同的形态即多态。
③学习和几次作业的过程中遇到的问题及解决方法
在学习和作业过程中,对于我们这些刚入门的初学者,难免会遇到自己不会或者说是不是很理解的东西。这时候我会首选去网络上搜索自学。网络是个好东西,现在网上资源很多,如果遇到了老师上课没讲到的,就比如第三阶段作业的栈,可以多去网上找资源,多看看别人的博客,多整理别人的经验,取长补短,这样能丰富自己的知识。还有就是可以多多向老师和同学之间虚心请教。
④平时学习Java时间以及每次作业花费的时间比例
平时除了上课听老师讲的课,课余时间我也会去搜索学习一些自己感兴趣的知识和内容。上课之前会提前去预习中国大学慕课的内容。
1)第一阶段(以下为截图)

2)第二阶段(截图)

3)第三阶段
第一次的雨刷大概用了接近2个小时就写好了,第二次的统计关键字断断续续的大概用了10个小时这样,第三次作业大概用了6个小时多解决。比例为1:5:3
⑤对编程过程的严谨性的认识及教训
类似第一次作业水文数据检验及处理这样的题,里面有很多检验数据格式的测试点,刚开始没有考虑周全,导致很多测试点没有通过。还有就是虽然平常代码出现语法错误时,eclipse会报错,我们能及时发现并且修改。但是出现逻辑错误时,往往很难发现,只有一步步通过自己debug才能知道是那部分出了问题。反之,如果不这样找,可能小到几十分钟大到几天也找不出来,这是非常致命的。还有就是一定要看清楚题目要求/需求,思考清楚在动手,可以让编程过程的思路更清晰。
2.OO设计心得
①对面向对象三大技术特性之间关系的理解
我的理解:封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体是类,类通常对用户隐藏其实现的细节。继承是发生在两个类之间,一个类继承另一个类是说这个类属于另一个类,具有另一个类的所有属性和方法,同时它还可以有另一个类不具备的方法和属性。多态是建立在继承的基础上的,一个父类对象可以产生多个不同的子类对象,根据这些子类对象的不同可以具备不同的方法,也就是说表现出了不同的形态即多态。
②OO编程思维的理解
我的理解是:面向对象编程是把问题要求的不同功能分开来解决,让它们能够各自独立地实现功能,而且在面向对象中,当某一个需求改变时通常不会导致原本其他功能发生改变。然后方法是属于每个对象的,能否实现是由每个对象说了算的。
③类设计心得
在面向对象的程序设计思想中,有个词汇很重要就自是:抽象。当然是经过分析之后的抽象,将你要解决的问题抽象成一个一个实体,也可以说是类,然后分析类与类之间的关系在设计类的时候,要做到保持数据的私有;遵循单一职责,尽量使类的功能单一化;
3.测试的理解与实践
①测试对于编码质量的重要性
有句话说的好“踩了坑,你对问题的认知才会更深刻”。现在我会就题目来测试一些极端值,常规值和特殊值还有不同格式之类的,来看是否得出预期(正确)的答案。经过三个阶段九次大作业,我深深感受到如果没有进行测试或者说测试的不全面,就会有很多错误不知道在哪里,到pta提交时也会报出来很多错误,就比如 “水文数据检验及处理”,你需要测试到年月日时间、开度等等一系列数据,“统计Java程序中关键词的出现次数”和“一元多项式求导“你需要测试一些式子符不符合格式等等,通过测试可以更好的检查代码是否完整,知道哪里有不足或者没有考虑到的地方,能很大的提升自己的编码质量!
4.课程收获
刚开始学习Java时候,阻挡我的第一座大山就是配环境,当时配个Java的环境就难倒了我,后面还是跟着视频一步步搞,弄了很久才弄好。由于上学期我们学习了C语言,这学期学Java的语法的时候就轻松了很多,除了个别的变化,比如for循环对了一种for-each循环,多了boolean型的数据等等,绝大部分都是和C语言语法差不多的。在这学期的学习中的学习中,我能够综合运用Java的基础知识,把一些东西联系在一起。通过这几次作业也加深了我对正则表达式的运用、泛型的运用、抽象类以及接口的使用、不同类型的集合(Collection,Iterator,Map,List,Stack等等)、还有深深感受到了Java中的封装、继承、多态这三大特性。现在每次写代码也都会用面向对象思想来思考问题而非面向过程,写题前也都会认真思考。现在网上资源很多,如果遇到了老师上课没讲到的,就比如第三阶段作业的栈,可以多去网上找资源,多看看别人的博客,多整理别人的经验,这样能丰富自己的知识,从而才能学好这门课。也懂得了要把代码写的规范,需要的时候一定要做适当的注释,不然过一段时间想复用这个代码或者想重新看这个代码时候等于又要重头开始看还有就是做任何题时候无论简单还是困难都要细心,不能马虎,每次写完要多检查以此来提高编码质量。
5.对课程的建议
①课程内容讲解方面的建议
我感觉老师每次讲课讲的都挺细的,也很容易听懂。我希望在每次课上留一些时间给同学提问,前一堂课的课后作业问题,以及在做作业时候不懂的地方。还有就是每节课的课后作业希望能留更多的时间,来更好的思考。

浙公网安备 33010602011771号