第四单元博客作业

一.本单元两次作业架构设计

1.第十三次作业

类图

本次作业是对UML类图的解析,在MyUMLInteraction类中存储了所有的基本信息,并构建了Class类和Interface类分别存储类和接口及其中的属性、方法、父类等信息,又构建Operation类存储类中的方法的参数、返回值等信息。数据基本用Hashmap、Arraylist、Hashset的容器存储,在查询时比较容易。

2.第十四次作业

类图

本次作业中对于Uml类图的处理方式不变,仅增加了有关模型有效性检查的三个方法,因为在上次一作业中已经构建好图的结构,对于有效性的检查也很容易实现。对于UML状态图和UML顺序图的处理与Uml类图类似,分别构建两个类存储相关信息以及提供查询数据的方法。

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

1.在第一单元中作业分别采取了三元组和后缀表达式的方法来处理多项式的求导问题。在刚刚接触到面向对象的第一单元,对于输入合法性的检查成了最让我头疼的问题,而求导都采取了比较简单的方式,自己在架构方面没有做多少设计。使我收获是最大的是在课上讲的面向对象的思想和讨论课上dalao分享的架构设计,算是对OO有了一个入门。

2.第二单元中第一次接触多线程,是我认为最难的一单元,至少作业是最难写的。生产者消费者等模型以及作业中架构的提示给了我很大的帮助。虽然第二单元的第一次作业只是实现了傻瓜电梯没法避免第二次作业大量的重构,但是第三次作业就没有重构方面的困难了。在三次作业中对线程同步并没有出现什么问题。

3.第三单元引入了JML规格,虽然主要是让我们读规格而不是写规格,但是我接触到了一种新的思想。在作业中由path到graph到地铁的逐层递进,让人体会到一个好架构的重要性。

4.第四单元的UML模型想要完全理解还是比较困难,但是作业中的解析相对简单,简化了很多问题。本单元第一次作业的架构也适用于第二次作业。

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

1.第一单元对于测试数据就是各种多项式,前两次作业中构造测试样例很容易,即使把所有可能组合一下也就几十种,而错误用例的可能性更多,但总体来讲比较容易手动的构造全面的样例。而第三次作业括号和表达式的嵌套使得无论是正确的表达式还是错误的表达式都很难全面覆盖,尽管考虑了很多方面,我最后还是败在了括号的嵌套上。

2.第二单元多线程的测试比起单线程更困难,所幸作业中的输出就是对我们的提示,通过输出能比较容易的发现设计中的bug。 而且一次输出要等几十秒好慢啊。

3.第三单元中引入了Juint,并且对程序的性能的要求特别是时间上的要求大大增加。性能的测试方面主要是将测试数据的边数最大化,因为算法实现比较暴力,所以在n固定后程序运行时间不会有太大变化,也就是说我只要保证n最大时程序不超时就可以了,可以无视具体的数据输入,构造测试样例就很容易。不过在正确性方面我没有怎么用Junit。

四.课程收获

1.架构方面的进步是我第一个想到的。在数据结构等课程中,即使是所谓的大作业我也不过写了100多行,根本就不会去为了这么点东西考虑架构。一学期的课程后,从前两单元的重构火葬场,到后两个单元只需增加新功能,不得不说有很大进步。而算法方面都是很常见的算法,并不是重点。

2.面向对象的思想。

3.鲁棒性代码风格。

4.编程能力。基本上每次作业都是一天内完成的(或者说只剩一天才开始写)。

五.建议

1.互测最初还会看看别人的代码,到了后面本来时间就不多,还想要从六七个人几千行代码中找到可以借鉴学习的地方比较困难。看别人也都是对拍器抓别人bug。找bug的目的是实现了,但是互相学习的效果不好。

2.JML基本没让自己写,而作业中是图相关的,就算不看JML也基本能完成。而且JML第三次作业中有些规格并不容易读懂。可以考虑作业中不要用不看规格都能写对的图。

3.实验课基本上午是刚讲完课甚至是新的一单元,下午就要实验,而且做完了就没了,也没有放出过答案之类的。

猜你喜欢

转载自www.cnblogs.com/leewa2/p/11070584.html