- 博客(5)
- 收藏
- 关注
原创 BUAA_OO_UNIT4及课程总结
为了提高代码的模块化、标准化,在为方法分配功能时,尽量降低功能的复杂性,每个方法仅实现一个基础功能。相对来说,我在这个单元的架构设计最为清晰。在做作业时,已有的代码中并没有能表示书本迁移动向的属性,因此,为了满足状态图的需求,在各个类中添加了所需属性,仅为了表示动向,没有什么实际用途。此时,通过创建UML类图,初步描绘自己的设想,厘清各个可能需要的类的功能。通过多态,我们可以编写更加灵活和可复用的代码,因为我们可以将不同的对象视为相同的类型(接口或基类),并调用它们的方法,而无需关心它们的具体实现。
2024-06-16 17:07:31
1373
原创 BUAA OO Unit3
这里有一种比较优秀的数据结构的选择,即优先队列,它能以O(1)的复杂度查询所需有限级(排名)的元素,这使得重新查找变得更快(O(n) --> O(1)),但美中不足的是,它的删除操作的时间复杂度是O(n),略高。但是,对于课程组提供的src中的文件进行的测试都是黑箱测试,代码不透明,所以在数据构造时要十分全面,这也是要求边界数据的原因,单纯的随机数据很难覆盖这类型的数据。关于Junit测试,我的感受是,由于本单元的代码实现有JML语言的规范,对方法的测试代码的编写其实就是对JML语言的翻译。
2024-05-16 20:48:17
368
原创 BUAA_OO_Unit2
经过分析后,我发现这是因为,对于电梯等待,我是通过对于电梯等待队列waitingQueue使用wait()方法实现的,但是电梯判断结束的条件中有对其他实例的调用,这导致waitingQueue未被唤醒,所以那些电梯仍处于等待,不能结束。首先,我在A、B类型的电梯中都存储了换乘楼层。对于每一对电梯井中的两台双轿厢电梯,给他们分配了一个共同的锁,当一部电梯到达换乘楼层后,它会占有该锁,此时如果另一部电梯试图进入该楼层,则会陷入等待状态,直到电梯离开换乘楼层,并释放锁后,进行notify,唤醒这部电梯。
2024-04-19 23:04:47
1535
1
原创 2023 BUAA OOpre 的一点点冒险经历总结
在程序出现输出结果出现问题的时候,通过对某一些相对较为复杂的方法进行测试,有效提高了寻找bug的速度。通过定义父类,再在其基础上定义子类,使代码的逻辑性增强,同时能简化一些操作,如药水进行操作,就无需判断其具体是哪种药水,仅需知道它是药水,并对药水类进行操作即可。把相同的方法全部封装,把相似的方法集中到一个接口中,再加以合适的命名,令代码的可读性产生质的飞跃,降低修改难度。在oopre这半个学期的学习中,我基本上是根据老师上课讲的内容,边学习,边在网络上搜寻一些不理解的内容,摸索着前行的。
2023-11-07 13:15:56
91
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人