OO第四单元UML总结

1.第四单元作业架构设计

1.1第一次作业

  第一次作业由于时间关系(没错又是因为拖延到周六才开始写作业)没有建图,而是通过将每一个uml的属性分类存入不同的容器来保存和调用他们。每一个查询操作都取遍历该操作对应属性的容器,程序的效率不高,但实现起来难度也很小。

1.2第二次作业

  由于第一次作业没有建图完成加之又是因为自己把作业拖延到周五晚上才开始重构,第二次作业并没有及时交上。之后在学习了其他同学的第一次作业构图的思想后,完成了第一次作业的重构,并完成了第二次作业。前一张是未展开的类图,每一个包是一种图,后一张是包展开后的类图。在完成建图后各种查询方法就变得简单了许多,基本就是查询类的某个属性就能得到答案,有一些比较复杂的方法需要用到dfs遍历实现的接口或者继承。

1.3第三次作业

  第三次作业因为对某些规则的理解不到位,已经实现在某些规则时所用到的dfs遍历有问题导致了没有过中测,也和自己没有留出充足的时间来完成有关系。整体的架构和第二次作业基本一致,新增加的规则检查方法都交给对应的图来完成,在主类中只用一句调用即可。

2.四个单元中的架构设计以及OO方法理解的演进

  第一个单元多项式求导,这个单元一开始还是写C语言程序的思维。第一次作业也只有一个主类Main也就是一main到底,仔细一看代码无非就是批着java外壳的c代码——一个main函数加上几个功能函数。但是在第二次学习了其他同学的优秀设计后,我看待多项式的眼光不再像以前一样了。在过去面向过程的设计思路中这个多项式就是一个字符串,而在面向对象设计中他是一个对象,他有他的属性——项,而项也是一个对象,项的属性有系数和指数.......这样不断的把一个对象拆分下去成为多个对象,每个对象有自己的一些功能,每个对象最后再组合在一起就能实现复杂的功能要求。这种分而治之的思想是我在第一单元中最大的收获(虽然第三次作业并没有顺利的完成。

  第二个单元多线程电梯作业,这个单元其实自己并没有设计什么架构,三次作业都主要是借用了课程组的生产者消费者模式的架构来完成的。这个单元主要是学习了各种多线程的模式和线程同步互斥的实现方法吧。

  第三个单元JML规格,这个单元基本上是按照规格去实现的代码,其实感觉收获不是很大,主要是会读和理解一些简单的JML规格了吧。然后也因为没有好好去学习Junit做测试,导致前两次都没有进互测,第三次进了互测也死的很惨。

  第四个单元UML类图,这个单元主要是理解uml类图中各种元素的层次关系。三次作业也都是帮助我们来理解这当中的逻辑关系,所运用到的架构方法其实还是第一歌单元中学习到的分而治之的架构方法。

3.四个单元中的测试理解与实践的演进

  其实做测试最多的是第一个单元,因为这个单元是唯一一个可以比较方便手动构造测试数据的一个单元。后面几个单元都因为不便手动构造测试和自己懒惰的原因而没有进行什么测试,所以有几次死的很惨。

4.课程收获

  首先最大的收获肯定是学习了java这个面向对象的编程语言,了解大致的语法,学习类,成员变量,方法,对象等概念,还学习了java中各种容器,接口的使用。

  然后在四个单元中对我而言收获最大的应该是第一个单元吧,从第一个单元中学习到的面向对象的分而治之的思想贯彻到了我之后三个单元的OO设计中。

  再然后就是学习了多线程并发设计,JML规格理解,UML类图理解,不过这些都理解的不深刻,运用的话就更困难了。

5.给课程提三个具体改进建议

  每个单元的实验希望能有答案,或者实验结束的下一周研讨课能够给出一些解答。

  中测的每个测试点都希望能开放测试数据,降低一点难度。

  UML单元也希望能有互测阶段,主要是想学习其他人的架构模式,有时候自己的思维比较局限,能多看别人的代码也是不错的学习。

  这些建议都是小提议,我觉得OO课程整体设计的还是比较完善了也比较合理,第一次接触时给人一种耳目一新的感觉,中测,强测,互测,bug修复这些环节的设计很有意思,让人能感受到学习的乐趣,有学习的动力。不过相信任何事物总是有进步的空间,希望未来的OO课会变得更加出彩(明年再来体验一次)。

6.线上学习oo课程的体会

  线上OO的学习困难主要来源于自己的拖延,很多次作业都留到周六开始完成,而有时作业难度比较大就完成不了,这样的情况出现了好几次。不过线上学习也有好处,就是课程可以回看,有很多知识其实上课的时候并没有听明白,常常要结合实验课加上课程回看才能理解,这应该是比线下学习有优势的地方。

posted @ 2020-06-19 16:59  犀利的高坚果  阅读(158)  评论(0)    收藏  举报