2026_OO_U4_博客总结
本单元三次作业均围绕图书馆系统展开,我最终的代码结构大致如下:
| 类/模块 | 职责说明 |
|---|---|
Main | 解析输入,处理 OPEN/CLOSE 指令,其余请求交给管理层 |
LibraryManager | 系统总控,负责初始化与开闭馆流程,组织各服务模块 |
RequestHandler | 处理各类请求(借书、还书、预约、取书、阅读、评分等) |
ArrangeService | 负责开馆前/闭馆后的图书整理逻辑 |
MovementService | 统一管理图书移动及轨迹记录 |
BookCopy | 表示单本副本,记录位置、状态、预约与到期信息 |
User | 用户信息,包括信用分、借阅与预约状态等 |
Reservation | 预约对象及其状态(PENDING / READY / COMPLETED / EXPIRED) |
一、正向建模的理解
第四单元与前面最大的不同在于:不能先写代码再调整结构,而必须先进行建模。从需求中抽取“名词”和“行为”成为第一步。
实体
- 图书、副本
- 用户
- 书架、借还处、预约处、阅览室
- 预约
- 移动轨迹
- 信用分、借阅期限
行为
- 借书、还书
- 预约、取书
- 阅读、归还
- 评分、续订
- 查询、整理、移动
三次作业演进
| 作业 | 主要内容 | 设计变化 |
|---|---|---|
| HW13 | 基本借还、预约、查询、整理 | 建立核心领域对象 |
| HW14 | 阅读、评分、精品书架、状态扩展 | 引入统一移动模块 |
| HW15 | 信用分、续订、借阅期限 | 扩展业务规则与状态 |
二、两阶类图的作用
一阶类图
用于确定系统方向:
- 是否拆分 Book / BookCopy
- 是否需要 Reservation
- 状态如何建模
- 模块如何划分
二阶类图
用于与代码严格对齐:
- 类 / 方法 / 属性一致
- 枚举状态完整
- UML 与代码可追踪
最终实现中的关键结构:
LibraryManager:系统调度RequestHandler:业务处理BookCopy:状态载体User:用户状态Reservation:生命周期管理
三、架构设计
1. 系统入口层
Main 仅负责输入解析,交由 LibraryManager。
LibraryManager 负责:
- 初始化系统
- 开闭馆流程
- 任务分发
2. 请求处理层
RequestHandler 负责所有操作:
- borrow / return
- order / pick
- read / restore
- grade / renew
保持尽量无状态,调用领域对象完成逻辑。
3. 移动与整理层
MovementService
统一处理图书位置变化:
- 借书:书架 → 用户
- 还书:用户 → 借还处
- 阅读:书架 → 阅览室
ArrangeService
系统整理逻辑:
- 处理过期预约
- 分配图书
- 清理无效状态
- 按评分调整书架
4. 领域模型层
BookCopy:副本状态User:用户状态Reservation:预约状态TraceManager:轨迹记录Repository:对象管理
四、大模型辅助建模
1. 职责划分
用表格检查类职责是否过重。
2. 设计审查
用于检查扩展性与一致性。
- 状态变化是否一致
- 是否存在遗漏状态更新
- 缺失的状态转换
五、四个单元对比
| 单元 | 重点 | 思维变化 |
|---|---|---|
| 第一单元 | 表达式 | 对象拆分 |
| 第二单元 | 多线程 | 并发设计 |
| 第三单元 | JML | 规格约束 |
| 第四单元 | UML建模 | 系统设计 |
六、测试思维变化
- 第一单元:表达式正确性
- 第二单元:并发随机性
- 第三单元:边界与契约
- 第四单元:场景 + 状态一致性
七、课程收获
面向对象的核心不只是拆类,而是:
- 找稳定对象
- 管理状态归属
- 控制职责边界
- 保持系统可扩展
关键设计体现:
BookCopy防止状态分散User集中用户规则MovementService统一轨迹
相关推荐
Open3D 可视化(3)——自定义可视化【2026最新版】
Open3D 可视化——自定义可视化,博客长期更新,本文最新更新时间为:2026年5月10日。
Open3D 可视化(2)——绘制几何图形【2026最新版】
Open3D 绘制常见几何图形,博客长期更新,本文最新更新时间为:2026年5月10日。
从可观测性的角度研究基于扩展卡尔曼滤波器(EKF)的同时定位与地图构建(SLAM)中的不一致性问题(Matlab代码实现)
内容概要:本文系统研究了基于扩展卡尔曼滤波器(EKF)的同时定位与地图构建(SLAM)系统中存在的不一致性问题,重点从系统可观测性的角度进行深入分析。文章指出,EKF-SLAM在实际应用中常因系统可观测性不足而导致状态估计偏差和协方差低估,进而引发滤波器发散或定位精度下降。通过理论推导揭示了在特定运动模式(如纯旋转或直线运动)下系统可观测性降低的机理,并结合Matlab仿真实验验证了相关结论。研究构建了典型的SLAM仿真场景,展示了不同运动轨迹对估计一致性的影响,并探讨了提升系统可观测性的改进策略,旨在增强EKF-SLAM算法的鲁棒性与可靠性。; 适合人群:具备控制理论、机器人学、状态估计或传感器融合等相关领域基础知识,正在从事SLAM、自主导航、智能系统研发的硕士、博士研究生及科研人员。; 使用场景及目标:①深入理解EKF-SLAM中估计不一致性的根本原因及其与可观测性的内在联系;②掌握基于可观测性理论分析非线性估计系统的方法;③利用提供的Matlab代码复现仿真结果,用于学术研究、算法验证或教学演示。; 阅读建议:建议读者结合线性系统理论与非线性滤波知识,重点研读可观测性分析的数学推导部分,并动手运行配套的Matlab代码,通过改变机器人运动轨迹等方式观察滤波性能变化,以深化对理论内容的理解与实践应用能力。
基于AI大模型的量化交易可信数据空间建设方案.pptx
基于AI大模型的量化交易可信数据空间建设方案.pptx
(Multisim课设资料)最全面函数信号发生器(三角波+正弦波+方波信号+锯齿波仿真设计+报告文档
内容概要:本文详细介绍了基于Multisim的最全面函数信号发生器的设计与仿真,涵盖三角波、正弦波、方波及锯齿波等多种信号的生成电路设计,并结合仿真结果进行分析验证。文档不仅提供了完整的电路设计方案,还包括详尽的报告文档,适用于电子类课程设计与实践教学。通过该设计,用户能够深入掌握信号发生器的工作原理、Multisim仿真软件的应用技巧以及模拟电路的调试方法,全面提升电路设计与系统仿真能力。; 适合人群:电子信息工程、自动化、电气工程等相关专业的本科生及研究生,具备基本电路理论知识和Multisim软件操作基础的学习者。; 使用场景及目标:①用于高校电子类课程设计(如模拟电子技术、电路仿真等)的教学与实践;②帮助学生系统掌握函数信号发生器的设计流程与Multisim仿真技能;③为科研项目中信号源模块的搭建提供可复用的参考方案和技术支持。; 阅读建议:建议读者结合Multisim软件同步操作,按照文档中的电路图逐步搭建并仿真,重点关注各信号产生电路的参数设置、波形生成质量及调试过程,以深化对模拟电路工作原理与系统设计方法的理解。



