OO第四单元总结及课程总结

秦照轩-24373201 2026-06-20 18:45:20

OO第四单元总结

两阶类图在正向建模过程中的作用

本单元提出了先构建好每次作业的UML模型图,再去进行代码编写的要求,我总体体验下来感觉给编码体验带来了很好地提升。

  1. 在整个过程中,我们需要先设计好作业的一阶类图,我感觉这就像是对于作业需求的第一印象的一个呈现,就是看到这些需求的第一时间会考虑使用什么样的架构或什么样的数据类型,来满足各个需求如时间、空间等不同方面的要求。我认为这个过程并不需要对于具体的代码细节进行过度的纠结,我在设计过程中是从类的功能划分选择,然后进行各个类之间的关联依赖分析考虑,在考虑的过程中其实就能反应过来很多前面过程的设计问题,然后对可能不太合理的地方进行修改,整个流程我感觉是比较顺利的。一阶类图主要起到的就是类似于“设计蓝图”的作用,给后续的代码构建提供一个大概的框架,所以我在完成设计后,感觉逻辑上合理可行,就没有选择去继续扣其中的细节问题。
  2. 二阶类图我是在对照一阶类图进行具体代码实现的时候进行同步修改的。由于我的一阶类图中没有涉及的细节问题,在代码实现过程中可能会发现其中一些设计是看似合理,实则实现起来是比较繁琐的,这个时候就需要将这个具体问题拿出来重新考虑解决方案,并在二阶类图中进行实时改动。整个过程感觉类似于一种“迭代”的过程,将一阶类图进行细节上的丰富,从而形成二阶类图,二阶类图又可以作为下一次细节改动的基础,逐步将比较简陋的一阶类图构建更最终的二阶类图。二阶类图对我来说是一个实时思路方案的记录,让我能对当前进度下的总体设计进行较好的把握。

最终的代码设计和UML模型设计之间的追踪关系

单元整体架构:使用LibraryManager类提供具体指令的处理逻辑方法,由主函数进行命令类型分析和调用相关方法;然后使用Ao、Bro、Bookshelf等地点类作为书籍的数据的记录库,Book类负责存储每本具体的书的信息。

  1. 第一次作业中,由于要进行整体框架的搭建,以及大量功能的添加,在最终代码设计与开始的UML模型设计之间,由于细节实现问题产生的修改较多,包括新增一个类专门用来记录轨迹,新增一个类专门用来存储预约具体内容……这次作业中代码设计与初始模型设计之间的差异较大,而且因为架构原因,许多测评需要的方法我的二阶类图中是没有的。
  2. 在后续的二三两次作业中,功能增加有限,添加需要管理的内容较少,所以在模型设计时考虑就更细致一些,在一阶类图的修改时,其实已经把许多二阶类图要做的分析也顺带完成了,所以这两次作业的最终代码设计与模型设计吻合度较高,一阶类图几乎不需要修改就可以作为最终的二阶类图进行提交

如何引导大模型在复杂场景中完成架构设计任务

首先是要对需求进行阶段性的输入,逐步细化,不要一次性传入全部需求。这个策略我认为是在各种借助大模型编程都可以考虑的,因为面对过于复杂、没有进行处理过的需求文本,大模型很可能在需求的模糊点会出现需求分析错误,然后在后续过程中基于错误的分析进行架构设计,我们要做的是将需求进行层次化,帮助大模型从底层逐步搭建起整个架构,以最大程度的避免需求中的模糊点对大模型分析的影响。

其次是要人工对大模型的输出内容进行一次检验,确定他实现的正是我们所需要的,如果存在问题,要向大模型进行反馈,对其错误进行及时纠正,或者也可以提出一些优化修改检验,帮助大模型进行架构的进一步完善。

四个单元中架构设计思维的演进

  1. 表达式的解析计算,作为OO课程的第一单元,这一部分主要是帮我理解具体什么叫做面向对象编程,将我的思维方式逐步从面向过程转向面向对象。
  2. 第二单元的电梯调度部分,该部分毫无疑问是整个课程最具有挑战性的一部分,多线程和并发控制,以及结果的不可复现,在完成过程中确实令人抓狂,但是同时也让我学会了如何合理安排架构,实现代码逻辑的解耦;如何处理多线程与并发控制,进行线程安全的设计,让代码能够应对动态的变化。
  3. 第三单元主要进行JML规格的学习,这一部分主要借助大模型进行具体代码实现,因此对该部分的感觉其实不太深刻,主要印象是在大模型的帮助下借助JML规格对具体代码进行完成,算是理解了一种新的架构设计方式。
  4. 第四单元由于UML模型图的要求,需要在实现代码前进行一次全局设计,这次的架构设计给我的体验感最深刻,先全局设计,再处理逐步具体细节的设计方式让我在这个单元的作业完成中带来了极大的效率提升,也让我充分感受到了架构设计对代码的重要意义。

四个单元中测试思维的演进

  1. 第一单元中,测试方法相对比较简单粗暴,通过随机生成数据进行重复的暴力测试,通过各种情况下的穷举找到代码中的问题所在。
  2. 第二单元,由于引入了多线程和并发,出了正确处理数据之外,更要注意的潜在的死锁和忙等待等一系列不体现在结果正误的问题,需要通过测试各种边界并发环境来保证代码的线程安全。
  3. 第三单元,基于JML规格的测试代码编写,重要的是对于JML规格中每一条语句的完全验证,需要全面考虑各种异常情况,以及方法是否有副作用(这个在大模型生成测试代码时经常会被遗漏)。
  4. 第四单元,本单元测试除了要测试功能的准确性,还需要测试状态转移,以及处理时间的合法性,需要通过对出错情况的从头到尾的分析来判断代码实现中的问题。

课程收获

OO课程让我逐步熟悉了Java语言的使用,体验了工程项目代码的完成过程。

在实际的项目中,我们编写的代码不应当只局限于能够正确的运行出结果,还要去追求代码架构设计的可迭代性,对后续增量开发的友好程度。多次连续迭代的作业形式深刻地告诉我以上几点的重要性,只满足于当次作业的正确,不为下次迭代预留空间,会让下一次作业的工作十分的痛苦难受。

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

309

社区成员

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

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