正向建模与开发
本单元中,我通过阅读指导书后,首先尝试画状态图、顺序图、架构图等方式,试图初步构建一个图书馆模型,然而由于对指导书内容理解不完全,每次画图都难以顺利进行。之后,我尝试先编写代码再边写代码边架构,却在写代码时遇到了更大的困难。直到完全放下代码和架构,完全阅读并理解指导书内容后,才能从架构到代码有一个比较完整的认知,并相对顺利地继续进行。
本单元作业的架构设计
代码采用单例模式,main函数中对library进行初始化,之后根据输入的命令,调用library中相应的方法进行处理。library里设有circulation,reservation,shelf等属性,表示图书馆的不同设施,以及图书会存在的位置。user通过和library交互,完成图书借阅,同时书籍状态发生改变。
四个单元中架构设计思维的演进
第一单元
本单元主要是编写一个多项式计算器,当时并没有很强的架构思维,偏向于先写某些会写的功能代码,再将代码拼接起来。
第二单元
第二单元的多线程模式可以参考实验代码的架构,根据指导书要求,在架构内做功能填空。
第三、四单元
第三单元架构思考不多,第四单元让我意识到自底向上的编码方式不利于编写系统结构性较强的大型代码,在这个单元的代码编写实践中我明白了先架构再编码的重要性,同时也初步学习了这样的编码方式。
四个单元中测试思维的演进
第一单元
第一单元的测试,主要是通过阅读指导书对数据的限制,手动编写一些极端数据,对代码进行特殊数据的测试。样例的覆盖性不强,数量也不够多。
第二单元
本单元主要是针对多线程程序的调试,我主要针对一些电梯调度的特殊情景进行测试,并用较多的样例进行电梯运行的正确性测试 。
第三、四单元
第四单元由于其运行结果的不唯一性,除了编写大量的样例,需要肉眼检查输出的合理性。
课程收获
通过课程学习,我初步学习了多线程代码的编写,系统性学习了JML语言和UML建模思想,对面向对象编程有了更深刻的认知,在动手编码的实践能力上面临了很多挑战,也收获了很多宝贵的实战经验。