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


