面向对象第四单元学习博客

曹宝烨 ZC061021 2026-06-25 23:46:31

OO 第四单元学习博客

本单元以图书馆管理系统为背景,重点考查正向建模、UML 表达与代码实现之间的一致性。类图、状态图和顺序图分别对应静态结构、状态迁移和对象协作,是对系统设计的不同侧面描述。

一、第四单元建模与开发

本单元的主要任务是从需求中提取稳定的对象和状态。随着规则迭代,若仅按输入命令组织代码,业务逻辑会分散在流程判断中,后续扩展和检查都会变得困难。因此,本单元开发的重点在于明确各对象负责的内容,并将可变行为落实为可检查的状态迁移。

类图承担静态建模作用。第一阶段类图用于给出初始对象划分,明确系统中主要概念及其依赖关系;第二阶段类图则应与最终代码保持一致,反映实现后的真实结构。两阶段类图的对比说明,建模需要随实现过程持续修正。

状态图用于描述复本生命周期。图书馆系统中,复本位置变化比单条命令更能体现系统状态。普通书架、精品书架、借还处、预约处、阅览室和用户手中构成主要状态集合。将这些状态及迁移条件显式化,有助于检查代码中的移动操作,避免遗漏不合法的状态转换。

顺序图用于刻画一次业务请求中的对象协作。它关注消息发送顺序、服务对象职责和状态修改位置。通过顺序图可以检查类图中的静态关系是否具备实际调用支撑,也可以发现业务流程中过度集中或职责范围不清的问题。

二、架构设计与 UML 的关系

本单元中,UML 的作用应理解为设计校验工具。类图检查对象划分是否合理,状态图检查状态空间是否完整,顺序图检查对象协作是否清晰。三者之间应形成一致的解释体系。

代码实现会反向暴露模型问题。某些初始设计中的类在实现后可能缺少实际职责,某些状态迁移则可能在早期模型中被忽略。第二阶段类图的价值在于依据最终代码修正模型,使 UML 准确反映系统结构。

因此,本单元的架构设计过程可以概括为:先建立领域模型,再通过实现验证模型,最后用 UML 记录并修正模型。模型与代码之间的往返校准,是本单元区别于单纯编码任务的主要特点。

三、大模型辅助架构设计的分析

首先,应引导大模型从指导书中抽取稳定概念和变化点,先形成问题域模型,再讨论代码结构。稳定概念通常对应候选类,变化点通常对应状态或业务规则。

其次,应要求大模型明确每个对象负责的内容,并说明对象之间的依赖关系。该步骤可以直接服务于类图设计。

再次,应将生命周期和对象交互分开建模。状态变化适合用状态图描述,业务流程适合用顺序图描述。分开分析可以使模型更清晰。

最后,应让大模型对架构进行复核,检查职责分配、状态迁移、业务判断和 UML 与代码的一致性。通过这种分阶段引导,大模型可以较好地支持从需求到设计再到实现检查的过程。

四、架构设计思维的演进

四个单元体现了架构设计关注点的逐步扩展。初期更关注如何将功能拆分为类和方法;后续逐渐转向对象结构、并发协作、规格要求和模型表达之间的协调。

第一单元使我认识到,递归结构需要通过对象层次承载。第二单元表明,并发程序的设计重点包括功能分解、调度责任和共享状态管理。第三单元强调规格对实现的要求,使方法行为具备可验证性。第四单元进一步要求通过 UML 表达对象、状态和交互,并与代码保持对应。

由此可见,架构设计的核心在于为变化和规则提供明确位置。类的存在、状态的转移、方法的副作用,都应能在设计中得到解释。

五、测试思维的演进

测试思维也从结果验证转向过程和状态验证。早期测试主要检查输入输出是否符合预期;随着任务复杂度上升,测试对象扩展到执行过程、对象状态和方法副作用。

第二单元要求关注线程调度过程中的合法性,同时检查最终乘客是否到达。第三单元要求依据 JML 检查方法执行前后的对象状态。第四单元则需要通过连续场景测试跨日整理、预约失效、逾期扣分、续订和归还等组合规则。

因此,有效测试需要覆盖单条指令的正常路径,也需要覆盖状态叠加后的系统行为。对于面向对象程序,测试也是对职责划分和状态设计的检验。

六、课程收获

本课程加深了我对面向对象设计的理解。较好的设计应具备清晰的职责划分、明确记录的状态变化和稳定的扩展位置。UML、规格和测试共同服务于系统可理解性和可维护性。

课程结束后,我对复杂程序开发形成了更明确的认识:实现功能是基本要求,能解释结构、控制变化并通过测试验证设计,才是面向对象方法的核心价值。

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

309

社区成员

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

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