OOPre课程总结——第八次作业

OOPre课程总结——第八次作业

一、架构设计

整体架构

在这里插入图片描述

构造历程解释:

前三次作业只需使用Adventurer,Equipment,Bottle,Food类,冒险者携带的物品也作为其属性,用新的容器管理,现在看来新增Bag专门处理携带操作可能比我的实现便捷;第四次作业增加了Blog类记录战斗信息,第六次为Equipment,Bottle添加了子类并增加Commodity接口方便管理所有价值体。第七次加入了Shop类记录购买。

总结反思:

  • 在前五次迭代过程中我都没有专门设置管理输入指令的类或方法,将不同指令分类用不同的静态方法处理(给自己之后迭代造成了无比大的困难)。前几次任务量不重且Junit写起来方便,便只是在Main类中加入执行指令的静态方法,导致:1.Main类里的处理函数很不美观。2.Junit不好写且降低覆盖率。
  • 在出现了Bottle,Equipment,Food之间有众多相同操作导致代码重复性较高,当时考虑过继承(当时不会接口),但由于诸多不确定性没实现。之后果然还有专门的继承的一次迭代。前几次作业经常因为不知道后续迭代会是什么模式而给自己埋下大坑。
  • 之后写迭代因为Main没到60行一直懒得改读入处理,但直到第六次作业Junit实在顶不住,于是我直到那时才进行了一次较大的改造,使用Match类和cmd方法单独处理输入,好处有:1.写Junit较为轻松 2.输入处理和其他功能的分离使得代码工整易读不少。有些遗憾自己没能早点做调整。
  • 在对FightBlog功能部分处理时依然将一些处理代码放在Main里,没有做好功能之间的解耦,极大增加了之后迭代和测试的困难性。之后在Shop的实现就先思考了函数与功能的分配,改善了很多。
  • 第六次迭代我使用了Commodity接口,向下实现四种价值体,方便冒险者对其价值体的管理以及打印输出,例如使用统一的Print函数进行打印价值体属性的操作十分方便。

二、使用Junit的心得体会

Junit的优点:

JUnit作为代码的一部分,与程序代码一样易于维护。当应用程序的需求发生变化时,只需更新相关的测试用例。测试和覆盖率的反馈也很及时。

心得:

在数据处理工作做的相对工整的情况下Junit还是好写的,然而本次课程我构造数据的方法没有掌握地很好,导致前几次写Junit,构造数据的时候比较痛苦。

虽然写Junit要费脑筋想数据,但如果做到把每种情况都覆盖到(而非只达到覆盖率),还是可以减少bug的产生。

三、学习OOpre的心得体会

从关注步骤和过程的POP到注重对象属性和行为的OOP,经历编程范式之间切换,拓宽了我的编程思维模式。通过将问题划分为对象、类和关系,可以更灵活、更自然地表达问题。第一次接触数据和方法封装在一起,类和对象给了我解决问题全新的视角。不同于C语言更偏向底层,java语言提供了更强大的功能让我们注意力集中在大型复杂的设计和实现上。

继承:良好的代码复用性和扩展性,子类可以利用父类的功能而无需重新编写相同的代码,并在此基础上添加新的功能。继承同时是多态的基础,通过继承实现的多态性使得一个对象可以在不同的上下文中表现出不同的行为,增强了代码的灵活性。

接口:初步了解抽象方法通常由实现接口的类来具体实现,是实现了多继承的一种形式,函数也可以更灵活地适应不同的实现。

设计模式:对于在设计中反复出现的问题的解决方案的经验总结,是一套通用设计解决方案。这些模式提供了一种共享的语言和方法,可以帮助我们更有效地沟通、设计和实现可维护和可扩展的代码。

另外,我认为这门课除了让我们初识面向对象的基本思想,锻炼了我们多次迭代和扩展代码的能力,同时也培养了我应对各种琐碎细节要求和耐心寻找错误的能力。后几次迭代任务量增大,需要集中注意力编写,如果不保持头脑清醒,后期debug是很痛苦的事情 。

四、课程建议

  • 感觉上课内容和迭代内容有些脱节,每次迭代任务可能不用课上所讲的面向对象知识也能解决。
  • Junit很难做到所有情况都覆盖全,大多数最后还是通过断点和数据debug。

最后,十分感谢老师和助教们的辛勤付出!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值