BUAA OO 第四单元总结

一、总结本单元的架构设计

  本单元的作业设计是基于UML语言规格之上的。在课堂上,老师教给了我们本单元使用UML语言的基本组成元素。在作业指导书中,根据UML的结构层次,构造了类图,顺序图,状态图三个大类,将归属于其中的操作,参数,方法,状态,状态转移等元素分别有特定的数据结构(HashMap,Arraylist)等存放在对应的类中,在空间结构和时间结构上方便进行查找和搜索。

二、总结自己在四个单元中架构设计及OO方法理解的演进

  1、在oo课程中,架构设计从第一单元第一次作业吃亏之后,之后几单元的作业都在第一单元中为了保证耦合性和模块之间功能的独立性,方便每次作业之间的增量开发,在每单元第一次作业就做好了从顶向下的模块化设计,这也是oo课程中老师竭力想要教会我们的。从个人经验和理解来看,模块化方法非常有用,除了能够很好地满足同一单元不同作业之间的作业演进以外,在个人学习方面也非常有帮助。或者说,作为一个未来的计算机行业从事者,oo的模块化设计确实对于我们每个人来说都大有裨益,虽然oo课程还是有点肝的小痛苦就是了。

  2、在oo课程之中,oo方法除了模块化设计之外还涉及到公测和互测的思想,虽然自身在这个方面做到挺有欠缺。但是从第三单元和第四单元的JML和UML语言设计来看。在构造一个原始项目之初,除了构造良好的类图进行顶层架构设计之外,可以将自己的算法设计思路和具体实现方法用JML语言规格和UML语言规格进行描述,有利于项目之后的开发和调试bug。

三、总结自己在四个单元中测试理解与实践的演进

  1、在四次单元的互测和公测中,自我感觉中测的难度是一次较一次低的。当然,个别卡点除外。个人觉得一是和自身越来越熟悉测试关系和方法,换句话说,也就是熟悉oo课程本身设计方法有关,二就是和自身的模块化设计和调试bug能力进步有关联。个人认为测试的目的是找出已知输入与目的输出不符合的点,理论上可以使用覆盖性数据测试对于自身的代码进行测试,也就是构造自己的评测机。二则是使用结构性测试,通过构造一般和特殊以及边界数据对于程序进行调试。在某种程度上说,是用完全输入集的一个比较具有代表性的集合去测试,企图通过部分代表整体特点,简化测试。这个点难就难在找出特殊和具有普遍意义的一般数据点,将两者如何划分开也是一个具有难点的问题。自身还需要加强测试,如果完全掌握了的话就不会被强测卡过几次了。需要学习。

  2、oo课程每次作业的难度在我看来应该是(表达式求导)>(多线程电梯)>(UML语言)>(JML语言规格)。表达式求导的难度在于第一次作业时自己没有摆脱面向过程设计思想的设计,导致之后的作业重构困难。而之后几单元的作业在我看来难点在于自己对新知识点的掌握程度,也考了一些程序设计学过的图算法,以及对于一些较高时间复杂度的算法进行简化的问题。在自己oo设计能力增长的同时,对于之后单元的作业就感觉比第一单元较为容易了,虽然仍然有难度。

四、总结自己的课程收获

  1、课程收获其实在上面几个部分已经设计到了,自我感觉除了oo面向对象的设计思想以外,收获重点可以概括化系统化的模块化设计、代码风格的学习、某些算法的进一步掌握、测试能力的提高等几个仿方面

  2、课程收获还有一个重要的部分,没有bug的程序是不可能一遍码出来的,没有bug的程序是必须要进行详尽的设计和强覆盖化的测试才能有正确性保障的。

五、立足于自己的体会给课程提三个具体改进建议

  1、对于第一单元的表达式求导,个人感觉可以对于一些基础较低,未接触面向对象设计的同学进行一些提示和引导,在第一次作业时避免因为面向过程的算法设计而导致之后几次作业重构困难,难以理解。最开始的时候因为重视程度不高可能忽视了oo的课程难度和投入精力,导致受到打击。

  2、UML语言的练习可以考虑除了课堂之外给出一些具体关于这个方面的知识定义。个人感觉课堂上的知识不太够用,网上查找了很大一部分资料有不太能对上,后面靠询问同学和往届学长得以解决。

  3、可以考虑提倡同学们做自己的评测机,助教大大们可以建议和经验。从最为简单的开始做起,一步一步练习精进。

posted @ 2021-06-26 20:03  杨淇文  阅读(45)  评论(0编辑  收藏  举报