2023秋 面向对象先导课程总结

2023秋 面向对象先导课程总结

最终架构设计

在这里插入图片描述

类的介绍
Main: 程序的入口,读入指令,调用Adventure中的各种方法实现目的。 
Adventure: 冒险者类。
Bottle: 药水类, 实现三个子类如下。
	RegularBottle:普通药水类;
    RecoverBottle: 百分比药水类;
    ReinforcedBottle: 强化药水类;
Equipment: 装备类, 实现三个子类如下。
	RegularEquipment:普通装备类;
    CritEquipment: 暴击装备类;
    EpicEquipment: 史诗装备类;
Food: 食物类。
Commodity:价值体接口,Bottle,Equipment,Food,Adventure均接入此接口。
Bag: 背包类, 用于存放被携带的物品。
Logs: 战斗记录汇总类,存放所有的战斗记录。
Log: 战斗记录类, 代表某种战斗记录。
LogAttack: 一对一战斗记录类。
LogAoe: AOE战斗记录类。
LogBot: 使用药水记录类。
Store: 商店类, 采用单例模式用于实现一个商店.。
迭代中的调整及考虑
  1. 刚开始写前三次作业时,由于不知道如何处理大规模的if-else语句,导致main方法十分臃肿。在第三次作业时,对此进行了一些调整。我优先考虑到的是区分每个指令,所以我在Main类中新建了if-case方法,用来存放if-case语句,示例如下图
    在这里插入图片描述
    后来随着type的不断增大,if-case方法也不够装下所有情况,所以我又逐个把每个case都单列成一个个方法来节省空间。效果如下图。在这里插入图片描述
  2. 在第六次作业之后,我开始意识到大量行为(方法)相近的类造成了代码冗余(屎山),于是采用了继承和接口来使代码结构更清晰简洁。
  3. 引入战斗日志之前,输入方面我采取先全部读入,再处理。战斗日志的出现让我决定改变这个思路,变成即读即处理,这样不仅处理战斗日志之更加简单,而且也更符合游戏的操作逻辑

使用Junit的心得体会

尽量在写完一个类后就处理其中的方法,至少保证内部不会出现问题。编写Junit过程比较繁琐,但是是一个很好发现问题的方法。

学习oopre心得体会

  1. 写代码之前先画出要创建的对象之间的关系,这样在写代码的时候思维更清晰,虽然不可避免出现bug,但既减小了写代码的时间,也使debug时有图可依。
  2. 面向对象语言侧重于创建和处理对象,处理事件时,通过划分事件中的对象,并对对象进行处理,最终达到处理事件的目的。这与面向过程语言直接顺序处理过程有着明显的不同。
  3. 代码风格很重要,至少让人心情不错。

对OOpre课程的建议

希望可以延长一下作业的时间,不同难度的作业的时间也许可以有所不同。 最后,感谢老师和助教团队的辛苦付出💓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值