Skip to main content
Coder’s Blog Coder's Blog

一门绝世好课

·3141 字
OO

⚠️ 本文仅针对面向对象设计与构造该课程,不针对任何个人、组织或其他实体。⚠️

吾与该课程第14次作业鏖战多日,某夜子时终发起决战。末了,精疲力竭、魂飞魄散,然日已出东方。整顿安寝之隙,吾简阅pyq,即闻此文,品罢有如醍醐灌顶,久久意难平。

现转予诸君,共勉。


《oo学习的一些感想》 #

原文链接(微信公众号 - 风露阁)——王德

转眼间这学期快要结束了,oo这门课也到了尾声,胜利的曙光已经出现在了地平线上。

这个比喻很准确,因为地平线就是一条可望而不可即的线,就像镜花水月,看得见,摸不着。眼看着快要到了,这周又出来了hw14这种怪东西,让人实在是摸不着头脑。我感觉我的半年的oo生活很像是黄土地上开着的一辆四轮车,坐上去吱呀作响,但勉强还能走,车声辚辚,在一片茫茫的土地上中拖着两团黄雾,吭哧吭哧走到终点——但是眼看着终点就在前面时,车的前轮突然掉了。

记得开学时一位学长告诉我说,oo课程总是爱搞什么花活,在此我也算是深有体会。

多项式单元连进3个A房,电梯单元连进3个C房,经历过这种大起大落之后,我本来以为我心态已经无懈可击了,没想到oo又搞出了这样一个新的花活,是我从来没见过的。它总是能让人喜出望外,然后悲从中来。

还记得在电梯1单元开始时,助教贴心地告诉我们:

大家早点休息吧。相信大家已经能看出来,u3开始更加重视大家对jml的了解和认识,并在算法层面上会有所减弱,希望大家不要卷错方向~

经过了多项式和电梯的双重折磨,助教的嘱咐总算是让我长舒一口气。算法层面有所减弱,这确实是一件好事,这令我喜出望外——直到周六我赶着做oo作业时,才发现似乎完全不是这么回事——JML单元除了一些花里胡哨的鬼画符之外,还要设计一些听都没听过的算法,简直就是平地起高楼。尤其是后来大名鼎鼎的qlm函数,更是让人无语凝噎。

不管怎么样,助教的话也确实让我高兴了两天,在这两天里我想着JML不过是对着题目照猫画虎的玩意,小学生都会做。实话实说,hw9的确不算难,难的是后面的神乎其技的算法,难的是规避60行方法和500行类的限制,难的是写出20多个点的OKTest而保证头脑不晕,顺便在面对checkstyle的各种报错中压抑自己的强迫症。JML在为难程序员这方面确实收效显著——后来每当写完一个函数我都长舒一口气,坐在图书馆,旁边的人总是时不时地朝我瞅一眼,像是认定了我精神上有点问题。

JML单元有一个好,他帮助我解决了很多麻烦。只是这些麻烦大多是JML单元自己硬生生搞出来的。简而言之,做多项式计算时,感觉没有课程组就没思路,希望课程组多掺和;做JML时,感觉没有课程组就没麻烦,倒希望课程组别掺和。JML像是在英汉对译的时候,先将中文翻译为法语,再把法语翻译成英文。我中文还好点,英文水平一般,法语则是完全不会。纵使说法语严谨到天花乱坠,对我来讲与鬼画符真没啥区别。谈及JML的优点,我确实无话可说,能与JML相遇是我的缘分,不过我希望这样的缘分越少越好。

至于后面的UML,我总有一种偏见——感觉抱着starUML劳神费力画各种类,连数不完的线,画乱糟糟的图,纯属吃饱了太撑没事干——就好像我辛辛苦苦做了一把自行车,出门之前还得先请个大师过来开光,然后才能拿出来骑。也许我学得更深一点之后,这种偏见可能会有所改观吧。至少现在让我画这样一个纷乱的图,感觉就像被强着吃了颗炸弹一样。

后来想着这个比喻不是很恰当,根据oo的要求,应该是先开光后造车。

助教让我们好好休息,我感到非常的感动也非常的感谢,虽然我明白这基本上是一个不太贴合实际的幻想,就像以前某平台中有人提的一个诉求,建议x运村安装免费的饮水机,我非常感谢他提出这样的诉求,果断地给他点了赞。虽然我明白这种诉求实现的可能性不大,简直天方夜谭。

我曾经做过一场绮丽的梦,梦里我住在xx村,眼前就是崭新的饮水机,不用扫码付款就能淌水,可以淌凉水也可以淌热水,真好……可惜这只是一场梦。

如果我哪天能顶着oo好好休息,那么这一定也是一场绮丽的梦。

当然,助教这般关心同学的身体健康,确实难得。绝不是说这位助教哪里不好,完全没有这个意思。我非常感谢他。只是对我来讲,第三单元在算法层面的要求可能是有所降低吧,但依旧不算低。

学长说,多项式处理和电梯单元是oo最难的两个单元,过了之后,oo基本上就没啥难度了。但在我看来,JML不讲人话,UML不知所云,对我来说实在是难于上青天。不过oo很离谱倒是肯定的,oo的离谱就连我在仪光的同学也略有耳闻。他曾经直截了当地问过我,我择其重点略讲了讲,讲一些JML单元的奇闻异事,讲完之后,他一言不发,只是笑嘻嘻地看着我,对我说的话将信将疑,仿佛我是在和他开玩笑。

当然,这个“不讲人话”(这里指的是JML代码)和“不知所云”,完全是我个人的感觉,真正的强者是不在乎这些似是而非的题目表述的,而我却不行。此外,我感觉助教能够不辞辛劳,在短短一个月当中写出这么多的JML,确实是非常令人敬佩。我也是在这时才明白oo助教是需要一定抗压能力的,心理素质一定要好,至少得经得住同学的轮番抱怨。我虽然成绩不是太好看,但抗压能力自觉还可以。从这个角度上来讲,我觉得我还是能胜任的。

看不懂hw14这种怪胎的,或许不止我一个。我倒是了解过一位同学的心路历程,他在做hw14时,总是抱着一种能看懂指导书的幻想,直勾勾地盯着屏幕研究指导书,盯了十分钟,到底还是看不出个什么所以然来,只能切换到idea先写会代码,写了一会之后又不知道该写啥,又去继续切指导书,依然看不懂,再回去写代码……他对题目的了解就是在代码和指导书中间反复横跳,螺旋上升,这样一来一回多了之后,如果他运气够好,兴许他还能真的恰好满足了hw14的要求,恰巧猜对了指导书的微言大义。

而我比较简单。我周六之前压根没碰过oo。无非就是乍看一眼指导书,发现也就那么长短,应该也不难,算是放了心。直到周六我认真看的时候,总觉得指导书在给我开一个玩笑——指导书写的倒像是os学的文件管理中的“链式结构”,看的时候要来来回回跳着看。但其实跳着看也未必能看懂,跳多了,脑子就突然一片空白,什么都没有了,就像短路的灯泡。每当这时,我都是迷迷瞪瞪望着电脑若有所思,大脑完全不会转了,只觉得在盯着一个个方块字组成的奇异图形,却不知道这个图形是在表达什么。

在一片空白中,我脑子里只剩下一句话:

考虑到同学们最近考期时间安排,我们特意下调了第十四次作业难度,并且和第十五次作业做了均衡。

这句话只存在于我的印象里,完全不记得是在哪里看到的了。只记得第一次看到这句话时,我暗地里感到十分庆幸,而现在看时,只觉得已经对未到的hw15望而生畏,hw15到底会有多难呢?我不知道,我说不准。

当然,我前几天还被oo小小触动了一下。上周我还在做hw13,在画uml图上完全找不着思路,也就是勉勉强强地画。周六中午第一次提交的时候,惊讶于中测uml图全对了,惊讶之余,我总算是松了一口气,感叹运气不错。一直到了周日下午,我才在水群中看到了中测即使测出来错误也有可能判对的消息。我当时全没当真,只是感叹群友想象力丰富,怎么能想出这样离谱的事,直到后来我确认了一下,似乎事实确实如此。只是我当时在外边玩,来不及回来了,只能目送着自己的uml图寄掉。

这也让我长了记性。当ACCEPT之后,依然要记得留一个心眼,把详细界面打开来看看。不过我还是建议评测时多加一个选项“ACCEPTED BUT NOT ENTIRELY ACCEPTED”——“对了,但没完全对”,这样做就没有任何歧义了。

可惜oo课快要结束了。

“oo是一门好课”

一名不愿透露姓名的VR同学如是说道。

晚安。


  1. 转载者注:此处系作者笔误,应为“JML单元” ↩︎