双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

2026_OO_U4_博客总结

71066014 易畅 71066014 易畅 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

本单元三次作业均围绕图书馆系统展开,我最终的代码结构大致如下:

类/模块职责说明
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

系统整理逻辑:

  1. 处理过期预约
  2. 分配图书
  3. 清理无效状态
  4. 按评分调整书架

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软件同步操作,按照文档中的电路图逐步搭建并仿真,重点关注各信号产生电路的参数设置、波形生成质量及调试过程,以深化对模拟电路工作原理与系统设计方法的理解。

荔枝科研社
评论
收藏 已收藏
分享
返回顶部