2025 OOpre课程总结

吕世英24373352 2025-11-05 19:44:50

 

整体架构介绍

核心围绕“冒险者(Adventurer)”展开,包含冒险者的创建、属性管理、装备与物品使用、法术施放、战斗以及雇佣关系维护等功能。通过解析输入指令,系统能够执行一系列操作,如添加冒险者、使用药水/法术、处理战斗及上下级关系等。

主要类及其关系如下:

Adventurer:冒险者类,封装了冒险者的基本属性(生命值、攻击力、魔力等)和行为(携带物品、使用装备、施法等)

Equipment:装备类,实现`Backpack`接口,包含装备ID和效果值(CE),衍生出`Weapon`(武器,如`Magicbook`)和`Armour`,通过继承实现装备类型的扩展。

Bottle`:药水类,实现`Usable`和`Backpack`接口,包含药水ID和效果值,衍生出`HpBottle`(生命药水)、`AtkBottle`(攻击药水)等,通过重写`applyEffect`方法实现不同效果。

`Spell`:法术类,实现`Usable`接口,包含法术ID、魔力消耗和威力,衍生出`HealSpell`(治疗法术)和`AttackSpell`(攻击法术),通过多态实现不同法术效果。

Action`:行为处理类,封装了各类指令的执行逻辑,如药水使用(`ActionBottle`)、法术学习(`ActionSpell`)、战斗处理(`handleFight`)、雇佣关系管理(`handleAddRelation`等),是系统的“控制器”。

Input`:输入解析类,负责读取并解析用户指令,转换为可处理的指令列表。

Main`:主程序入口,通过循环处理解析后的指令,调用`Action`类完成具体操作。

迭代过程中架构也在不断调整,比如添加冒险者之间的雇佣关系以及上下级关系,对Bottle,Spell,Action等类进行扩充。迭代过程中曾一度想过重构,因为由上图可见,架构比较普通,稍显粗糙,以及扩展性不强,不过最后还是在迭代过程中选择不断慢慢优化(重构还是太费时间了),最终费尽心思的删代码下,用if-else语句实现了main函数里少于 60 行

使用JUnit的心得体会

如果能够好好利用JUnit,确实能通过自己测试发现很多问题,从而de出一些所谓比较隐蔽的bug,比如涉及雇佣关系的时候,如果A是B上级,B是C上级,B死了之后,A也不是C上级了,B和A,B和C雇佣关系也解除...)涉及到一些比较细节的问题,自己编写对应的测试确实很有帮助。

OOPre的心得体会

初始学oopre是很抱怨checkstyle的,但到后面,确实发现很有意义,帮我改掉了之前随意命名,换行,空格等很多代码不规范地方,坏毛病改掉之后看自己迭代最终的代码确实很有成就感,确实是通过不断的迭代作业,一次又一次的中测强测,学到了很多很多有意义的东西(继承,多态,工厂...)

对OOPre课程的简单建议

对于debug 以及填充代码的任务是否可以再进一步开发一下?(让每一次作业都更加具有意义一些!

很棒的课程!

 

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

228

社区成员

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

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