OO_Unit4单元总结 & OO课程总结

吴承儒-23230618 2025-06-11 10:49:36

OO_Unit4单元总结 & OO 总结

目录

  • OO_Unit4单元总结 & OO 总结
  • 本单元所实践的正向建模与开发
  • 本单元作业的架构设计
  • 大模型辅助正向建模
  • 四个单元中架构设计思维的演进
  • 四个单元中测试思维的演进
  • 课程收获

本单元所实践的正向建模与开发

本单元通过图书馆管理系统的开发实践,完整体验了UML正向建模的全过程。

  • 从需求分析阶段的用例图设计开始,识别了图书馆各部门、读者等系统参与者,明确了借书、还书、查询等核心业务流程。
  • 在系统设计阶段,运用类图建立了Book、User、Library等核心实体类及其关联关系,通过时序图详细描述了借还书的交互时序,利用状态图刻画了图书的状态转换过程。
  • 在编码实现阶段,严格按照UML设计进行面向对象编程,将抽象的模型转化为具体的代码结构,实现了从分析到设计再到编码的完整正向工程。

这一过程不仅加深了对UML各种图形符号和建模思想的理解,更重要的是体验了模型驱动开发的优势——通过前期充分的建模分析,有效减少了编码阶段的返工,提高了系统的可维护性和扩展性,真正实现了"先设计后编码"的工程化开发理念。

本单元作业的架构设计

img

本次作业采用了分层架构设计,以Library类作为系统核心,通过聚合关系管理Book、User等实体类,并通过BookShelf、ReadingRoom、AppointmentOffice、BorrowReturnOffice等功能模块实现业务分离。从UML类图到最终代码实现,保持了良好的追踪关系:类图中的实体类直接映射为Java类,关联关系通过成员变量和集合类型体现,聚合关系在代码中表现为容器类管理被包含对象的生命周期。特别是Library类的设计,在UML模型中展现为系统的控制中心,在代码实现中通过依赖注入和工厂模式实现了各功能模块的统一管理。方法签名、参数类型、返回值类型均与UML设计保持一致,实现了模型到代码的无缝转换。这种高度的一致性验证了正向建模方法的有效性,同时也展现了UML作为软件设计蓝图在指导编程实践中的重要价值,真正实现了"模型即代码"的设计理念。

大模型辅助正向建模

由于本次作业要求“先设计,后编程”,而我自己平时完全没有养成这样的习惯,所以我想锻炼一下自己在无代码的情况下建模能力,因此在建模阶段选择自己设计。在编程阶段,我会让大模型帮助生成简单的函数,因为大模型生成长文本的能力还是有限,并且出现bug时也不容易发现和修改。

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

从四个单元的学习历程来看,架构设计思维经历了从算法导向工程导向的完整演进过程。

  • 第一单元的表达式化简任务采用递归下降思想,体现了自顶向下的分治策略,通过语法树的递归构建实现复杂问题的分解,奠定了结构化编程的基础;
  • 第二单元的电梯调度系统引入多线程编程思想,从单一控制流扩展到并发控制,架构设计开始关注资源竞争、同步机制和系统性能,体现了从算法优化向系统优化的转变;
  • 第三单元的社交网络项目通过JML规格化编程,将设计关注点从"如何实现"转向"做什么",通过前置条件、后置条件和不变式的约束,实现了契约式编程思想,强调了接口设计与实现分离的重要性;
  • 第四单元的图书馆管理系统运用UML建模语言,完成了从需求分析到系统设计的全流程建模,实现了可视化设计和模型驱动开发。

整个演进过程体现了软件工程思维的深化:从关注算法效率到关注系统架构,从关注功能实现到关注质量保证,从关注编码技巧到关注设计方法,最终形成了系统性的软件开发思维框架。

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

其实每个单元的测试在核心上都由两部分组成:数据生成正确性检查

首先对于数据生成,每个单元都需要知道输入数据的格式和要求,使用随机来进行一般数据的生成。但是,对于有的代码,随机的测试数据测试效率很低,因此要么增大数据数量来尝试寻找bug,要么手搓特殊的测试数据来检查程序是否有超时的可能。

然后对于正确性检查,主要分为直接检查和对拍。对于直接检查,适用于每个单元,特别是第一单元,可以使用Python中的Sympy直接判断最后化简的表达式是否正确。第二单元,就必须自己编写程序来判断电梯输出逻辑是否正确,这就比较困难。正因为有输出正确与否逻辑较复杂,所以有了对拍的方法(可惜的是,第二单元大家实现不同造成输出也可能不同,多线程的不确定性也造成相同代码输出可能不同,而无法使用对拍),直接比较两份输出是否一致来判断是否正确,当然这样也有风险(万一两份代码错的一样)。

课程收获

通过面向对象课程的系统学习,我不仅掌握了Java语言的核心特性和面向对象编程的基本原理,更重要的是建立了完整的软件工程思维体系。从递归下降的算法设计到多线程的并发编程,从JML的规格化开发到UML的建模设计,每个阶段都让我对软件开发有了更深层次的理解。课程最大的收获在于培养了系统性思维能力:学会了在复杂问题面前运用分治策略进行分解,在并发场景中合理设计同步机制保证系统稳定性,在团队协作中通过规格化约束确保代码质量,在项目开发中运用建模工具进行可视化设计。这些技能的综合运用,使我从一个单纯追求功能实现的初学者,转变为能够统筹考虑系统架构、代码质量、开发效率和可维护性的软件工程实践者。更重要的是,课程培养了我持续学习的能力和解决复杂问题的信心,为今后在软件开发领域的深入发展奠定了坚实的基础。

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

272

社区成员

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

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