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

输入–根据功能需求进行操作–输出
大致思路:首先根据将输入存到一个容器中,并根据输入格式的不同分为战斗和非战斗两种情况;在非战斗模块中,我们根据输入每行的type属性主要在Adventure类进行对应操作,在战斗模块中,我们将三种战斗情况根据正则表达式分类处理,并根据输出需求将相关信息存到Yiyuez容器中。在历次迭代中,当出现新需求时,我会根据功能需求或增加新的类,或增加新的属性和方法来满足需求。
迭代中的架构调整及考虑:
在2-3次作业中,我建立了Adventure,Main,Bottle,Food,Equipment等基本类,通过对java基本类型,类的属性,方法的调用和容器的管理知识的掌握完成功能需求。
在第4次作业中我增加Attacker,Beattack,Yiyuez类,来实现对战斗模式的记录与处理(当然这里我当时没考虑到Attacker,Beattack类并无新增的必要,但好处是减少了Adventure的代码行数)。
在第6次作业中我利用继承关系新增了CritEquipment,EpicEquipment,RegularEquipment,RecoverBottle,RegularBottle,ReinforcedBottle子类,并通过Commodity接口行为上统一管理Adventure,Bottle,Food,Equipment类的getprice等方法,并利用commodities容器统一管理这些类的对象,然后利用dfs算法完成对冒险者价值总和的计算。
在第7次作业中,由于我的Adventure,Main已超500行,因此我新增Tool类来疏解这两个类的功能,成功度过代码风格检查关卡。
2. 使用junit的心得体会
起初,我认为单元测试就相当于调试,并不太重视;当讲到行覆盖率,方法覆盖率,类覆盖率时,结合中测和强测数据的强弱(中测其实并不能保证代码没有漏洞),我认识到进行单元测试也能反映出代码的正确性,进行单元测试能让我重视测试并加强我编造数据的能力。
3.学习oopre的心得体会(包括但不限于从面向过程编程过渡到面向对象编程的体会)
oopre的收获:
1.学习了java 相关的语法知识(类,方法,属性,容器,输入解析的的结构性设计,正则表达式,继承,接口,设计模式)
2.学会了面向数据dubug的方法(print),数据少的理解+单步调试;数据多的在出问题的地方检查代码逻辑。
反思:
一些知识如工厂模式等理解不够深刻,然后在代码实现过程中也没有去实践尝试该知识,然后对正则表达式的利用也较少,对输入的分类处理基本是按照一些输入数据的特征,希望之后能多多运用该知识,然后熟练。
4.oopre课程建议
建议老师可以在第一次上课的时候多讲一些Java的基础知识。
本文讲述了作者在作业中逐步进行的架构设计调整,涉及Java类的创建、输入解析、战斗模块处理,以及单元测试的重要性和OOP的学习体会。作者强调了正则表达式、继承、接口和设计模式的应用,以及对基础知识讲解的课程建议。
354





