从这几个阶段走过来,感觉自己在一点一点地进步,也进一步深入理解了面向对象设计的封装、继承与多态。OO是当前计算机界关心的重点,是建立在"对象"概念基础上的方法学。经过这段时间的学习,我发现这门语言基础要求不高,即使没什么编程基础也可以学的不错,这也可能得益于老师的授课安排。
对java课程的感想
1.作业感想
从雨刷程序功能扩展设计、统计Java程序中关键词的出现次数到表达式求值,每一个题都有新的知识。雨刷程序功能扩展设计中的管理类,统计Java程序中关键词的出现次数中的关键词查找和计数,表达式求值中的正则表达式和栈,每次题目都会有新的难点,但是当自己琢磨出一个方法实现题目要求时,自己是很有成就感的。每一个阶段自己都会获得一些成长,虽然可能也不怎么多,但是自己还是挺开心的。
2.课程感想
java是一个面向对象的语言,但是要跳出C语言这个面向过程的圈,就像是跳出思维定势,我们一直追求解决问题的方法步骤,换为以功能服务这个对象。这门课我们大多都是靠自己摸索,自己发现问题,解决问题,要求我们要更加利用网上资源。刚开始这门课程的时候,我在有main函数同一个class里面写函数,总是报错,我就想搞清楚报错的原因,就百度找问题答案,发现如果要在有main函数同一个class里面写函数就要加static。在学习期间,同时也因为有问题的出现,我也收获颇多。
在后面的学习了解中,发现java有很多工具,像List、Map等,到现在的栈,和去年学习的数据结构知识接轨。list中添加,获取,删除元素;Map中的集合,元素是成对存在的(理解为夫妻),每个元素由键与值两部分组成,通过键可以找对所对应的值。学习栈的Stack的基本使用,懂得运用stack.peek()、stack.push(Object)、stack.pop()。经过这些锻炼学习,慢慢地自己也找到了写面向对象编程语言的感觉。实验出现这些知识的运用,也巩固了自己的知识。
在第一阶段作业时,我可能还不是很熟悉面向对象的原则和架构,会苦恼day类、month类、year类、DateUtil类之间的关系,会在草稿纸上顺着自己写的代码一步一步地计算日期,找前n天和后n天之间的异同点。到第二阶段作业时,做的图形题用到了继承,继承可以解决代码复用,Circle类、Triangle类、Rectangle类、Trapezoid类存在相同的属性(变量)和方法,从这些类中抽象出父类shape,在父类中定义这些相同的属性和方法,所有的子类不需要重新定义这些属性和方法,只需要通过继承父类中的属性和方法,还有让人头疼的水文处理,我在格式的正则上花了挺多时间的,刚开始看到水文数据校验及处理,我看到那个表格分割还是无从下手的,后来也是尝试了想了二维、一维进行各小部分的拆分,想思路否决思路的过程一直在循环,还有一元多项式求导考虑到多项式中的带了整数项,分割后系数怎么区分正负,然后进行运算,其实运算部分倒没什么,就是数据分割真的是懵了挺久的,也是跟同学请教讨论了思路,后面也开始注意自己代码的长度,开始有意识的简化代码。在第三阶段作业时,没有指导书,没有UML类图,开始自己设计类的结构,到后面即使题目变得越来越难了,自己也会慢慢摸索完成,不懂再请教一下别人。
在课堂作业方面,相当于当堂课知识当堂消化,其实很大程度上促使学生跟着老师一起动手编写代码,我觉得这样学完理论然后动手实践会让知识点在脑子里更加牢固,当然也是基于我们在上网课的原因才有机会一起动手编写程序,看着老师边敲代码边介绍新的知识,感觉利于接受和学习。
在实验方面,也是夯实我们的基础,一些我们可能平时不会出现注意的错误,实验报告上的题目让我们思考并回答,然后修改代码中的错误,让我们在修改解决问题中理解面向对象的原则。
3.对java课程的建议
我觉得这次上网课也给了我们上课的新体验,也做了新的革新和变动,我觉得相较于对着课本讲解理论知识,在电脑上通过敲代码讲解知识点会更利于学习和理解,取消期末考试,通过PTA上的作业和平时表现评成绩我觉得也是可取的。