2025OOPRE课程总结

田云恺-24231207 2025-11-15 00:37:47

 OOPre课程学习总结

作业最终的架构设计及迭代中的架构调整

本次迭代作业我采用分层架构设计:

基础层:建立Bottle、Equipment、Spell等基础类,使用继承体系实现不同类型的物品,另外使用Factory统一创建对象。

核心层:Adventurer类承载核心业务逻辑,管理冒险者状态、物品、战斗等行为

 使用组合模式管理各种物品集合

关系层:EmploymentTree实现树形雇佣关系管理,同时建立援助系统。

解析层:Lexer和Parser实现递归下降解析,处理lr指令,Main类作为总控制器,协调各模块工作。

Main类:入口

Equipment

├── Weapon

│   ├── Sword

│   └── MagicBook

└── Armour

Bottle

├── HpBot

├── DeBot

├── AtkBot

└── ManaBot

Spell

├── AttackSpell (攻击魔法)

└── HealSpell (治疗魔法)

Function

  └── Equ、Bot、Spell

在迭代过程中,经历了一些调整 :

初期将所有逻辑集中在少数类中,后期按职责分离为物品、冒险者、关系管理等独立模块。

雇佣关系初期在Adventurer中直接存储上下级引用,后面引入了EmploymentTree专门管理关系,提高查询效率

指令解析开始时只是简单的字符串分割处理,后面引入完整的词法分析器和递归下降解析器,支持复杂嵌套结构

使用JUnit的心得体会:

在开发过程中,JUnit单元测试起到了至关重要的作用,对于复杂算法如雇佣关系检查、战斗伤害计算等,先编写测试用例明确预期行为,再实现功能代码,确保逻辑正确性。写完之后检查边界条件覆盖:通过JUnit系统性地测试各种边界情况,比如:冒险者死亡时的状态清理,援助行动,雇佣关系的各种情况等。

通过JUnit实践,我深刻体会到"代码未动,测试先行"的重要性,良好的测试是代码质量的基石。

学习OOPre的心得体会:

 首先是过程式思维:关注"如何做",按步骤组织代码,其次是对象式思维:关注"谁来做",按职责分配对象。

初期倾向于将所有数据公开,随着项目复杂度的增加,逐渐体会到封装的重要性。通过私有和公共,有效控制了数据的修改边界,减少了意外的副作用。

在物品系统设计中,深刻理解了"优先使用组合而非继承"的原则。虽然使用了继承建立物品类型体系,但在核心功能实现上大量使用组合,提高了系统的灵活性。

对OOPre课程的简单建议

建议在课程中引入一些真实世界的面向对象设计案例,让我们了解如何将OOP原则应用于解决生活中的问题。

通过这门课程的学习,我初步掌握了Java编程和面向对象的思想,建立了设计思维,这将成为我后续学习和工作中的宝贵财富。

...全文
37 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

271

社区成员

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

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