242
社区成员




在最终架构中,代码利用Main作为程序入口,读取指令并调用Command中的方法进行处理。
Command类可对普通指令和战斗信息进行分别处理。对普通指令,该类会寻找对应ID的冒险者并调用Adventurer类中的方法;对战斗信息,该类会调用类内的方法进行解析,实例化新的Attack并按日期存储。
Adventurer类用于管理冒险者所拥有的Product,Bottle,Equipment,Food均继承自Product,便于统一管理。
Factory用于实例化新的Product对象,可以被Adventurer和Store直接调用。
Store作为商店,用于冒险者售卖和购买商品。
最初的两次作业中,指令种类较少,可以直接在Main类中对指令进行解析。
在第四周的作业中,为减少Main类的行数,我在代码中添加了Command类,用于解析指令。同时,本次作业中我还添加了Attack类,用于实例化存储战斗信息的对象。
在第六周作业中,我对Bottle类和Equipment类添加了对应继承。
在第七周作业中,我利用单例模式构建了Store类,用于实现物品的出售与购买。为便于统一管理冒险者的物品,我构建了Product类作为Bottle,Equipment和Food的父类,并构建Factory类用于构造对象。
Junit作为一个很强大的测试工具,可以对类中的每个方法进行单独测试,帮助我发现了程序中的一些bug。同时,在追求分支覆盖率达标的过程中,我对代码的逻辑有了更深的了解,这一过程对提升正确率起到了很大的帮助。
在后期的作业中,构建测试数据成为了一个比较复杂的过程,需要在满足分支覆盖率的同时尽可能地构造边界数据(所以会有一些没有作用的测试),给我带来了很大的工作量。
java语言将C语言中的结构体和函数延伸为类和方法,引入了面向对象这一思想,将现实中的物体抽象为对象这一概念,增强了代码的可读性。同时,面向对象编程具有封装,继承和多态的特性,极大地提高了代码的可扩展性和灵活性,为迭代开发提供便利
java语言和C语言有一定的相似性,但是它引入了更多的库,可以使代码更加简洁(真的比C语言好写多了,就比如HashMap,真的好用)。
1.希望课程在最开始能涉及到一些java语法的内容。
最后,十分感谢老师和助教的付出~