南昌航空大学-软件工程-24201911-杨亿淼第三次blog作业
一、前言
关于我在南昌航空大学软件工程java面向对象程序设计课程的作业总结。整门课的作业量比较大,包括线上课程的学习,以及线上的小测。PTA的作业虽然是一星期一留,但是作业前几次的作业难度还是比较大的,比如开始的电梯调度问题,好多同学都没做出来,我也是熬了好几天才写出来,而且也要考虑下一次迭代的难度,也不是完不成,而是对我们提出了新的要求,学要我们用更高的视角去看待这些作业,倾尽自己的所有热情,投入这些作业当中去,这样的话才能更好地高效地从这些作业中提高自己的熟练度,提高自己对java面向对象程序设计的思想。
实验的话倒是很简单的,像老师开始说的那样,难度较低,所有人都可以很好地完成,主要是实验系统太难用了,做实验花费两三个小时,写实验报告要一个小时,然后去实验系统去把实验代码从idea搬运到实验系统花费的时间要高过前面花费时间的总和。
线下课程的话,工作量倒不是都特别大,而是要求我们要在老师的带领下去感受面向对象思想在实际问题中的体现。只要上课能集中注意力,听老师的建议,掌握六大编程思想原则,并且在自己的程序中进行严格遵守。
二、面向对象技术总结
通过前面一学期的学习,我能直观感受到各个环节体现的面向对象思想的提升。
第一、便是PTA第一次的电梯调度的三次题目集。这次题目集可谓是当头一击,直接给我们来了一个下马威,题目集的难度对于我们这种茅庐还没出的菜鸟来说,简直就是噩梦般的存在,难度前所未有。
我在开始时,第一次电梯迭代时,没有注意上下人员的划分,只是用一个数组然后加上正负号来进行电梯的上下,连段老师发在群里的pdf的题目解说都没看,只是按照自己的思路进行做题。知道截止日期前一天,我才发现不对劲,这个时候才有人第一个做出来。我在班里找到他交流经验。然后才发现一开始就错了,于是我开始利用两个链表,进行调度,然后还是会有千奇百怪的错误,这个时候我就请出了if-else传奇大法器,哪里错了加哪里,在缩进了六七行后,终于搞定了题目。第二次也是如此,虽然题目变化了,但是if-else大法器仍然适用,我又按照第一次的思路进行缩进,但是这一次运气就不好了,只是过了一半的测试点。
在第三次时,我感觉这样下去并不能解决问题,于是我直接丢弃了原来的代码,再次写一个结构更加完整,更加清晰明了的代码,因为原来的代码,根本没有办法进行维护,乱糟糟的,我自己现在都没眼看,然后我进行严格的推理判断,写出了这个学期的算法巅峰代码,整个结构可以说是涵盖了电梯调度问题需求的全部情形。在第二次迭代的第一版代码,在idea里面测试时已经是无懈可击,但是在我提交时,PTA平台却提醒我,代码长度超过限制,

我当场泪崩。泪水打湿数据线,边改代码变触电。我就非常自(被)愿(迫)改起了我的代码,在又不知道过了多少面对电脑的时间,我整合了相同的场景条件,带着我的第二版代码进行提交,好巧不巧,剩一个测试点没过,我那个时候心里已经被折磨的不行了,开始了试探大法,改程序中的某个条件,然后提交,看错误信息,确定哪个环节除了问题,自己设计了20个测试用例,进行一次次的试验,看看程序到底哪里有问题,知道我熬到凌晨3点,更改了一个“!”号后,程序通过了,我当时没有做出来题目的兴奋,只有“为什么能设计出来这种题目”的沉默。
正是这次的电梯调度的题目集,让我充分认识到遵循面向对象思想在编程时的大用处,它可以为你节省很多时间和精力,来进行编写。这一次真正让我认识到了封装的重要性。

其次便是实验的大象装进冰箱,这一次让我让我认识到了继承和多态。我印象深刻的便是开始时面对多个动物的继承和多态,让我直观感受到了继承和多态在解决问题的便利,在实验中不仅要对动物进行继承,也要对电器进行继承,在进行继承之后,问题就迎刃而解了,又是解决问题的一大利器。
继承和多态在航班的迭代中我也有直观感受,像开始的人员的父类,客户发货人收货人的子类,货物的父类,危险加急普通货物的继承子类,还有支付方式的继承,这次题目就是考察对程序编写的严谨性。
在留第一次题目集时,老师就提到,第一次设计的越合理,第二次花费的力气就越小,于是在第一次编写时,就开始严格按照要求进行编写,在第二次写的时候,写起来得心应手,合理的继承可以解决好多问题。
接口的学习主要来自实验的战斗力对比,动物之间的战斗力不在作为属性进行比较,而是转为一个接口进行,用接口写一个方法返回武力值,然后进行比较,来判断谁能吃掉谁,在这次实验,才是真正的进行解除了接口的作用。
javafx的学习主要是从实验五中学到的,要做一个javafx的程序实现大象装冰箱的可视化操作。头一次接触这个,可谓是丈二和尚摸不着头脑,脑子一团浆糊,我开始翻之前同学们演讲过的案例和ppt进行紧急预习,又找了网课看了两个小时,才终于可以初步的进行做了,但是过程异常艰辛,通过我迭代了十几版的实验报告就能看出来我的崩溃,但是好在最后完成了任务,将实验完成了,同时我也掌握了javafx的初步运用。

三、踩坑心得
1、审题!审题!审题!重要的事情要说三遍,拿到一个题的时候要先分析需求,然后在进行搭建框架,有时候从一开始就错了,然后一直错下去。想到我在高中的时候,数学的第一题老是错,其实就特别简单,只要把题目看清了就可以做对,但是每一次就急着去赶时间,想把时间和精力放在最需要打磨的环节,其实,有时候审题看需求才是一个好的程序的开端。在高中的时候我的解决方法是,会给出三分钟的奢侈时间,就反复的去做第一题,可以做个四五遍,有几次联考,还就真在四五次中得到了三个不同的答案。编写程序也是如此,如果不注重审题看需求的话,还真有可能做三遍得到三个不同的错误程序。在电梯的编写时,我就注意到了这一点。所以以后要看好设计需求,然后再去构思。
2、注重实践。有时候不是你不会,而是你的熟练度没有达到。主要的体现便是在学期的其中考试中,链表的知识我掌握了,但是最后却翻车在最简单的数据输入中。在写完主要的主体部分后,在数据输入时,忽略了读取一行的字符串后要消除换行符号的问题,导致数据没有输入进去,整个程序直接报废掉了。平常也要注意这些问题,不能做到一知半解。
不仅要明白背后的逻辑道理,更要明白怎么样才能运用到实际当中,要在平常的练习中进行巩固。说白了就是不要眼高手低。比起要脑子进行想然后再付诸行动在手上,我们要把这些行为通过练习把东西从脑子里面搬运到肌肉里,有一种快叫做你没有感受到就放发生了,这种无意识行为,比如呼吸和心跳,这种在没有注意时就时刻在做的动作,编写程序也是,在别人在想怎么实现这个问题时,你就瞬间想到,然后行云流水的完善了整个过程,我们也要做到这个境界来进行练习。
3、先思考全局再进行编写程序。庚不为怨者故改其度,度义而后动,是而不见可悔故也。在《答司马谏议书》中,王安石对司马迁说出了迁都的事情,告诉了我们要谋定而后动,《孙子兵法中对此也有记录“谋定而后动,知止而有得”。
放在java面向对象程序设计中,便是要拿到问题考虑需求后,要进行合理的类设计,这一阶段也是分异常重要,类设计的合理性直接关乎到程序的完整性。在平常老师布置的任务中,往往会给出类图,我们在练习中写时不用担心类的设计的问题。但是在最后的javafxGUI的航空托运系统的设计中,你就需要进行设计,要考虑有多少种场景,有多少的按键和输入框,考虑背后要怎么设计这个界面的跳转,要添加哪些类进行完成问题。这些都是决定程序能否流畅合理运行的关键。
四、改进建议及总结
对于java课程的建议的话,我觉得现在的模式就足够可以了,每个星期都有要做的事情,对于没有笔试我是非常赞同的,笔试考验不出来水平,上机考试才能考验出水平。
关于翻转课堂,这个我是非常赞同的,可以让我们深刻了解fx的一个区块,同时又能倾听别的同学对内容的理解,又可以解放老师来进行对我们的点评,可谓是一石好多鸟。另外的实验的javafx的编写和最后的javafx航空托运系统,是真的拔高了我们对javafx的理解。
另外感谢这一学期老师们对我们手下留情,没有像之前的学长一样折磨我们,也希望老师们能够对学生们多点关心多点爱,毕竟学习不仅要有强度,更要有温度。
这一学期过去我真的学到了好多东西,我感觉老师们的存在不仅仅是为了教会我们什么,更多的是引导我们然后陪跑,陪伴着我们进行成长,谢谢段老师和其他老师在这段时间的陪伴

浙公网安备 33010602011771号