OOpre 反思与总结

王正易-24373224 2025-11-13 19:43:59

OOpre 反思与总结

写在前面

虽然从零开始学 java,但是经过迭代式的开发,还是收获良多,包括但不限于 java 的容器以及 git 的使用。改变过去 C 语言设计面向过程的思想,转向对象。不断新增 Java 类,不断重构代码,痛并成长着。

一、设计与架构

本次OOpre采用迭代式开发模式,旨在让我们学会继承、接口、工厂模式、观察者模式、命令模式、正则表达式、递归下降。

设计架构

从第二次作业开始,只会使用单独的 Bottle 和 Equipment 类,到第三次开始使用继承,并用接口 Item 管理了这两个类的共性。第五次引入了创建新对象的工厂模式,同时整理了一下,将 Spell 类也实现 Item 接口,将 ManaCost 作为 Spell 的特殊属性处理,便于统一冒险者管理的所有 Item 的容器。第六次新增了观察者模式和命令模式,引入雇佣关系,将关系树上的变化统一交给 Adventurer 自身进行管理,将更多种类的输入处理统一交给 Invoker 类处理,进一步封装了数据。第七次深入思考了输入的解析问题,将 lr 指令的参数进行递归下降的解析。

二、JUnit使用心得

单元测试能对整个项目中某一个小单元进行细致测试,一般来说可以构造一个测试数据,然后在对应测试方法中对方法进行结果的测试,使用 assert 方法。然而也可以直接测试主类,让主类调用其余类的方法进行测试,但这样有一个很致命的问题就是难以发现错误的具体发生地点(虽然我很懒,之前一直这样)。JUnit最大的好处就是帮我们详细观察方法内部可能存在的问题,如果这样就浪费掉这样的好机会了。

三、OOpre 课程心得

通过学习 JAVA 语言,继承、封装、多态的特点完全改变了我以往写 C 语言时满脑子是怎么实现这个功能,写着一个又一个意义不明的循环,一个又一个单字母的变量名。面向对象将各个功能具体实现封装起来,需要的时候只需要调用方法即可,至于里面的具体数据,并不关心,只需放手给类内部自己操作。而过往面向过程,更像统管整个程序从小到大,每一个细节都要前后写的清清楚楚的写到程序里。甚至,比如说,在 C 语言中,处理两个相似问题时,我不得不写两个极其相似的不同函数,但是这两个函数调用的时候又容易记错函数名或者传入参数的意义,或者干脆传错了参数。而面向对象很好的解决了这个问题,只需要设计一个接口让不同的类去实现它就好。

另一个颇有收获的点就是代码的风格,之前写 C 语言时,虽然有意的在写一个意义明确的函数名,但实际上,变量名依旧难以理解,导致 debug 难度陡增。在这一次OOpre课程中,重新认识了代码的优良风格,从以往全小写的函数名,到现在规律的驼峰命名的方法和变量,从以往想起空行就空一行,忘了就连着写,到现在不自觉写完一个方法就空出一行。更加优雅的代码风格也让人写代码时心情愉悦(但愿

对 OOpre 课程的建议

爵士毫克,因为只是 OO 的先导课,讲的并不深入,如果讲的更深入一点会更好,但是可能有悖先导课的初衷。收获很多,下次还来(

...全文
49 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

271

社区成员

发帖
与我相关
我的任务
社区描述
2026年北航面向对象设计与构造
java 高校
社区管理员
  • 孙琦航
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧