OO第三单元博客作业
一、设计
第一次作业:
- 分别实现官方Person和Network接口,由于规定好了id,因此采用
HashMap
存储所有的Person信息。 - 由于
query_circle
方法无法通过JML中规定的内容实现,与是新增了一个ArrayList<ArrayList<Integer>> links
结构用于存储相关信息。其中Integer
为Personid,每个内层ArrayList
为一个circle,外层ArrayList
存储所有人的link信息。
第二次作业:
- 在上一次的基础上新增了Group,以及一系列与Group相关的增改查方法。
- Group也使用
HashMap
实现。
第三次作业
- 为Person添加了Money属性,并且添加了一些删查改方法。
- 其中较难实现的是
query_min_path
与query_strong_linked
方法,需要更改之前的数据结构。选择采用邻接矩阵代替之前的ArrayList<ArrayList<Integer>> links
结构,来存储path信息。根据弗洛伊德算法得到相应的数据,每次增删改时,都更新矩阵。
第三次作业数据结构
二、测试
- 这三次作业,都没有很好地构建测试用例,简单测一测就提交了。从而导致写出的代码要么有bug,要么性能差,强测分数都很低。
三、bug修复情况
- 由于测试不充分的缘故,也导致修复bug比较困难,对于发现的bug,仅在强测之前修复了数个bug,其余bug要么无法定位,要么无从改起。
四、总结
- 本单元的作业与其他几次相比,更像是Java数据结构而非面向对象设计,写代码需要的时间并不多,重点和难点都在测试上面,也充分暴露了自己不擅长测试
与debug的缺点。今后将注重这方面的能力。