OOPre 课程作业总结与学习心得

李耀宗-24231212 2025-11-17 15:18:27

一、作业最终架构设计及迭代调整

1. 最终架构设计

采用面向对象核心设计,分为五大模块:

  • 实体类:Adventurer(封装冒险者属性与行为,如战斗、使用物品)、Bottle(药水瓶基类,含 HpBottle 等子类)、Equipment(装备基类,含 Sword、Magicbook、Armour 子类)、Spell(法术类),实现数据与行为封装。
  • 关系管理类:Employer(管理雇佣关系,判断上下级与盟友)、EmploymentRelation(存储单次雇佣关系),处理层级逻辑。
  • 工具类:Factory(工厂模式创建药水瓶 / 装备,解耦创建逻辑)、Lexer(词法分析,处理 lr 指令字符)、Parser(递归下降解析,转换 lr 指令为雇佣关系)。
  • 测试类:AdventurerTest、EmployerTest 等 JUnit 测试类,覆盖核心功能验证。
  • 入口类:Main(解析输入指令,调用对应模块处理)。

2. 迭代调整与考量

  • 初始迭代(1-2 次作业):仅实现基础实体类(Adventurer、Bottle、Equipment)与容器管理,满足物品增删,架构简洁以适配基础需求。
  • 中期迭代(3-5 次作业):引入继承(装备 / 药水分支)、背包系统与战斗逻辑;新增 Factory 类统一创建物品,避免重复代码;Adventurer 类新增体力、魔力、金币等属性,添加携带、战斗、购买方法,确保功能扩展时原有代码低改动。
  • 后期迭代(6-7 次作业):新增雇佣关系与援助机制,通过 Employer 类管理层级;添加 lr 指令解析,拆分 Lexer(词法)与 Parser(语法),保证复杂指令处理逻辑清晰,符合 “单一职责” 原则。

二、使用 JUnit 的心得体会

JUnit 大幅提升了代码可靠性与开发效率:

  1. 精准验证逻辑:通过 @Test 注解编写用例,可针对性测试核心功能(如 Adventurer 的战斗伤害计算、物品携带规则),快速定位错误。
  2. 保障迭代安全:每次代码修改后,重新运行测试用例即可确认改动未影响原有功能,降低迭代风险,尤其适合多次作业的迭代开发。
  3. 覆盖分支漏洞:借助测试覆盖率分析,能直观发现未覆盖的代码分支(如异常指令处理),减少潜在 Bug。

三、学习 OOPre 的心得体会

从面向过程到面向对象的过渡,是本次课程的核心收获:

  1. 思维转变:面向过程注重 “步骤执行”,而面向对象通过封装、继承、多态,将数据与行为绑定(如 Adventurer 类同时存储属性与战斗方法),代码模块化更强,更易维护。
  2. 设计模式实践:工厂模式(Factory 类)解耦物品创建,避免重复 new 操作;观察者模式思想(援助机制中下级对上级的治疗响应),让代码扩展更灵活,深刻体会到 “好设计降低迭代成本”。
  3. 迭代开发意识:每次作业基于前序代码扩展,需提前考虑可扩展性(如 Bottle 的 effect 属性预留,为后续使用功能铺垫),培养了 “长远设计” 思维。

四、对 OOPre 课程的建议

  1. 建议增加 1 节设计模式实战课,结合作业场景(如装备创建、指令解析)讲解模式应用场景,帮助理解 “何时用” 而非仅 “如何用”。
  2. 建议为 lr 指令解析提供更多调试案例(如复杂嵌套结构的 lr 输入与预期输出),帮助快速定位词法、语法解析错误。
...全文
143 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

271

社区成员

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

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