北航2023面向对象先导总结

一. 结构设计

1. 最终架构设计

具体说明

(1)commodity 实现价值体总接口,实现价值计算或数量统计等方法

(2)Main主函数模块调用指令处理模块实现功能

(3)Bottle 类中实现药水的各种共同属性操作,并作为RecoverBottle,RegularBottle,ReinforcedBottle三种不同具体药水的父类。

(4)Adventurer类中实现对冒险者的各种操作,类中具有代表拥有物体的HashMap,实现背包功能和雇佣功能的HashSet,以及实现金钱计算的money属性

(5)Euipment类中实现装备的各种共同属性操作,并作为EpicEquipment,RegularEquipment,CritEquipment三种不同具体装备的父类。

(6)CommandDeal类中实现对指令的具体处理,分为BattleControl战斗指令处理,CommonControl普通指令处理,PriceControl商店及价值指令处理。

(7)Shop类中实现冒险者的买卖操作,以及买卖过程中各种量的计算过程

2. 迭代与重构过程

迭代

        第一次迭代:为冒险者增加背包相关的HashSet,实现携带功能

        第二次迭代:增加处理战斗日志的功能模块

        第三次迭代:增加commodity接口实现价值计算功能

        第四次迭代:增加商店实现冒险者买卖功能

重构

        第一次重构:刚开始处理背包相关功能时单独新建了一个类,且将其与冒险者的联系转为外部的哈希表,

        第二次重构:随着操作指令的变多,输入部分处理已经逐渐超过代码风格要求的行数,因此对不同类型的指令新建处理方法,以使模块清晰且各个方法行数减少,这样的重构也为后续增添其他指令。

 二. JUnit体会

        JUnit的使用使程序能够全面且细致地检测各个方法的正确性,虽然到迭代多次以后写JUnit就较为繁琐(),但是在较大的java工程中JUnit确实能够帮助确定问题所在,而不至于在遇见bug时完全无从下手。

        写JUnit时要注意构造数据的全面性,除了要有尽可能高的行覆盖率以外,还应该尽可能覆盖到每个分支情况,即保证分支覆盖率,确保程序检测无死角,无漏洞,虽然这可能会让测试写起来更繁琐

三. 学习心得

        思维提升:这学期面向对象先导课的学习,使我初步了解了面向对象封装,继承,多态的特点,让我从原来简单的面向过程编程思维脱离出来,转而能用自己规划的程序的架构来思考并实现。面向对象“分而治之”的编程思维也使我模块化与层次化的思想得到了增强。

        能力提高:  历经将近七次的迭代开发,从原本C语言最多几百行的程序,到现在几千行的较大工程,使我的编程能力得到了提高,代码风格得到了规范,并且初步掌握了调试较大工程的能力。

        工具使用:接触了git,IDEA等工具的使用,在后续碰到之后能有简单使用的能力,知识面得到了拓展。

四. 课程建议

        应当多普及git相关知识,比如交作业时可以有多种情况,要求以适当的git方式提交,让学生能更加熟练地掌握版本管理相关技巧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值