OOPre hw-8
系统总体架构

这是一个冒险者管理系统,采用面向对象设计,主要包含物品管理、冒险者属性和关系管理、战斗系统以及金钱系统四大核心模块。
核心模块划分
物品系统
基础抽象类:Item(所有物品基类)
派生类:
Bottle(药水)→ 具体药水类型(HpBottle、AtkBottle等)
Equipment(装备)→ 具体装备类型(Sword、Magicbook、Armour)
工厂模式:Factory 类统一创建各类物品
冒险者系统
Adventurer 类:核心实体,包含:
基础属性(生命值、攻击力、防御力等)
物品和法术管理
背包系统(Backpack)
上下级关系网络
关系管理系统
树形组织结构(boss-subordinate)
支持盟友判断、帮助机制
词法分析器(Lexer)解析关系表达式
战斗与交互系统
物品使用机制(药水、法术)
战斗计算(考虑装备、关系约束)
经济系统(金钱获取与消耗)
设计特点
工厂模式统一对象创建
策略模式处理不同类型物品效果
组合模式管理冒险者层级关系
命令模式处理用户输入
迭代调整
- 引入背包(Backpack)类:使得冒险者可以携带物品,例如武器和药水瓶,并加入相关判断条件,实现只有在拥有并携带的情况下才可以使用的题目要求。
- 加入工厂(Factory)模式:更方便地创建正确的对象,用于生成正确的新的冒险者、物品、法术等类。
- 使用若干子类并加入枚举:通过父类和子类的联系,使得代码具有更强的可读性,并通过枚举,使得物品种类的判断更为方便。
- 加入指令处理(CommandProcessor)类:将读取的指令经过该类的识别,调用对应类的方法,实现所需求的输出,能够大大减少Main类的行数。
- 加入Lexer类:用于词法的分析,正确读取指令对应的内容,并传输给其他的方法,实现指令的影响。
Junit心得体会
- 使用Junit来测试自己的源代码,能够通过使用边缘极端数据,来测试代码的严谨性,避免小部分特殊情况无法实现的错误。
- 使用Junit能够单独测试某一个方法或者某一个函数,能够分开检查,在出现异常时能更快更方便地找到bug所在的位置,进行修改,大大提高了debug的效率。
- 通过Junit的学习,我学会了自检代码的重要方法,还明白了自检代码的重要性,能够在提交之前找到大部分的不合理之处。
OOPre学习心得
- 通过半个学期的OOpre的课程学习,我学会了Java编程的基础的语法,逐渐适应了从面向过程编程到面向对象编程的转变,通过针对某一类对象的处理来实现指令的影响,而不是通过函数的堆积和联系,增强了代码的可读性和可延展性,能够更好的进行迭代更新,实现更完整的设计。
对OOPre课程的建议
- 在中测时将未成功的数据点或者所有标准输入给出,更方便自行查找bug。