309
社区成员
发帖
与我相关
我的任务
分享
整个冒险者管理系统可以分为5个模块:
MainClass, Lexer, RelationParser
AdvManage
Adventurer, Package
物品基类与具体实现
Factory, Usage, Observable, Observer
第二次作业:
第三次作业:
第五次作业:
第六次作业:
第七次作业:
在C语言里,我习惯使用printf进行调试,然而这种方法明显效率不高,且局限性较大。
而使用JUnit可以很好的改进测试调试过程,在后续作业中,我通过边界测试发现了生命值归零时的状态处理问题,后面又通过分析覆盖率发现了雇佣关系解除时的异常分支未被覆盖的问题。
JUnit的使用可以充分考虑各种边界情况,大大减少调试时间。
除此之外,在编写JUnit文档时,可以便于我对题目中情境更深刻的理解,从而避免了读题造成的失误。
最大的挑战来自于与C代码思维方式的差别。在C语言中,思考方式是先做什么,后做什么。而在面向对象编程中,需要首先考虑这个系统中有哪些对象,以及它们各自有什么作用。
比如作业中,面向过程思维会让我设计一个战斗函数,依次处理各种战斗逻辑;而面向对象思维需要将职责分配给Adventurer、AdvManage、Equipment等不同的类,每个类只用实现各自的功能。
同时我也体会到了封装的理念。比如Package类,将背包容量管理、物品存取等细节封装起来,对外只提供简洁的接口。这样涉及可以让逻辑更加清晰,也方便后面的功能扩展。
在实现物品使用系统时,最初为每种物品都编写了独立的使用方法。引入Usage接口,之后无论什么类型的物品,都可以通过统一的use方法调用。这种设计在添加新物品类型时只需实现Usage接口,无需修改其他代码。
增加整体架构设计分享:希望在课程初期就能提供一些优秀的整体架构设计案例,方便我们有一个初步的整体性认识。
完结撒花。通过这七次作业,我对Java语言编程和面向对象思想有了初步认识,但是工程化思维和系统设计能力还是相当缺乏。期待下学期的OO正课。