272
社区成员




为了能快速地完成实现与开发,没有使用课程组所期望的正向建模,即画UML图。我是理解需求后,先在纸上大概地写需要什么类,整个作业需要完成什么行为,大概的一个流程。然后在敲代码的时候才确定会有哪些属性和方法。在迭代时也是先在纸上涂涂改改,写完代码提交保证正确后再去修改UML图。
第一次作业,我一共只有Library
,Book
和User
三个类。不同位置的书都用HashMap作为Library的属性。
第二次作业开始在想感觉只有三个类太少了,可能后面会有什么针对某个位置的书独有的操作。由于不太懂到底怎么样比较好,所以问了大模型要不要把书的位置作为单独的类拆出来,最后有了一个BookLocation
接口。
第三次作业新增的信用分系统也让我思考需不需要给它单独设一个类,但因为是“轻量级”什么词来着我忘了,内容比较少,也问了大模型,就打消了这个想法。
类图和代码是比较对应的,虽然评测结果还是有不一致的地方但我没来得及改了,大致上一致吧。
由于状态图和顺序图是根据在代码中的注释评测的,所以我的图其实少了很多细节但也通过了。状态图的Trigger和Guard都没标上,单看状态图只看得到状态的转移但不知道发生了什么。顺序图需要以orderNewBook
为开头,getOrderedBook
为结尾,我是直接写了空方法,只要能对应上就行。
我是一个不怎么会使用大模型的人,最开始的用法就是将不明白的问题直接复制粘贴给大模型,写代码时也倾向于会写的就自己写。通过课上实验才发现,原来这些提出prompt的方法还有各种各样的名字。复杂场景代表了需要篇幅更长的prompt,比起设计prompt,我通常更习惯于先自己完成大概的设计。
此单元使用就是像前面架构设计提到的,我将我的代码上传后,询问大模型如何能改进我的架构设计,还是在自己的想法基础上再让大模型协助。
研讨课上,小组里高同学分享了他有效使用大模型的经验:提示词要全面,有实例结构,善于调试代码再与大模型交互等。
第一单元感觉还是蛮考验架构设计的,但我没能完成作业,不太了解。
第二单元,由于阅读了学长姐的博客,纠结了是否要把线程与类分离。最后为了便捷性还是写在一起了。
在第三单元遵循了契约式设计,严格按照JML编写程序,一切都很顺畅,这就是按已有架构写代码的快感吗,感觉写出优秀的JML难度很大。
在第四单元,感觉有在运用分层和抽象思维,代码里有重载和重写的方法,看着数量增多的类(虽然不知道该不该)还有点开心。
在整个课程里,感觉自己没怎么遵循面向对象编程的原则,在迭代过程中会反复修改已有内容,也偶尔会有动一处又得改另一处的情况,在这方面还是不够成熟。
首先,自始至终我主要都是用干瞪眼的方法debug。
在第二单元认识到了,原来打断点作为一个相较于在各种地方输出更有效的debug方法,在多线程里反而不怎么实用。
在第三单元了解了单元测试,作为最基础的测试是非常有用的。同时也体会到了JML带来的好处,让需要测试的内容变得非常明了。
第四单元就没怎么自主地去测试代码。
这门课程虽然上得很坎坷,但在好不容易写好作业,通过评测的感觉特别好,虽然前期没跟上是真的挺遗憾的,补交也只交上了一部分,总的来说就是还有学不明白的地方。
经过一个学期:
感谢老师,课讲得很生动有趣。感谢助教,幸苦地维护网站,回答大家问题,OOlens的文章也很有用。OO真的是一门让人印象很深刻的课。