本文共 1282 字,大约阅读时间需要 4 分钟。
面向对象编程的学习之旅
作为一个刚开始学习面向对象编程的新手,我在这个学期的OO课程中经历了无数的困难与收获。这段时间让我对面向对象的思想有了更深刻的理解,也让我在编程实践中积累了宝贵的经验。
第一个单元的作业围绕多项式求导展开。刚开始时,我还真有点懵,不太确定应该怎么分解多项式。老师教我们用多项式的次数来判断导数的次数,这对我来说还是挺有帮助的。前两次作业用了正则表达式来处理,但到了第三次,我不得不用递归来处理多项式的分解,这让我对递归有了更深的理解。虽然过程中遇到了一些困难,但最终还是完成了作业。
第二个单元的作业是关于电梯调度的,主要是多线程的运用。在前两次作业中,我用了暴力轮询的方式来调度电梯,但这种方式效率太低了。后来我改用wait和notify,这样电梯的调度方式变得更为智能。虽然多线程的编程确实需要仔细考虑线程之间的通信和同步,但我还是完成了作业。
第三个单元是关于JML规格的学习。JML的规格对我来说有点挑战,特别是如何正确应用规格来验证程序的正确性。刚开始我用了暴力遍历的方法,但这导致了效率低下和第三次作业的TLE问题。后来改用不拆点法,并运用Dijkstra算法来计算最小权值路径,这样程序的效率得到了提升。不过,面向对象的思想在这个单元的作业中还是有提升的空间,类的划分不够细,导致代码有些冗余。
第四个单元的作业则是关于UML的学习和解析。这次作业让我对UML类图、状态图和顺序图有了更深刻的理解。通过编写解析代码,我学会了如何存储UML元素,并处理继承和接口的关系。虽然过程中遇到了一些bug,比如强测中的指令计数问题和接口传递错误,但通过不断调试和理解UML的真正含义,最终解决了这些问题。
在这四个单元的学习中,我逐渐意识到测试的重要性。虽然有时候测试数据设计得不够全面,导致错误难以发现,但通过黑盒测试和单元测试,我学会了如何更有效地验证程序的正确性。尤其是在第三单元的学习中,使用JUnit进行单元测试,使我对测试的价值有了更深刻的理解。
这个学期的OO课程让我受益匪浅,不仅巩固了面向对象的思想,还提升了代码编写和问题解决的能力。不过,面向对象的学习过程中也让我明白,类的划分和设计需要更加细致,否则容易出现冗余和代码难以维护的情况。未来我会继续练习,希望能在面向对象方面有更多的进步。
理论课:我认为在理论课中可以增加一些有关于面向对象更加具体细节的知识内容,虽然说这些细节之处的知识不是从宏观上讲没有能够体现出来,但是对于我这种初学者来说影响还是挺大的。
作业:作业总体来说我觉得还是很贴合课程的进展的,只是我认为第三单元似乎与面向对象的训练有些偏离,与JML规格的学习也有些偏离,感觉变成了一个纯粹的数据结构问题。
强测和修复:其实我对于强测的错误点在进行bug修复时再扣一遍分不是非常理解(因为有时候一个错误点可能就已经导致强测严重翻车,要是再扣一遍分就让人非常痛苦了)。
转载地址:http://gasfk.baihongyu.com/