BUAA_2025_OO_Unit4 总结

葛汉巍-23373321 2025-06-15 23:34:05

一、本单元作业的架构设计

类图如下:

img

二、四个单元中架构设计思维的演进

我个人认为我在 U1 时就已经可以很好地设计代码架构(手动狗头)但和大一没有学习过面向对象编程时相比,我的编程思维还是发生了不小的改变的。

在大一时我们只学习了 C 语言。C 语言是面向过程编程的语言,经常是把所有代码都写在 main 方法中,具有低内聚、高耦合的特点,这不利于大型程序的开发和维护。java 这样的面向对象编程语言则不同,它通过对问题进行层次化的抽象,把一个大问题分成几个不太相干的小问题,这样就便于我们逐个击破,同时在某一处出现 BUG 时维护代码的难度也要小很多。我认为这就是面向对象编程和面向过程编程在开发大型程序时的最显著区别,面向对象编程的效率明显更高,而且便于团队项目开发。学完 OO 系列课之后,我看到问题后的第一反应不是去思考每一步需要去做什么,而是先对问题中涉及到的概念进行一定程度的抽象,这是我在学习 OO 系列课之前所不具备的能力。

三、四个单元中测试思维的演进

在第一单元中,我的测试方式是纯手搓数据点+人工评测+瞪眼看代码。

在第二、三单元中,我的测试方式是手搓数据点+数据生成器生成数据+评测机评测+瞪眼看代码。

在第四单元中,我的测试方式是不做测试。

总体来说,我还是比较信任自己的编程能力的,所以我没有在测试上下太大功夫。但在实际项目的开发中,完善的测试可以显著降低出错的概率,增强程序的健壮性,因此对每个编程员来说,形成的良好的测试思维是必要的。在学习 OO 系列课之前,我所掌握的测试能力就是构造特殊测试样例加上瞪眼看,这对 C 语言这种面向过程编程的语言来说非常有效,但是测试的覆盖率很有限并且很费脑。java 中的单元测试可以很好地将测试目标从整个程序转移至某个类乃至某个方法上,通过保证每个单元的正确性来保证整个程序的正确性,这样的测试会更加完善且高效,是我以前所没有掌握的。

四、课程收获

时间过得还是挺快的,感觉好像第一单元才刚过去不久,结果都结课了。学习的时候并没有感觉到自己身上有什么变化,但是现在再回过头来回想十二次作业的历程,感觉还是挺令人惊叹的。在第一次作业时我光是思考架构都思考了三四天,险些没交上作业,不过后面两次作业就能慢慢能上手,写出不错的程序了。第二单元的电梯作业,可能是四个单元中最让人头大的一个单元,当时的轮询、死锁直接给我大脑干报废了,并且好像也没有什么太好的 debug 方法,只能根据输入数据和输出结果一点点找哪里可能出错。不过度过了从顺序编程到并发编程思维的转变期之后,好像所有事情都变得没有那么困难了,我也可以利用自己学到的并发编程知识手写高效高并发评测机,这是我以前不可能掌握甚至从来没有听说过的东西。

到了第三单元和第四单元,一切就简单了许多。不过我想如果让上学期的我去写这两个单元的作业,应该也会苦不堪言。看来,在一次次作业的磨砺之下,我的编程思维还是得到了锻炼和成长的吧。

五、浅谈 AI

在我学习 OO 这门课的过程中,我始终离不开 AI 。如果没有 AI ,我是不可能理解并发编程、读写锁的;如果没有 AI ,像我这种算法小白肯定也是不会了解并查集的。它始终承担着一个老师的角色,为我解答了很多很多我不理解的知识点,但也仅此而已,它没有承担更多戏份。

对我而言,我更希望在面向对象这门课中收获到自己设计、编写代码的能力,而不是锻炼使用 AI 的能力。诚然,AI 是一个能够帮助人们进行高效开发的工具,但是我始终觉得我们不应该太过于依赖 AI 。教同学们如何借助 AI 完成任务是正确的,但是如果把任务都交给 AI 来做,我们就会丧失独立思考的能力,这应该不是我们希望看到的。

所以,也希望以后的面向对象系列课程中可以减少 AI 的戏份,只做引导、不做要求就好。

...全文
26 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

272

社区成员

发帖
与我相关
我的任务
社区描述
2025年北航面向对象设计与构造
学习 高校
社区管理员
  • Alkaid_Zhong
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧