2025-BUAA-OO Unit4 单元总结

陈宇涵-23373235 2025-06-15 23:26:55

2025-BUAA-OO Unit4 单元总结

正向建模与开发

最终代码是UML具象化的实现,代码的复杂逻辑和行为通过 UML 展示会更加清晰。

正向建模,在迭代开发中,我会先在 UML 类图中进行类的简单设计,再在代码中补充具体细节,遇到问题后,再修改原有的类图,二者是相互推进,共同迭代的关系。
对于状态图,我会先绘制状态图明确状态转移条件,再实现代码。
对于顺序图,我会先梳理出对象交互后再编码。


架构设计

类图

类图表示了不同的类之间的关联、继承等关系,也展示了类的参数与方法。

img

状态图

状态图反应了书本在不同位置的移动,以及移动所需要调用的方法。

img

架构设计

本单元中我设计了bookshelf类对书籍进行统一管理,通过database类对student进行统一管理。设计了appointment_office、borrow_return_office、reading_room三个类进行书籍借阅归还、阅读的处理。后续还增加了hot_bookshelf类对热门图书进行管理。


大模型应用

辅助架构设计:在完成本单元任务时,我使用了大模型生成初始类图建议,然后对其进行人工调整。
代码测试:我会使用大模型辅助构建评测机和生成数据。

引导大模型在复杂场景中完成架构设计任务时,应该确保向大模型提出的要求没有二义性,让模型对设计模式和测试策略提供建议,并生成基础的代码片段,并通过对话,规范大模型的思考和答案。


架构设计思维的演进

Unit1

Unit1实现了表达式的展开化简,要求按照表达式、项、因子梯度下降处理。

  • Processer类用于简化输入,去掉输入中的空白符,合并连续的加减号,便于后续处理。

  • Lexer类中将输入的字符串识别为一系列Token便于后续解析。

  • Parser类对Lexer输出的Token进行解析。在Parser中用parseExpr(),parseTerm(),parseFactor()三个方法,通过递归下降的方式,将输入Tokens解析为表达式、项、因子。针对不同的因子,都继承Factor类,使代码更加简洁。

  • 对每一个Factor都有toPoly方法。toPoly方法通过逐层向上将输入转化为Poly,然后用Poly中的toString方法将Poly转化为字符串输出。

Unit2

Unit2学习了多线程,主要有三个线程:输入线程、分配线程、电梯线程

  • 我创建了RequestTable类和ProcessingRequest类,这两个类分别用于存储已经接受到的需求和经过了预处理的需求。在这两个类中所有方法均被synchronized关键字修饰从而进行同步控制。同时当这两个类中没有需求而输入未结束时,它们会进入等待让出锁,直到接受到新的需求时被唤醒。

Unit3

Unit3要求根据JML完成代码,但我们需要进行规格与实现的分离。

  • 参数实现:JML给出的示例为静态数组,在真实实现中往往处理较为复杂而且性能较差,我们需要自行选择合适的数据结构例如动态数组或哈希表
  • 方法实现:JML的方法为遍历,性能较差,我们需要自己选择合适的算法或者进行维护,尽量优化性能

Unit4

Unit4UML正向建模,要求我们完成一个图书管理系统

  • 我先在UML图中设计了大概的类,明确大体思路。
  • 在代码实际编写过程中我会在尽量安装UML图设计的思路写,同时对已经写好的UML图进行维护

测试思维的演进

Unit1

Unit1并没有进行自动化测试,但是因为要开始hack别人,所以我会自己捏造一些边界数据等等,用这些数据对自己的代码进行测试,然后去hack别人。

Unit2

Unit2我开始使用测评机测试,这样基本上我的bug都能够测试出来。

Unit3

Unit3输出一致,只能进行对拍,我用评测机生成测试数据然后和室友比较输出是否一致。

Unit4

Unit4代码较为简单,没有进行自动化测试。


课程收获

经过一个学期OO课程的训练,我在代码架构设计、代码测试能力、大模型应用等等方面都有了重大提升。OO课程的学习过程中结果遇到了许多问题,有一些单元的结果也不尽人意,但是我的java代码水平得到了确确实实的提高,我深刻感受到了自己的进步。

最后,OO完结散花!!!

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

272

社区成员

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

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