BUAA OO第三单元作业总结
OO第三单元总结
一、实现规格所采取的设计策略
我的设计策略就是阅读相应JML,将其转化为代码。感觉课程组给的架构已经很清晰了,所以自己没有做什么设计。最需要注意的是容器的选择,使用list会受复杂度限制造成时间空间问题,因此使用HashMap可以方便并且整齐很多。
二、结合课程内容,整理基于JML规格来设计测试的方法和策略
-
仔细阅读JML规格,其描述的很清楚,严格实现就不会出现什么大问题,主要是注重方法之间的连动。
- 课程组推荐使用junit进行正确性测试但我不太会用,所以就用样例还有一些随机数据测试,对对拍。
三、总结分析容器选择和使用的经验
使用arraylist最简单,易于实现,遍历简单可用于关联性不强的。但是属性实在太多了,性能会出现问题。并且由于有许多网络元素的增删查改,所以使用HashMap来储存独一无二的id和想对应的属性,便于提取和查找,降低时间复杂度,提高性能。
四、针对本单元容易出现的性能问题,总结分析原因如果自己作业没有出现,分析自己的设计为何可以避免
主要是senddirecmessege那个类,化简下来就是求最短路径。我使用的是dijsktra算法,就是不断的tle,后来询问同学,采用了堆优化的dijkstra算法,利用了priorityQueue,才会不tle。
五、梳理自己的作业架构设计,特别是图模型构建与维护策略
由于这个月忙着排练,把OO耽误了很多,完全就是照着指示打代码,本单元重要的性能优化和架构设计就基本没做,也没做什么维护。图就是使用HashMap将id作为key,对应元素作为value,及时缓存,以此实现query_circlede 优化。