OOPre课程总结

邵聪-24231205 2025-11-06 23:34:13

1.作业最终的架构设计, 在迭代中的架构调整及考虑: 

 

 主要类包括:MainClass主类,Adventurer冒险者类,Equipment装备类(包括两个子类:Weapon和Armour类,其中Weapon类包括两个子类Sword和Magicbook类),Bottle药水瓶类(包括四个子类),Spell法术类(包括两个子类),其中Equipment装备类,Bottle药水瓶类,Spell法术类均为Item类子类

辅助类包括:Factory工厂类,Lexer文字解析器类

接口:Usable类

代码主要通过MainClass主类读取输入,根据输入调用Adventurer类的函数完成指定操作:

"aa" :新增冒险者:冒险者存储在MainClass的HashMap中,通过Adventurer类的Adventurer函数初始化。

"ab":新增药水瓶:药水瓶以Usable接口的形式储存在Adventurer类的inventory的List中,通过Bottle类的Bottle函数初始化新建。

"ae":新增装备:装备以Usable接口的形式储存在Adventurer类的inventory的List中,通过Equipment类的Equipment函数初始化新建。

"ls":新增法术:法术以Usable接口的形式储存在Adventurer类的inventory的List中,通过Spell类的Spellt函数初始化新建。

"ti":携带物品:Item存在参数carried(初始化为0,Spell初始化为1),Adventurer类的Takeitem函数将Item的carried参数修改为1,并加入Adventurer类的LinkedList中(满足背包要求)。

"ri":移除物品:将Item从Adventurer类的inventory的List中移除,并判断Item类型,若携带,从Adventurer类的LinkedList中移除。

"use":使用物品:先判断是否携带(carried==1),再判断是否为Spell类:若是判断mana是否满足,否则调用RemoveItem函数移除(Spell无需移除),再通过Adventurer类的Eneffect函数为目标冒险者施加效果。

"fight":打架:判断发起者武器类型,再判断fight是否成功,再根据结果使用Eneffect函数为目标施加效果。

"bi":购买物品:读取冒险者金币数量,通过Factory工厂类新建物品

"ar":新增关系:在Adventurer类中有 Adventurer employer 和 List<Adventurer> subordinates 分别储存雇主和雇员,新增关系需要同时修改雇主的 List<Adventurer> subordinates 和雇员的 Adventurer employer 。

"rr":删除关系:在Adventurer类中有 Adventurer employer 和 List<Adventurer> subordinates 分别储存雇主和雇员,删除关系需要同时修改雇主的 List<Adventurer> subordinates 和雇员的 Adventurer employer 。

"lr":批量导入关系:通过栈的数据结果完成,借助课程组提供的Lexer代码。

 

2.使用JUnit的心得体会

JUnit对写代码及debug存在一定帮助,可以自己构造测试用例来测试自己的代码是否正确,尤其可以构造一些边缘数据来测试极端情况。但需要满足覆盖率,同时本地和提交存在差异会导致代码通过存在问题,希望可以降低测试需要满足的最低覆盖率,减少JUnit对测试通过造成的影响。

 

3.学习OOPre的心得体会

本课程通过迭代开发,最终开发了一个简单的冒险者游戏。在每次迭代过程中,都有新知识的运用和旧代码的维护及更新。通过课程提高了我JAVA开发的能力,有了初步面向对象的意识,这些就是OOPre课程带给我的收获。同时体会到了迭代开发的挑战性,认识到了做好初期规划,提高可开发性的重要。

 

4.对OOPre课程的简单建议

每次迭代开发难度及复杂度不一,难以预料每周任务压力,可以平衡下每周作业强度


 

 

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

270

社区成员

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

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