OOPre课程总结博客

解忻泽-24371045 2025-11-11 14:53:22

一.作业架构和迭代中的调整

作业架构

        在作业中,我使用了结构化和层次化编程,在MainClass中调用Operation类,Operation类中分别调用AddAdventurer、AddBottle、AddEquipment、LearnSpell、RemoveItem、TakeItem、Use、BuyItem、Fight、AddRelation、RemoveRelation等类来实现不同的指令。

        使用Adventurer类来声明冒险者,包含AdventurerAttribute、Stuff、TakingStuff、Spells、Amap等类,表示冒险者的各个内部属性。

        使用Bottle和Equipment两个类来声明物品,包含AtkBottle、DefBottle、ManaBottle、HpBottle、Weapon、Armour等子类,表示不同种类、属性的物品。

        使用Spell类来声明法术,包含HealSpell、AttackSpell等子类,表示不同种类的法术。

        AddAdventurer实现“aa”指令;AddBottle实现"ab“指令;AddEquipment实现"ae"指令。

        LearnSpell实现"ls”指令。

        RemoveItem实现"ri"指令,调用RemoveBottle和RemoveEquipment类。

        TakeItem实现"ti"指令,调用TakeBottle和TakeEquipment类。

        Use实现"use"指令,调用CanUseSpell、UseSpell、UseBottle、GetBottleEffect等类,其中CanUseSpell用于判断法术是否可用。 

        BuyItem实现"bi"指令,调用AdventurerBuyItem类。

        Fight实现"fight"指令,调用FightMagicBook和FightSword类,FightMagicBook调用SuccessfulFightMagicBook类,FightSword调用SuccessfulFightSword类。

        AddRelation实现"ar"指令,RemoveRelation实现"rr"指令。

        此外,还有Kill类处理冒险者死亡的情况,GetAllEnemies、GetAllFathers、GetAllSons、GetAllFriends等类用于获取关系,TryToHeal类用于援助。

迭代中的调整

        在添加物品携带功能时,对Adventurer类进行了重写,将原本的内部属性写入AdventurerAttribute,并添加了TakingStuff等类。

        在添加关系功能时,对Fight类以及相关的类进行了重写,调整了判断战斗成功的顺序,以及判断后的参数修改顺序和修改方法。

二.使用JUnit的心得体会

        在使用JUnit的过程中,我对JUnit的一些功能有较深刻的感受。

        与直接使用标准输入输出相比,JUnit通过编写测试代码进行测试,这意味着编写好测试程序后可以实现接近自动化的测试,而且可以通过进行随机数据的编写实现自动生成测试数据,使测试更广泛、有效。

        JUnit可以对不同的类进行独立的测试,与标准输入输出测试相比,更容易发现特定位置的错误,便于定位错误。

        JUnit提供了类覆盖率、方法覆盖率、行覆盖率、分支覆盖率等数据,对于测试的广泛性提供了参考,便于评估测试数据的有效性。

三.学习OOPre的心得体会

        对我而言,学习面向对象的思想带来的最深刻的感受是封装的思想。通过将不同的功能写入不同的模块并封装,外部的模块只能通过接口和方法来访问内部的模块,一方面可以保证内部模块的安全性,另一方面更容易进行修改与维护。

        此外,同一方法在不同的情境下可以被以不同的形式调用,这一多态性使得内部模块的泛用性大大提高。

        现在,我已经将面向对象的方法作为我的思维习惯,这将对今后构建软件系统的过程产生巨大帮助。

四.建议

        希望课程组能将bug修复的环节做得更加完善。

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

270

社区成员

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

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