BUAA_OO第三单元作业总结

Posted 王端锐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BUAA_OO第三单元作业总结相关的知识,希望对你有一定的参考价值。

1.总结分析自己实现规格所采取的设计策略

首先,阅读类的规格,大概了解类所包含的属性、主要方法和用处。

然后细读主要方法的规格,了解具体的操作,选择合适的容器和算法来实现JML的要求。

2.结合课程内容,整理基于JML规格来设计测试的方法和策略

使用JUnit:本次作业推荐的JUnit很好用,这是一个Java语言的单元测试框架,并且IDEA集成了JUnit作为单元测试的工具,使用起来相比OpenJML和JMLUnitNG更加方便。

3.总结分析容器选择和使用的经验

Mygroup.java中用hashmap实现person

MyPerson.java中用hashmap实现acquaintance(相连的人及其值的表),用list实现messages

MyNetwork.java中用hashmap实现people,groups,messages,用list实现emojilist

其他的都是按JML定义写,如:int,String等

经验:经常使用到遍历hashmap的操作,我已背熟最快的那种办法的写法了。

4.针对本单元容易出现的性能问题,总结分析原因如果自己作业没有出现,分析自己的设计为何可以避免

(1)用并查集的思想,我新建一个类,储存图的联通分量。在addperson和addrelation时需要更新这个联通分量list。

(2)在第3次的Dijkstra算法需要优化,可以用优先队列。

5.梳理自己的作业架构设计,特别是图模型构建与维护策略

架构除了自己新加的类lian储存并查集中的连通分量,其余均与JML一样。

图的模型也基本由JML规格确定,即Person作为节点,Relation作为边,value作为权重,并采用邻接链表的方式存储,acquaintance作为邻接链表。

在addperson和addrelation时需要维护联通分量。

6.其他bug分析

计算平方除以总数的时候,我一开始没注意看,写错了,导致强测0分。

7.心得体会

我感觉这个是3个单元里最简单的,建议oo课以后把这个放在第一单元吧。我目前3次无效作业,2次是字符串单元的,太难受了。

以上是关于BUAA_OO第三单元作业总结的主要内容,如果未能解决你的问题,请参考以下文章

BUAA_OO 第三单元总结

BUAA_OO 第四单元总结——UML

BUAA_OO 第二单元总结

第三单元作业总结

OO2021-第三单元作业总结

OO第三单元总结