2023秋OOPre课程总结

一.最终构架设计

类名描述功能
Main主类调用Solve类

Solve

解决类处理输入数据,并做出处理,输出结果
Adventurer冒险者类冒险者类,对冒险者的物品和属性进行操作,记录每个冒险者的一切
Food食物类对冒险者的食物进行创建和调用并加入到冒险者的类中
Equipment装备类对冒险者的装备进行创建和调用并加入到冒险者的类中,该类包含3个子类RegularEquipment,CritEquipment,EpicEquipment,子类包含更多的属性
Bottle药水瓶类对冒险者的药水瓶进行创建和调用并加入到冒险者的类中,该类包含3个子类RegularBottle,RecoverBottle,ReinforcedBottle,子类包含更多的属性
Dairy战斗日志类对冒险者进入战斗模式并且成功战斗的一切操作进行记录,包含所有的冒险者的战斗日志
Store商店类对冒险者拥有的物品进行买卖,并记录买入物品的性质和价格,再通过记录的数据创建卖出的物品
Attack/Attacaked攻击、被攻击类属于每个冒险者类,对冒险者的攻击和被攻击进行记录

首先对于数据的处理,在每一种处理方式读入后,再进行数据的读入,而不是整体的读入放入栈中,优点是数据处理更加简单,节省空间,不足在于写junit时很麻烦,不知道该怎么办。

同时在整体的架构中,对于冒险者,食物,装备和药水瓶的单个的处理都尽可能放在本类当中,但对于多个类同时进行处理时,写的比较复杂,此时代码的可读性就比较差了。

二.迭代日志

第一次迭代

迭代比较简单,只是对冒险者包含的Food,Equipment和Bottle进行添加和删除的操作,对整体的结构没有进行改变。

第二次迭代

添加了“携带”这一概念,我的想法是在冒险者类中新建三个Hash来存储,操作也比较简单,但后续的删除就比较麻烦,要考虑是否完全删除了该物品,虽然我还是用最初的方法没有改,但现在我觉得在建一个类专门放置“携带”的物品可能会让代码更加简洁,可读性也会更强。

第三次迭代

新增战斗模式,我采用新建Dairy的类来存储战斗的信息,也是比较简单,难点在于简化代码,我在这一部分写的是最难受的,代码可读性比较差主要就是这一部分的原因,还新建Method类来存储我的方法类,看的我好难受,但也没办法。

第四次迭代

分别添加了Bottle,Equipment的子类,以及冒险者的雇佣关系,还要计算价值体,比较好的方法就是递归了,也可以在每步操作都计算价值体,这样可以不递归直接得出价值体,但是很麻烦建议不要这样做,并且在下一次迭代中,这样好想就不可行了。

第五次迭代

添加Store类,对物品的买卖进行处理。还是很好理解的。

三.junit的心得体会

  • 使用junit进行单元测试可以检查最底层类的正确性。起到一定的效果,但对于复杂的类方法来说,要考虑的方面太对了,还要覆盖到每个分支,很难做到对该类的全覆盖,如果不进行全覆盖,写junit的意义就不大了,我觉得可以对简单的类方法进行junit的编写,复杂的就算了。
  • junit只能检查你写的代码的错误,感觉意义不大,大多数编译器都会检查出来,最难解决的是逻辑错误,编写junit是无法解决的

四.oopre的心得体会

  • 学习这门先导课让我对代码直接面向对象有了了解,通过类直接对操作对象进行处理,然后直接调用。
  • 还有对面向对象的封装,继承和多态的理解更加深刻了,知道了在什么情况下使用他们,还有对接口的理解(虽然我觉得没什么用)。
  • 最后还是觉得这课开的很有意义

五.简单建议

在课上让我们注意整体的框架,却什么框架结构都不讲,希望以后做完迭代时,可以发布一点比较好的框架结构,不至于到了最后想重构框架是时发现代码量过多,想改也来不及改了。真的希望多讲点框架结构的知识,而不是光说让我们注意。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值