BUAA-OO-最后单元总结

BUAA-OO-最后单元总结

  经过一学期的魔鬼“折磨”后,OO课程终于要结束了!总体来说我对于作业的总体完成情况还是比较满意的,希望最后可以取得一个理想成绩。

一、第四单元架构设计

  第一次作业是类图的解析,我的大致思路是将类图中的每个类都建一个对象,每个对象中存储本类的所有东西,包括属性,方法,关联,父类和接口等等。然后在UmlInteraction中存储类的id和name对应该对象的hashmap,通过id和name均可找到相应的类对象。

 BUAA-OO-最后单元总结

BUAA-OO-最后单元总结

BUAA-OO-最后单元总结

BUAA-OO-最后单元总结

BUAA-OO-最后单元总结

  第二次作业在第一次作业的基础上新增了顺序图和状态图,还有3个规则的检查。顺序图和状态图的处理方式和类图一致,新建类,构造类对象,再把相关元素添加到该对象中即可。至于3条规则的检查,第1条直接遍历即可;2、3条用类似bfs的方法遍历所有的类即可。

BUAA-OO-最后单元总结

BUAA-OO-最后单元总结

BUAA-OO-最后单元总结

BUAA-OO-最后单元总结

BUAA-OO-最后单元总结

BUAA-OO-最后单元总结

BUAA-OO-最后单元总结

BUAA-OO-最后单元总结

二、四次单元架构设计及OO方法的演进

  第一单元

    由于首次接触java及面向对象思想,可以说我第一单元的架构十分差劲,完全是用面向过程的思想去解决问题。刚开始时对于java的诸多包和语法都不是十分熟悉,在写本  单元作业时举步维艰。每次只建一两个类,把每个类当一个函数去调用,导致代码的耦合度极高,也并没有什么可扩展性可言,所以我本单元的作业全部都是重构的,完全没有  沿用上次作业的架构。除此之外还有令人头痛的WF问题,这些对于我这样的新手来说不是十分友好......所幸的是仅仅在第二次作业因为一点失误错了2个点,对自己的屎山代码    没有出现大bug而欣慰,现在想想可能会分成表达式类,因子类等去解决问题。

  第二单元

    我认为第二单元最难理解和处理的地方就是多线程,因为它存在不确定性,经常会出现每次运行结果不一致,或者是评测机与本地运行不一致的情况。这次的架构相比第一  次有了些改观,分出了电梯类,控制器类等等。第三次作业也保留了第二次作业的部分代码,算是第一次对面向对象有了一点理解。

  第三单元

    第三单元我认为比较有趣,用JML描述规格,根据描述自己去实现方法,就像是分配给你一个大项目中的一部分去完成。架构方面虽然类比较少,但也基本实现了层次的分  离,三次作业都是在前一次的基础上完成,没有进行过重构。

  第四单元

    第四单元是关于UML相关知识,这次的作业最难的是UML相关知识的理解,涉及到的知识面比较广。在架构方面也是基本实现了分离,将不同的图分成了不同的类,第二次  作业也没有进行重构。整体来说这四单元作业架构逐渐清晰,也逐渐对面向对象思想有了一定理解。

三、测试理解与实践演进

  第一单元

    第一单元由于是刚刚接触java,仅仅只会简单的手动输入测试样例,测试样例也基本都是用的指导书上的已有样例。不过对于一些边界数据和压力数据有进行测试,包括\t  \r,50个x+x这样的数据。

  第二单元

    第二单元最主要的就是一个样例测试多次,看看会不会出现不一致的结果。第二单元的样例输入比较复杂,何时输入ctrlD是一个比较难解决的问题。总之这次的测试就是一  组数据疯狂测,需要测很多次才能确保正确。

  第三单元

    第三单元由于数据规模比较大,开始使用一些文件输入输出,命令行等方法进行测试。也会将其其他同学的输出结果拿来进行对比。

  第四单元

    第四单元基本完全自动化测试,甚至还写了一些脚本去运行多次程序,然后将输出结果与其他同学进行对比。

四、课程收获

  本学期的OO课程带给我的收获主要有两方面,一是在知识方面,我学会了java语法,可以用java语言编写大规模的程序;同时我也学习了一些OO思想,在解决问题时可以用面向对象思想考虑问题。此外,还学到了一些零碎小知识,比如github的使用、JML、UML、jprofiler、Junit等。这些都对我的日后写程序有着巨大帮助。二是这门课带给我的一些抗压能力,几乎每周完成一次代码量巨大的大作业,对我的编程能力和抗压能力都是巨大的提升,以后再遇到大作业时,不会感到无从下手,毕竟有过这样的经历。同时每次完成作业也是对我的信心有着巨大提高。

五、课程建议

  1、希望可以给出1天的缓冲时间进行课上实验,上午讲完的知识下午直接实验真的十分困难。希望在下学期的OO课程中可以有所改善。

  2、UML单元作业的指导书感觉还有些不清楚,在讨论区里也经常会有人提问某种情况对不对,正确结果应该是什么之类的问题,希望可以在课上讲得更清楚一些,指导书也可以更清楚一些。

  3、第一单元的作业难度有些大,尤其是对于更上手的像我这样的小白来说,连java语法都搞不清楚,写大规模的作业更是难上加难。希望下学期开始的OO作业可以更加友好。

  最后,我的本学期的OO课程就要结束了。感谢助教和老师一学期对我们的帮助和指导,也希望我一学期的辛苦付出可以再成绩上有所收获。

上一篇:[BUAA软工]个人总结


下一篇:BUAA_OO_UINT2电梯调度