301
社区成员
发帖
与我相关
我的任务
分享在作业开始之初,对架构进行了仔细的思考与设计。希望在后期尽量减少迭代,就需要在开始前设计出足够的空间。由于uml绘制比较麻烦,我在草稿上做好代码的架构,并在每一个类中实现作业中相应的方法。类似于上一个单元中的jml,但用自己可以理解的自然语言进行描述,在完成架构之后,代码很快就完成了。代码完成之后再绘制了uml图。
本单元主要是建立一个图书管理系统,实现了借、还、续、约、取、捐献等功能。三次作业中迭代的要求都不是很复杂,不需要重构,但随着功能的增加,我也能感受到我架构本身的不合理,无法满足作为一个正常图书馆应有的功能,例如还书日期、图书捐献次数等信息存储的位置,由于懒得重构+重构可能带来新的bug,最终以一个耦合度较高的代码完成了这个单元的旅程。

其中Library管理了Circulation(借还台)、Appointment(预约处)、Donation(读书漂流处)、StudentTable(存储学生信息)、BookTable(存储在架图书信息),Book存储书籍信息,如还书日期等,OrderedBook作为Book的子类,存储预约书的信息。
在设计中对于副本信息存储的设计还是有一些不足,例如可以将一个副本设置状态,预约或借出或过期或在架等等,再存储日期、借阅人员等信息,可以减少冗余的OrderedBook类,更加贴近真实图书馆的情景。

借助状态图描述书籍的位置变化以及用顺序图描述预约图书的顺序变化。

在第一单元、第二单元和第四单元均涉及到架构设计,第三单元主要还是参考的讨论区大佬的架构。但在第一个单元时,由于能力有限加上第一次架构就比较有挑战性,正向建模并没有细化到方法的程度,由于无法考虑周全所以还是盲目的投入了代码中,一边写思路一边清晰,再进行架构完成代码;两次迭代中就通过先建模再完成代码的方法。第二单元中对于架构更加重视,但对于可扩展性的考虑不够充足,后面也遇到了很多问题。我能感受到架构设计的重要性,也有意识地进行架构设计,但总有思考不周的地方,但未来正向建模的思路还会继续应用。
在第一单元,我用自己构造的样例进行测试,忽略了运行时间的问题,在互测中被找到bug;第二单元中我使用了同学的测评机进行测试;第三单元自己搭建了测评机,使用了JUnit,对测试有了新的认识;第四个单元采用了手动构造数据的策略,以及使用同学测评机,手动构造策略在复杂情况下还是难以覆盖,一般只能满足前两次作业迭代的需求。
在本学期的课程中,对于建模和实现有了新的理解,也初次尝试了自己搭建测评机。被12次作业支配的一个学期过得很迅速,也有不少难忘的瞬间。这学年很多难忘的印象都是oo给的,面向对象以及正向建模的思想也在一年中悄悄地记住了。非常感谢助教用心的帮助和指导,以及纪老师带来的每一堂热情的oo课程。