OO第四单元总结以及学期总结

祁明礼-21376220 学生 2024-06-17 18:07:54

目录

  • 1. U4正向建模与开发
  • 1.1 正向建模
  • 1.2 本单元的正向建模与开发
  • 2 .U4架构设计
  • 3. OO课程总结
  • 架构设计思维
  • 测试思维的演进
  • 4. 课程收获

1. U4正向建模与开发

1.1 正向建模

正向建模与开发是一种自顶向下的方法,用于软件工程中的系统设计和开发。它强调从高层次的抽象设计开始,然后逐步细化到具体实现。
使用UML进行正向建模的流程通常包括

  1. 确定需求
  2. 绘制类图
  3. 绘制状态图
  4. 绘制顺序图
  5. 编写代码
  6. 进行测试和调试
    正向建模与开发通过系统化的步骤和规范,确保了软件开发过程的有序和高效。它特别适用于需求明确、项目规模较大的系统开发。在实际应用中,灵活运用正向建模的原则,可以显著提升软件项目的成功率和质量。

    1.2 本单元的正向建模与开发

    在本单元涉及的 UML 图中,与代码架构最贴近的是 UML 类图,大致使用流程如下:首先,对系统进行需求分析,识别出系统中的关键模块,作为 UML 类画入类图,并初步为每个类定义属性和方法,确定类之间的继承、关联等关系,最后根据 UML 类图编写代码,并对 UML 类图中的细节进行完善修正。而 UML 状态图和时序图则展现了对象在系统运行时的状态变化和行为逻辑,以及各个类之间如何相互协作共同完成对一件任务的处理,这些逻辑很难在代码层面直观展现,但却可以在 UML 状态图和时序图中简洁清晰地表示出来。

    2 .U4架构设计

    代码的主体是Library 接收Main传来的各个指令
    Main相当于译码器 由各个Admin保存一定的信息 同时具体化一些指令 第二次新增了 CornerAdmin 第三次只需要增加一些属性和处理这些属性的方法
    我并没有刻意封装读者的信息 只在Library里面使用了含有封装的ReaderInfo的数组
    在各个Admin中仅仅通过BookIdStudentId等来标志书和读者的对应关系(并不一定是一一对应)
    OrderAdmin中 为了便于处理预约信息 封装了AppointmentInfo

img

3. OO课程总结

架构设计思维

第一单元中 由于任务的"专业性"比较强 我选择沿用往届的成熟的架构进行实现 算是对java和面向对象加深了解 但缺乏自己的架构设计

第二单元中 尤其是后面两次作业 由于任务的独特性 往届的架构显得不是非常合适 我尝试自己进行一些架构设计 甚至在第三次作业中由于不合理的架构导致重构花费了大量时间。。。

第三单元 作业的架构设计反而不需要担心 只需要在方法的实现层面考虑时间复杂度即可

第四单元 自由度比较高 我也从头到尾自己进行架构设计
有了前面几个单元的铺垫 我在架构设计上趋于合理 在迭代时几乎无需重构

测试思维的演进

第一单元第一次作业我就尝试了搭建评测机 并通过评测机成功找到其他人的bug
第二三单元 我开始观察 一些边界数据 以此尝试找到同学的问题 由于时间等因素 我没有采用自己搭建评测机的方式

总的来说 手动构造数据主要观察程序在极端情况下的稳定性和性能,如第三单元中测试程序在全是时间复杂度较高的指令时是否超时,这是评测机的随机生成所做不到的;而评测机随机生成的数据可以弥补手动构造数据时考虑不周产生的漏洞,与手动测试相辅相成。
第四单元 我体会到了测试的重要性
因为这个单元的任务自由度非常大 因此我初步设计的各个方法并不一定能达到通过评测这个最终目的
因此我借助课程组的评测机 课程组的样例 以及大佬的评测机
通过测试-改正实现-测试的方式进行代码的最终完善
而不是通过自己考虑正确的代码应该怎么写 怎么保证这个方法一定是正确的
测试应该与实现相结合 两者相辅相成

4. 课程收获

我认为学到最多的是第二单元 对于多线程有了粗浅的了解
其次是第一单元 学习了一种处理一类问题的特殊方法 也就是递归下降
通过代码的实践 对各个方面 比如架构设计 代码实现 debug 都由了一定提升
一定要说的话 第三单元的 JML 规格和第四单元的 UML 建模,这两个单元的内容虽然不会直接影响架构设计与代码编写,但都是面向对象设计过程中的强有力工具。前者可以让我们精准无误地理解他人编写的方法,而后者可以使我们自己的设计思路直观形象地表示出来。

无论如何 本学期的OO课程都将会使得我在专业道路上走得更远

...全文
114 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

302

社区成员

发帖
与我相关
我的任务
社区描述
2023年北航面向对象设计与构造
学习 高校
社区管理员
  • YannaZhang
  • CajZella
  • C_ecelia
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧