OOPre第八次作业

毛思睿-24371337 2025-11-12 22:42:36

1 最终架构设计

1.1 输入处理模块

Main, Lexer, RelationshipParser

  • Main是程序入口,负责命令分发和流程控制
  • Lexer是实现词法分析器,解析关系表达式中的标识符和分隔符
  • RelationshipParser是语法解析器,处理雇佣关系的嵌套结构

1.2 冒险者核心模块

Adventurer

  • 管理冒险者基本属性(生命值、攻击力、防御力、魔法值、金钱)
  • 维护物品集合(药水瓶、装备、法术)
  • 处理战斗逻辑和使用物品行为
  • 管理复杂的雇佣关系网络
  • 实现状态检查和死亡处理机制

1.3 物品系统模块

Bottle, Equipment, Spell

  • Bottle是药水瓶基类,管理治疗效果和使用状态
    • HpBottle、AtkBottle、DefBottle、ManaBottle
  • Equipment是装备基类,区分武器和防具,管理战斗加成
    • Sword、Magicbook、Armour
  • Spell是法术类,区分为治疗法术和攻击法术
    • HealSpell、AttackSpell

1.4 关系网络模块

设计模式: 隐式的组合模式处理树形雇佣关系
功能特性:

  • 支持多级雇佣关系的建立和维护
  • 自动处理冒险者死亡时的关系清理
  • 实现盟友识别和援助机制

img

2 迭代中的架构调整

第三次作业:实现物品管理

  • 实现物品的添加、移除、使用等基本操作
  • 采用简单的状态管理和死亡检测机制

第五次作业:引入装备系统与战斗机制

  • Adventurer中增加carriedWeaponcarriedArmour等字段
  • 实现getFinalAtk()getFinalDef()等装备加成计算
  • 新增fight()方法处理复杂的战斗机制
  • 引入金钱系统和物品购买功能

第六次作业:引入雇佣关系

  • Adventurer中增加employersemployed列表
  • 实现isSuperiorOf()isAllyOf()等关系判断算法
  • 新增getAllSubordinates()方法获取所有下属
  • 在使用物品时增加关系约束检查

第七次作业:引入编译器设计模式

  • 新增LexerRelationshipParser类处理复杂输入
  • 重构命令处理流程为统一的processCommand方法
  • 完善死亡状态管理,自动清理关系网络
  • 增强异常处理和边界条件检查

3 JUnit的心得体会

JUnit的存在很大程度上提高了我的代码质量和功能实现的准确性。当代码出现问题(WA了)时,我可以可以更为迅速地定了功能实现的时序错误或逻辑漏洞的位置,特别是在架构迭代时,我可以确保新增功能不影响原有逻辑。
借助覆盖率分析,我学会了设计全面的测试用例,尤其注重边界条件的验证,有效提升了代码健壮性。JUnit的使用让我从被动的调试转向主动的预防,更在编写测试用例的过程中加深了对题干需求的理解,从而减少因误读题目导致的实现偏差。这种测试驱动的开发方式,极大地提升了我的编程效率和代码可靠性。

4 学习OOPre的心得体会

在OOPre的学习中,我逐渐体会从面向过程到面向对象编程思维的转变。与大一学习的C语言中"先做什么后做什么"的流程化思维不同,Java更偏向为以对象为中心构建系统。
我最大的收获是理解了封装的价值——将数据和操作封装在类内,通过清晰的接口交互。在实现物品系统时,我运用接口统一了不同类型物品的使用方式,体会到面向对象设计的优雅与灵活。这种思维方式让我在设计复杂系统时,能够更好地把握整体架构,为后续的软件开发奠定了坚实基础。
但是,在这半个学期中,我也仅仅只是踏入了面向对象编程的大门,期待在下学期的OO课程中能对面向对象有更深刻的体悟。

5 对OOPre课程的简单建议

  1. 希望在每次作业之后看到每次作业的优秀架构设计。作为从面向过程过渡到面向对象的学习者,我在起步阶段遇到的最大问题就是对整体架构缺乏概念。如果能在课程早期看到一些经典的设计范例,我觉得对我建立正确的设计思维很有裨益。
  2. 希望课程中可以增加更多关于Git等版本管理工具的讲解。作业过程中的的多次迭代让我切身感受到版本管理的重要性。若能更系统地学习分支管理、提交规范等最佳实践,将能更好地支撑未来的项目开发和协作。
...全文
31 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

270

社区成员

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

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