302
社区成员
正向建模与开发是一种自顶向下的方法,用于软件工程中的系统设计和开发。它强调从高层次的抽象设计开始,然后逐步细化到具体实现。
使用UML进行正向建模的流程通常包括
Library
接收Main
传来的各个指令Main
相当于译码器 由各个Admin
保存一定的信息 同时具体化一些指令 第二次新增了 CornerAdmin
第三次只需要增加一些属性和处理这些属性的方法Library
里面使用了含有封装的ReaderInfo
的数组Admin
中仅仅通过BookId
和StudentId
等来标志书和读者的对应关系(并不一定是一一对应)OrderAdmin
中 为了便于处理预约信息 封装了AppointmentInfo
第一单元中 由于任务的"专业性"比较强 我选择沿用往届的成熟的架构进行实现 算是对java和面向对象加深了解 但缺乏自己的架构设计
第二单元中 尤其是后面两次作业 由于任务的独特性 往届的架构显得不是非常合适 我尝试自己进行一些架构设计 甚至在第三次作业中由于不合理的架构导致重构花费了大量时间。。。
第三单元 作业的架构设计反而不需要担心 只需要在方法的实现层面考虑时间复杂度即可
第四单元 自由度比较高 我也从头到尾自己进行架构设计
有了前面几个单元的铺垫 我在架构设计上趋于合理 在迭代时几乎无需重构
第一单元第一次作业我就尝试了搭建评测机 并通过评测机成功找到其他人的bug
第二三单元 我开始观察 一些边界数据 以此尝试找到同学的问题 由于时间等因素 我没有采用自己搭建评测机的方式
总的来说 手动构造数据主要观察程序在极端情况下的稳定性和性能,如第三单元中测试程序在全是时间复杂度较高的指令时是否超时,这是评测机的随机生成所做不到的;而评测机随机生成的数据可以弥补手动构造数据时考虑不周产生的漏洞,与手动测试相辅相成。
第四单元 我体会到了测试的重要性
因为这个单元的任务自由度非常大 因此我初步设计的各个方法并不一定能达到通过评测
这个最终目的
因此我借助课程组的评测机 课程组的样例 以及大佬的评测机
通过测试-改正实现-测试
的方式进行代码的最终完善
而不是通过自己考虑正确的代码应该怎么写 怎么保证这个方法一定是正确的
测试应该与实现相结合 两者相辅相成
我认为学到最多的是第二单元 对于多线程有了粗浅的了解
其次是第一单元 学习了一种处理一类问题的特殊方法 也就是递归下降
通过代码的实践 对各个方面 比如架构设计 代码实现 debug 都由了一定提升
一定要说的话 第三单元的 JML 规格和第四单元的 UML 建模,这两个单元的内容虽然不会直接影响架构设计与代码编写,但都是面向对象设计过程中的强有力工具。前者可以让我们精准无误地理解他人编写的方法,而后者可以使我们自己的设计思路直观形象地表示出来。
无论如何 本学期的OO课程都将会使得我在专业道路上走得更远