作业架构
- 核心实体类
Adventure:冒险者核心类,包含属性和行为
物品管理:getbot:拥有的药水,getequ:拥有的装备
botbag:携带的药水,equbag:携带的装备,arm:当前装备的盔甲,wea:当前装备的武器
关系管理:通过employer和subordinates维护关系树状图
战斗和援助:triggerAidEvent:触发援助事件,triggerSubordinatesAid:递归调用下属援助 - 物品相关
Item:所有物品的抽象父类,封装id和iscarried
Bottle:药水抽象类,子类包括Hpbot,Atkbot,Defbot,Manabot
Equipment:装备抽象类,包含ce,子类分为Armour,Weapon,Weapon派生出Sword和Magicbook
Spell:法术抽象类,包含manacost,power,子类实现cast,子类有Atkspell,Healspell - 工具类
- Controller:处理所有指令(我从main里移植的)
aa:创建冒险者
ab:添加药水
ae:添加装备
ls:添加法术
ri:移除物品
ti:携带物品
use:使用物品法术
bi:购买物品
fight,fight1,fight2,fight3:战斗,但是一个方法有行数限制所以拆分
find:查找冒险者
findUsableItem:查找可使用的物品 - Factory:工厂
creatBottle:创建药水
creatEquipment:创建装备
creatSpell:创建法术
creatItem:统一创建物品,包括药水和装备
迭代相关
- 第二次作业
初步架构了冒险者世界的部分功能,adventure,bottle,spell
第一次创建这么多文件放在src底下,而不是c语言所有代码都塞在一个文件里不太习惯
但是很快发现这样拆分的方便之处 - 第三次作业
给冒险者添加了属性,以及细分bottle - 第五次作业
对背包详细完善,需要区分携带和拥有的概念
以及加入战斗系统,细分装备类型,使用了工厂模式
这一部分的物品以及自己写在src里的各种函数名非常复杂,物品的关系也是,所以在写之前需要详细理解指导书,否则会犯很多错误(读题的重要性!!!) - 第六次作业
添加了雇佣关系,需要在战斗时利用递归确立两人的上下级关系
我上级的上级也是我的上级!!!此时也需要参与战斗援助 - 第七次作业
通过递归添加多人的关系图,非常复杂,有点像c语言带括号的四则运算
使用JUnit的心得体会
起先文件还小的时候觉得,还要在src好不容易写完后写这么多测试方法非常麻烦
之后确实依靠简单的测试方法测试出了一些难以找出的错误
可以有强针对性的对某种方法写测试文件,将错误快速定位
oop的心得
java的面向对象与c语言的面向过程非常不一样,主要体现在java会针对每种对象写出不同的文件,以及还有继承这一方法,使文件架构更加清晰明了,而c只有写出多个函数,用以减少main的字数
感觉java这样的形式更方便日后迭代升级
建议
有时候指导书实在是太长了,需要看特别久,等我看到题目,理解先前教学的到底有何意义时以及忘得差不多了,更希望先精简的写出题目,这样也会引发自主思考,再给出相关方法,可以通过什么实现要求。也不一定要给教程,可以鼓励上网自学
checkstye有时候非常莫名其妙,比如一个方法不允许超过60行(我最常见的错误点),导致我的架构本来很清晰,却不得不拆分的零零散散,徒增烦恼