面向对象总结
前言:
在本学期的Blog作业中,我学会了对自己的作业进行整体的总结和分析,整体难度不大,就是工作量大了点;PTA作业让我对课程的知识更加掌握,让我的代码编写速度更加快捷;实验作业让我在面对生活实际问题上有更好的解决能力,为以后的工作埋下伏笔;线上课程让我理解java与其他语言的区别,以及促进我的编码理解由面向过程到面向对象的转变,以及翻转课堂让学生到讲课人的转变锻炼了我在多人面前讲授知识的能力,还让我学会了事钱做好准备;线下课程让我理解面向对象的编码原则和基础知识,这在本学期学习中立下了汗马功劳。总之,本学期课程学习整体难度不大,世上无难事,只怕有心人。
面向对象技术总结:
封装:在封装上,我在一开始并不理解为什么要用封装,而且在每次作业中老师都会把封装的题目要求写出来,在写的时候老是觉的要多写很麻烦。直到后面,上课是时老师进行讲解才知道类中的属性在没被封装时是直接可以被引用的,但是后续有很多时候属性需要被开动,所以就要使用private,然后使用setter来在类的外面将属性的数值进行改动。不仅如此,后面还有多态我们不想让子类有父类的某个属性也可以使用封装。就此来看,老师在前期让我们养成习惯的有一定道理的,现在不管是什么类的属性我都会下意识的封装起来,以为后面可能进行改动,为了迎合开闭原则,使用封闭可以解决所有情况。
继承:在继承上,在一开始的作业中的题目让我一度认为继承的意义就是复用,以为在实验中的电器类后面的电器和动物类后面的动物全是不假思索地写上名字再加上extends和他的父类名之后方法就不用写了,这极易给人误导(我被误导了!!!)。知道上课时讲多态,老师笑着问继承的意义是什么,我不假思索地说出了复用(对那时的我来说就是如此),结果老师很惊讶地说:“啊?继承是为了复用的吗?同学们都这样想的吗?继承是为了多态啊。虽然他的确可以复用。”至此我才接触到他最核心的用法。
多态:在多态上,我们学习了抽象类,老师教我们用抽象类来写动物的父类比如动物有叫的方法,但是老鼠,猫和狗是不同的这就需要重构,重构老鼠,猫和狗叫的方法,老鼠是吱吱,猫是喵喵,狗是汪汪。还有抽象方法不用有实际的代码,直接在子类中重构就行了,大体上应用很广很好用。
接口:在接口上,可以进行引入和直接进行排序,和一些方法的设置。在这门上我在做题中没有过多的应用,在航空大作业上也是简单的使用了一下本来想玩点花活想学老师在示范样例一样使用switch但接口和他一起使用除了很多差错,让我很头疼,后面还是直接用if-else来解决。个人觉得他和累差不多,至少是使用时差不多,就是创建的时候不一样。
集合框架:在集合框架上,他可以面对多种排序方式进行直接排序,大大的减少我们的代码数量,而且使用集合框架可以提升代码的健壮性,在未来工作中可能会有大量应用,有待深度研究。
异常:对于异常,他属于类继承体系,主要用于解决潜在的异常问题,有点像if-else
有异常出现的时候,如果你写的是让他找出哪里有异常那么他就会抛出,如果是有异常就走另一个路线,把异常路线给规避掉。之前代码出问题的时候问AI,AI给我搞个try{}throw{}都把我搞蒙了,知道学习异常之后才知道try和throw是干什么的。
JavaFX:这我就有话要说了,JavaFX开始配置的时候就废了很大功夫,结果学习的时候又要同学们来讲,这虽然对同学们制作PPT的能力和演讲能力有一定的提升和锻炼但是我觉的每个同学将的内容多到是他们要在短时间讲完。讲完不是问题,同学们真学到没有才是问题,我听根本跟不上同学讲的,有的同学还不听,两个星期的JavaFX翻转课堂真的觉的同学们没有学到什么,我也是没学到什么。
从接口往后都基本上掌握都大有欠缺。
踩坑心得:
在第一次大作业时,低估了作业难度没有按时开始,导致出现逻辑的些许错误使得没能通过测试点,代码可以正确输出PTA中的测试案例但是没能正确输出后续QQ群里所发测试样例,深究其原因,设置输出队列里的信息在每次到达内外部所输入的楼层后发现在通过已经通过的楼层(也就是第一次上升过的地方,第二次上升经过后会自动跳过,这也是在同一
个楼层关门后再请求开门但是没有开门的原因,比如<3,UP><3>在到达第三层后只会开关门一次)不会进行开关门,而且不会到达(比如<7,DOWN><3>在上升时应为第一次上升到
第十层已经经过了7,所以上升到第六层没有上升到第七层,而是直接到六后直接下到五)这是代码少了7楼开关门和和下到六层这三行输出使得样例没通过,但是,代码逻辑确实是
按照内外请求判断第一个而进行运行的。
3.正如第一个分析所说,编程意识较低在代码中尝试将操作全部集结到电梯类之中,这也是新手常犯的错误,虽然程序可以正常运行并对样例进行正确的作答(仅针对于PTA平台上的样例)但是没有考虑到代码的可读性和可修复性,后续代码出现的问题无法轻易地得出(即便没有再进行后续的迭代)。
4.注释问题。注释过少(加上大作业完成时间跨度大),导致代码出现逻辑错误后无法精准地找到问题所在即便知道了通过调试知晓了错误的逻辑(如第二点所说),但还是没能修正代码的逻辑,最后时刻头脑更是慌乱以至于最终放弃对代码的修正。
大作业相当于其他小练习代码比较长,这就让我们在出现错误时尤其要注意处理逻辑的区域是否出现错误,在首次大作业中
5此处代码逻辑出现错误(在rate的设置上)但是测试样例是正确的,因为测试样例使用的正好是逻辑正确的那段代码。
在答案错误上查找了三个小时,最后发现这里错误也是把我给气笑了:),在查找的过程中总是以为是输出格式的错误,而逻辑部分基本是一笔带过,结果问题还是在逻辑上;),这告诉我不能手高眼低偏执的过度关注一个地方,不管三七二十一就一股脑的往一个方向思考。
6.在第二次大作业中有一处使用switch
导致出现了非零返回,对于switch使用出现了问题,也不知道如何处理,自己认为逻辑正确,但是仍然非零返回,使用豆包帮忙后仍然不正确,最后还是回归最经典的if-else并且解决了问题
虽然尝试是好事,但返璞归真也能解决很多问题,有时候就是我们自作聪明导致越做越烂。
改进建议:
7.在第一次大作业中没有养成以上来就写抽象类的习惯,导致后面的作业花了更长时间来满足题目要求,第一次先打好地基才能让后续程序搭建变得既方便又牢固,让程序更合理,更容易。从实质上来说就是要满足程序的开闭原则,方便后续的拓展。
改进建议以及总结:
在要接触java的时候会害怕,因为是全新的未知的事物,觉得java学习起来会很困难,但是经过一学期和老师同学一起努力后觉得其实java比C语言简单太多了,当然也可能是我没接触到真正难的地方。
教师:觉得老师上课讲的生动有趣,例举春游等例子帮助同学们去理解面向对象,让我们从C语言的面向过程转变过来到面向对象,在继承多态部分讲了许多小动物的例子,而且每节课都能很好地衔接上一节课的内容,讲课顺序有条不紊,个人觉的老师方面真的好。
课程:觉得学堂在线没有太大的必要,真正想学的同学可以在四通八达的网络环境中找到想看的,适合自己的内容,线下讲的内容还是很可以的,线上内容真的没必要。
作业:作业难度适中,作业量也不大(很多人上午发作业,下午就写完了TvT),觉得大多数时间都在玩,或者做别的事情,题目可以多一点,让同学们多练练手。
实验:并不反感做实验,但是和大多数人一样,我真的想说这个实验提交系统,本来写就费劲,还要再打一遍,打字的时候不能用中文,输入就是停留1秒他就直接给你打上了,只能用英文来进行打字,建议开启复制粘贴,这是同学们诟病最多的地方。让下一代过得好点吧。
课上及课下:同上,没有什么要特别说明的了。
最后
面向对象的学习大体上比较轻松,老师教的也好,让我们有了一段较好的而学习体验。

浙公网安备 33010602011771号