BUAA-OOpre课程总结

我太爱OOP啦,非常不错的一次体验,好想继续迭代,但是计组让我喘不过气来捏 😭😭😭

最终架构

我的整个架构中的个数并不多,仅在前几次迭代给BottleEquipment 增加了几个子类,并没有对战斗、副本等操作增加新的类或者接口,而是全部集成在了Adventure类中,可能实现上简单,但是这样导致我的Adventure类过于臃肿,其下的子方法过多

这样不利于调试和增量开发以及类和方法的复用,归根结底还是有点懒,懒得折腾,直接在Adventure类下写一个方法得了🫠

以后还是要多多改进

迭代调整

Mainclass中的每一种操作增加对应的case方法,传相应的参数进去。这样使得整体结构较为清晰,也不会超过方法的行数

使用Junit的心得体会

  • 使用Junit可以很方便快捷地进行单元测试,从而知道一个方法是否正确执行,这样可以让我们在整体运行测试之前,先对各个单元进行充分测试,很有效地降低了测试的难度。
  • 同一类方法可以copy一些语句,比如测试Bottle类的许多方法,都需要我们先实例化一个饼子,这时候就可以写一个通用的模版,从而节省时间
  • 不同的类测试有先后顺序,应该先测试基本的独立的方法,再测试需要调用该方法的方法。

OOpre心得体会

在本课程中,我经历了从面向过程编程(POP)到面向对象编程(OOP)的转变。这一转变让我对编程有了更深的理解。

  • 从前我们写C语言程序,通常会注重过程,也就是一系列按顺序执行的步骤。程序通常是围绕“做什么、怎么做”来设计的,主要通过函数来组织代码
  • 但是OOP要求我们把问题抽象成具有属性和行为(方法)的对象,并让这些对象之间进行交互。这种方式更加贴近我们对现实世界的认知,我们所要解决的问题也更加切合实际,比如指导书中的宠物店、迭代中的类似原神的冒险者游戏,都很贴近我们的生活
  • 从面向过程转向面向对象时,最大的挑战是要学会将问题抽象为一个模型,而不是简单地按顺序编写代码。(本课程中这一点指导书已经帮我们完成了)这种抽象能力的提升可以帮助我们更好地组织代码的结构,有一个全局的掌握,并提高代码的复用性和可扩展性
  • 面向对象编程真正让我感受到“模块化”的威力。当项目规模变大时,面向对象的设计方式使得整个系统更容易理解和扩展,同时,由于封装性的提高,对象内部的修改对外部代码影响较小,代码的可维护性也大大提升

建议

  • 希望能够指导书的知识讲解与题目分隔开,从而更加清晰
  • 指导书中,对于一些比较绕的文字表述,希望能够提供一些例子来具体说明,有时候纯文字确实有点抽象

BUAA-OOpre课程总结
http://pzhwuhu.github.io/2024/11/09/OOpre课程总结/
本文作者
pzhwuhu
发布于
2024年11月9日
更新于
2025年4月18日
许可协议