301
社区成员
发帖
与我相关
我的任务
分享在本单元中我们实现了一个图书馆模拟系统,包含了借书,预定,查询,还书等等的功能,本单元的核心在于预先的架构设计,提前做好架构设计并且画好uml图根据uml图写出代码,总而言之是设计思维的训练。
我个人认为第一次作业最重要,第一次作业的关键在于给出的官方包已经很齐全了,不要重复造轮子,在第一次作业第一遍写的时候由于写了book和bookshelf两层而导致查询异常麻烦,仔细读了官方包后发现这两层完全不需要,也给扩展留出了很多的空间。
第二次作业只需要在第一次的基础上加一个图书漂流角然后修改下整理图书的过程,完成的较快,当然这也肯定是助教考虑到了我们有航概考试,感谢助教不杀之恩。
第三次作业也比较简单,没有新加的类,主要的改动在于引入了信用分机制,主要修改了预约,整理图书这两个部分,其他部分根据了信用分规则小改。
我所理解的正向建模与开发是基于系统的目标和他的行为,还有这个系统的各个部分之间的关系来构建模型。我认为正向建模是一个从整体细化的过程,同时描述了系统的结构和功能以及各个部件他们之间的关系。
在本单元中,我是先有一个ParserInput类负责解析了输入之后将需要的信息传给了作为中心的Library类,Library类负责和各个类进行交互并且拿到结果最终输出,剩下的则是各个部分,Corner代表了漂流角,BorrowPlace代表了借还处,OrderPlace代表了预约处,Student代表了学生,而Request代表了预约的请求。
最终架构设计如下

如同上文
先是ParserInput类解析输入并且把有用的信息传给了Library,Library作为核心和其他的部分进行交互拿到信息并且输出了最终的结果,这个架构就是各个部分各司其职,然后Library作为中心来交互。
其中Corner是图书漂流处,包含了一个书架和hashmap来记录捐献者,BorrowPlace是借还处,有一个书架和一个hashmap来记录借还次数,OrderPlace是预约处,有两个Arraylist来记录在预约处的书和将要在下一次整理时放到预约处的书,然后是Student代表了学生,每个学生也有一个自己的书架。
状态转移图如下

顺序图如下:

我认为代码和UML模型之间的追踪关系是指的是代码和架构图中类元素,变量元素,方法元素的一致性
IDEA和UML提供了工具支持了代码和UML模型之间的追踪
我们可以通过规范统一的命名来快速检查代码和UML模型之间的追踪关系
我们可以通过在代码中写注释来注明代码和UML之间的追踪关系
在这四个单元中,随着对于面向对象思维的了解逐渐加深,我认为我的架构也在变得更加清晰。从第一个单元来说,我的架构是表达式,因子,以及项都是兼顾了递归下降的功能和计算结果的功能,也就是说压根不符合高内聚低耦合的设计思想,而是把功能都融合成了一块儿,非常混乱。在第二个单元中我认为我的架构使用了多种的模式,比如生产者消费者模式,以及工厂模式,提高了我的架构的扩展性以及让我的架构更加清晰明了,第三个单元是按照JML写没有怎么设计架构,而第四个单元中我认为我的架构可以说是各司其职,每个部分都是有着明确的功能,也是符合了高内聚低耦合的思想。所以说我认为架构思维演进包括了高内聚低耦合思维上的认识,面向对象的认识加深,工厂模式,生产者消费者模式等的应用等等。
在这四个单元的测试中我认为JUnit测试给了我对于测试认知比较大的改变,需要得到的目标,以及需要保障那些变量不能变化,测试数据的全面性,以及测试数据的边缘性,都能在JUnit测试中体现。
对于四个单元测试中思维的演进,从第一个单元几乎只靠弱测和中测导致我强测g的很惨,到第二个单元课下充分测试达成了第一单元总结中立下的目标,到第三个单元通过JUnit对于各种测试有更加深刻的认识,到第四个单元没出bug完成三次作为。我认为我对于测试的认识也在不断地提高。
我觉得对于我而言最大的收获是抗压能力上的收获,各种实际的收获已经在每个单元的博客中总结过了,第一单元和第二单元对于我的抗压能力可以说是有着极大的考验,尤其是第一个单元,还沉浸在假期的美好回忆之中,突然狠狠上强度,红温是第一个单元的常态,而经历了前两个单元的洗礼,我认为我的心态和抗压能力都得到了提升,我原来是认为应该把每个细节都想明白再动手写而导致了犹豫不决,我从第三个单元开始则是有个大概的结构就开始动手写,很多事情是写到了那个时候就自然明白了,光靠想是想不明白的,所谓的“船到桥头自然直”。而对于抗压能力上而言,从周一周二的迷茫,到周三上机之后有思路,到周五完成后开始debug,开始测试,到互测时想尽办法刀别人,再到周一晚上看强测结果修复bug又开始了新的一周,OO课程极大的锻炼了我的抗压能力,我觉得这是比其他的收获更加宝贵的,感谢OO!