272
社区成员




本单元设计类图其实和我在一二单元的设计没有太大区别。由于用软件画类图十分耗时,我都是在平板上写写画画再第四单元就是多了用软件画图的步骤。
本次作业其实比较简单,也是 OO 在降难度。将书抽象为一个类,不同的地点也是类,以书的指针在哪个类的容器里来表示书在哪里。遇到的问题是我在闭馆的时候整理过期图书,因为书只会在闭馆的时候过期。但是由于不是每天都会闭馆,在处理的时候就遇到一些麻烦。我在开馆的时候会模拟到上一次开馆之间的每次开馆和闭馆。
所以现在我认为最好的方法就是只在开馆的时候整理图书,闭馆的时候就让可怜的打工人直接下班吧。
在更新 UML 的时候,我都是对着修改的地方在图上改。在方法中的修改都不会体现在图中。这也进一步验证了 UML 设计是方法基于接口的抽象设计,只关心方法的输入对应的输出,不关心具体的实现,这就是基于方法的抽象。
我认为大模型的性能还是在典型场景中最好,于是我在问大模型时都是以典型的场景来问的。比如第二单元就以生产者消费者来问,自己再转换为电梯和乘客。
所以在复杂场景中使用,就需要自己人工抽象出典型场景来问。
大模型还可以减少重复性劳动,比如 JML 中的简单方法都可以直接生成。
第一单元和第二单元的每次作业的架构,我都是从作业发布的当天晚上开始设计,敲定类的设计与职能。特别是第一次作业一切从零开始,还要为后面的迭代留下足够的空间。基本上都是一晚上五六个小时一行代码没写,光设计了。
第一单元应该更多的是借鉴,按照往届学长的博客,看着他的类图一点一点的搭起来。只在题目有所改动的地方加上自己的设计。一开始,更多的是措手不及。
这个单元的重点在梯度下降,只要依据学长的博客一步步解析问题就不是很大。再依据新出的数据类加上解析和化简的方法就行。
虽然这样说,但是设计代码还是耗时很久。梯度下降最核心的思想就是分派给下一级干的活要假设它已近干完了,不然递归调用根本没法写。
这一个单元自己设计的成分变多了,感觉是我成长最快的一个单元,也是我最满意的一个单元。开始搭测评机,就会更加理解题目,特别是这种情境类的题,将要求变成输出的一条条约束,框架就会明晰起来。
这个单元理解数据是数据,线程是线程是设计的关键。当理解了这个问题,线程之间的交互和数据安全问题就迎刃而解。
第一单元测试思维并不是很强,于是第二三次作业掉了点。现在想来,其实能够依据自己的化简方法来编写比如说同类项也为可化简的多项式之类的较强测试点。
在后来的单元,除了电梯这个多线程的不好把控,都可以手动构造测试点来进行多场景的覆盖,用小的点来进行特定功能的测试,就可以基本上没有 bug。
第一单元忙于写代码。第二单元搭建了测评机,使用体验还不错。第三单元在数据生成需要一些策略,不然生成的点就会很弱。第四单元本来就比较简单,又是交互式测试,还是期末,就没有搭测评机了。
无疑,这个课程让我拥有了写较大规模代码的能力,是代码量的一次巨大突破。也是心态上的锻炼,在找 bug 时的摸不着头脑和在大规模测试点找问题都是需要一颗强大的心脏。
我也因面向对象的契机面向了对象,虽然后面种种原因分开了,但是面向对象的面向对象确实是很难往的经历。