北航2025面向对象第四单元博客作业

黄子晔-23371405 2025-06-13 11:25:22

北航2025面向对象第四单元博客作业

一、前言

本次作业主要需要完成图书馆管理系统,内容简单易懂架构清晰,写起来很是容易。那么最大的不同之处就在于需要使用uml建模语言去完成代码之前的整体建模。本单元强测表现较好仅错误一个测试点,整体作业体验也较为舒适。

二、作业设计与架构

整体类图如下

 

能够看出我的整体设计基于一个接口StorageAble,因为在初始时就可以注意到实际上person、reservation等都有一些共同的行为特点,例如:可以存储书籍,可以将书籍转移至别的可以存储书籍的地方,可以添加书籍,可以查找是否存在书籍等等。因此完全应该将这些共同的行为特征抽象成一个接口,从而使整个程序一致性更强。其余特点只需要记录在相应的类的属性中即可,比较符合直觉。

就正向代码开发而言,我一开始想到了我需要设计的所有类、需要设计的这个接口逻辑、以及极少的方法:例如接口中应该存在的方法、以及每个操作对应的方法等。但是关于具体每个方法需要哪些输入变量,还是难以确定的。在此之后我直接开始写代码,非常顺利的就将整个代码撰写完毕并且几乎是一次通过。最后我回头来补全整个类图,从而满足图与代码的匹配关系。

正如课程组自己指出的那样,在本单元作业中,限于作业量有限,我很难体会到类图的优势区间。实际上我认为类图更适合设计者与实现者之间的交流,不是很适合自己和自己的交流。自己和自己交流完全可以在草稿纸上简略的整理思路,然后敏捷开发即可。类图顺序图状态图这些繁冗的逻辑图更多的还是想要让人与人之间的交流更严谨可靠。

三、大模型

课程组一直在强调大模型但是说实话,我在四单元12次代码作业中没有任何一次作业使用了大模型,所以没有体会到在完成作业上或者正向建模上大模型的便捷之处,至少我自己写起来感觉不使用大模型也能写的很舒畅没有什么明显的困难。但是我在编写测评逻辑的时候简单的使用了大模型让他帮我生成测评逻辑的架构,从而加速了对代码正确性的检查。但是至少在测评逻辑上大模型的生成准确率并不高,甚至是必然出错的,需要多次引导,最后还要自己进行一些修正,才能投入使用。但是大模型在生成输入输出接口,或者文件比较这种常见的功能时非常有效。

因此,总结下来一个正确的使用方法是:使用大模型生成输入输出接口或者整体评测的代码框架,找到评测逻辑部分进行检查和修改即可。

四、关于整个OO

大言不惭的说我的架构设计似乎没有获得提升,第一次作业我使用了接口,最后一次作业还是使用了一个接口,颇有一种闭环的感觉。实际上OO似乎不是一门很需要小巧思的课程,最重要的是阅读指导书和要求,然后用一种简单的方式照做即可。除了多线程一单元很有变数,多线程确实是很新颖的内容值得反思。

就测试逻辑而言,这似乎不是演进的关系,而是针对每个单元实现最适合该单元的评测逻辑。

第一单元直接使用python库函数,带权随机生成原始表达式后运行程序,比较即可。

第二单元比较复杂,需要使用python额外再写一个模拟系统,该模拟系统根据java的输出进行模拟,如果不违反条件则可以认为程序正确。

第三单元最为简单,写一个对排程序和同学对排即可,猜测助教的评测机可能也就是助教写一个标程然后和我们的程序对拍?

第四单元比较简单没有写评测机,讽刺的是没有写评测机的单元反而是正确率最高的。

五、尾声

课程收获不少,最关键的一条是以简为美。我们现在要做的,不再是压缩我们的时间复杂度或者空间复杂度,不再是找一个奇怪的算法优雅的实现。而应该是简单的实现、清楚的实现。最应该采用的实现,是在所有不违反要求的代码中,看起来最舒服的代码,仅此而已。

课程结束了,庆幸的是我没有任何一次熬夜debug的经历,哼哼。不过仍然感谢OO带给我的充实。

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

272

社区成员

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

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