前言
本文章针对本学期对java面向对象课程表达一下感想
本学期的java从课程一直是在网上授课的,其实我觉得这样对于自觉的同学也挺好的,毕竟老师的屏幕,代码看的十分清楚还能观看回放,相比于线下还是好处更多的。其次,java课程在课后投入的时间还是算很多的,从一开始大作业的面向过程到后面面向对象的转变,每一次大作业体现出来的差别都非常好,衔接的也很棒,本人自我感觉通过这几次大作业对java面向对象理解得还算不错。下面说一说对于课程三大阶段的感想吧,主要以课堂以及大作业为主展开。
对于第一阶段的大作业,前两次基本上是对于C语言的一个复习以及面向过程的展示,这对于后面面向对象的转变有着鲜明的对比,难度不大,也能够通过这个初步接触java基本语法以及ecplise。后面日期的作业就有着很好的衔接性了,起初是以C语言的面向过程的思想来解题的,第三次大作业则是变化形式,基本要求没有变,但是给了不同的类图,根据类图去构造框架,java面向过程逐渐浮出水面,第一次大作业这种从面向过程到面向对象的过渡就体现出来了。
对于第二阶段大作业,虽说主要是考察面向对象的三大特性:封装性、继承性和多态性,但是其中对于其他方面的考察对于初次接触java没多久的我有些无从下手,基本上这阶段每次大作业都有一题有些难度,耗时最长,代码量做多的,比如水文数据校验以及一元二次方程求导,在作业出来当天完成了那些简单题,但是之后却花费近一个星期的时间来写这水文数据检验和一元二次方程求导,其考察主要知识点还是正则表达式以及面向对象的三大特性,但是其中间包含了许多课堂上未接触到的知识点,一些个操作一点都不知道,百度的还是比较懵懂,比如水文数据校验的LocaldateTime日期的操作,关于其数据类型的转换一直不知道如何处理,询问同学许久才问出个名堂,还有就是正则表达式校验数据的部分初次接触比较费时;其次一元二次方程求导的,对于其题目给出的类图一开始按照类图来写,后面写到中间对问题有了深入思考之后,发现常数项的类可以省略,因为求导对于常数项直接抛弃就可以了,还有就是根据正则表达式拆分方程式的方式不清楚,问了同学菜学习到新的知识点,这些在课堂上都是没有学习过的,所以说这门课程课后还是得花很多时间去完善巩固;还有就是图形卡片分类,加深了对于封装,多态,封闭三大特性的理解 ,其中的排序是用的接口来完成的,算是铺垫一后面的知识点吧。
对于最后一次的大作业,可能经过了之前大作业某些个难题的洗礼,过程实现显得比较简单一些了,写起来不是很难,但是没有之前的类图参考,自己设计的框架类图显得不是很好,三大特性没有很好的一个体现,雨刷系统因为在课堂上讲过所以理解起来也是十分的简单,类的设计相比于题目给出的代码的也没有变多少,就是在之前现有的类基础上外加其他相似的类再多加几个功能上去,这里对于面向对象的多态性还是没有很清晰的理解,可能在这里体现的不是很好,作用没有很好的一个体现,对于关键字提取的还是就设计了两个类,没有很好的遵守单一职责,一个类几乎把所有的功能都往里面塞,拆分关键字统计关键字,输入的数据的正确性判断都在一个类里实现了,后面思考一番还是在自己的ecplise里面做了一些结构的调整,遵守单一职责,即保证每个类的方法代码量简短,职责单一;最后一题呢,就是关于表达式运算的,因为题目省去了很多限制,所以写起来也不是很困难,类的设计也不用多复杂,还是考察了正则表达式以及对字符串的操作,还有就是复习了对上个学期数据结构i的栈的应用,老师发的PPT关于此方面的解决问题是后缀表达式的处理方式,和我之前数据结构所学到的方法不一样,我的操作是运算符和数字分别入栈,一边入栈一边按照优先级出栈计算再入栈,最后剩下的再出栈依次计算,最后数字栈栈顶就是结果。
对于大作业过程中花费时间大多都是在修改Bug上面,样例基本能过但就是满分不了,编程过程中难免会出现一些小Bug,这时候面向对象的优点就体现出来了,每一部分方法都可以逐一测试,比较好找出问题,修改也不必大动干戈,所以说测试用例十分重要,不仅仅要普通样例,更需要让程序更易出错的点,这样对找Bug也有很大的引导作用,大概知道哪儿错了。
对于课堂上的效果我觉得还是挺ok的,每次老师讲的还是挺详细的,每节课的内容也不多不少,每次课后的作业也可以加深当天对课堂知识点的理解,很多知识点呢也在大作业当中体现出来,这样课堂与课后的作业相互呼应,也比较好完成。
通过本学期的java面向对象课程的学习,对于面向对象和面向过程有了一个明显的界限与对比,对比于之前所学的C语言,java面向对象的许多原则与特性虽说限制了编程的“自由性”,但是增强了编程的规范性,可读性,科学性,将复杂问题简单化,区域化,正如老师之前所讲的:java相对于C语言,牺牲了灵活性来换取安全性可靠性,java当中没有了指针就是其体现。这对于程序的测试,拓展,可读,传播与修改都有着非常积极的作用。C语言,数据结构,java是大学以来学过的三大编程课程,但是Java的面向对象是学的最舒服的一个,过程一般不难,因为面向对象的特性已经将问题和过程分块进行,各司其职,固然每一部分功能实现起来都不是很难,相对于C语言的面向过程要一下构造好整个实现的方案来分许许多多的子函数来实现调用,面向对象就显得十分地简洁,可视以及工整。
我相信有了面向对象的思想,这对以后的编程无论是哪门语言,都有着十分深远而又积极的影响,往后也能多多以面向对象思想解决许多其他方面的问题,同时也能加深对其的理解,无论是对于编程问题还是其他方面都是受益匪浅的。