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日。

点云侠

Python自动化数据处理程序-V2

Python自动化数据处理程序-V2

Xiong.Luqiang

外盘期货历史高频tick数据涵盖CME、ICE等交易所的主要品种,包含能源、贵金属、农产品、股指和外汇期货 数据字段有交易日期、精确到毫秒的时间、成交价格、成交量、持仓量以及买卖方向标识 部分品种还提

外盘期货历史高频tick数据涵盖CME、ICE等交易所的主要品种,包含能源、贵金属、农产品、股指和外汇期货。数据字段有交易日期、精确到毫秒的时间、成交价格、成交量、持仓量以及买卖方向标识。部分品种还提供盘口五档或十档挂单数据。所有数据按交易日压缩打包,解压后为CSV格式,便于直接读取分析。 数据源:CMES金融数据库

c_hn_007

印尼语AI应用商店评论情感数据集29198条8款应用

印尼语用户评论情感分析数据集,包含29198条来自印尼区Google Play商店的AI应用评论,覆盖8款主流生成式AI助手:ChatGPT、Google Gemini、DeepSeek、Character.AI、Claude、Microsoft Copilot、Perplexity与Grok。采样采用平衡评分配额策略,防止类别不平衡偏置。文件为UTF-8编码的CSV,提供印尼语与英语双份情感标签:sentiment(1至2星为负面、3星为中性、4至5星为正面)与sentiment_en。适合印尼语文本分类、俚语与非规范文本处理、IndoBERT与IndoRoBERTa等本地Transformer微调、基于方面的情感分析(价格、内容过滤、幻觉、应用稳定性等维度)与技术接受度TAM研究。适用于自然语言处理教学、小语种情感分析与AI产品用户反馈研究。数据许可:MIT。

licy__
评论
收藏 已收藏
分享
返回顶部