社区
2026年北航面向对象设计与构造
作业提交
帖子详情
总结与反思:OOPre给我带来了什么
郭灿超-24371169
2025-11-12 01:39:15
总结与反思:OOPre给我带来了什么
说在前面的话
经过了不到一学期的历练,这段oopre的长跑就要走向尾声了,我们那从零开始写的代码如今已经实现了颇为可观的功能,虽然我们没能真正实现幻想中那番剑与魔法的奇妙世界,但是跟随指导书一点点成长起来的“游戏”确实给我带来了许多收获和提升。趁着这第八次作业提交的机会,我也发表一下自己的理解体会。
“冒险者协会”的最终架构设计
从第二周就开始构造的“冒险者管理系统”是本次oopre贯穿始终的核心,我们像一个有规划的建造者,一周周有条不紊的完善这一系统,作为初学者,我自然没法写出多么惊艳简练的代码,虽然很冗长繁复,但还是把架构图放出来
丢人现眼
让大佬们过目
最初我们的任务只是处理冒险者(Adventurer)、其装备(Equipment)和药水(Bottle)的增删;接着我们引入了法术(Spell)并且加入了use指令,并通过新学的“接口”来将Item抽象出通用框架以适配更多对象;下一次任务中我们引入背包并细化了物品携带限制,引入战斗系统(fight),学习使用“工厂模式”来进行指令操作;紧接着我们的系统拥有了雇佣关系,在复杂的关系链处理下冒险者的攻击和增益不再盲目;最后通过学习“递归下降法”解决了一次载入多层雇佣关系的操作——随着每一次完成任务,虽然我有时只能获得部分分数,但是看着这出自我之手的逐渐完善的管理系统,我真切地感受到自己的代码水平和理解能力的提升,也很享受输入输出行间一个个冒险者的来来往往。
关于架构调整部分,首先想提一下Checkstyle,它像一个虚拟的老师,细心地为我指出每一处值得修缮的地方,指引我写出的代码虽然未必赏心悦目,却能让我自己一目了然;
其次是代码超行的问题,我曾多次遇到这种问题,解决方法便是将function中的代码拆分,变成多个function,也让我体会到这种改变确切能提高代码的可操作性。
最后,无论是“接口”还是“观察者模式”这些种种方法都让我眼前一亮并尝试投入使用,遗憾的是对于“工厂模式”(Factory)我并没有理解到位,最终也没能投入使用到代码之中。
使用JUnit的心得体会
课堂为了让我们更好地去做debug,推荐我们使用JUnit来测试自己的代码,在导入JUnit的代码中我们可以提供一些初始值(冒险者、物品之类)来执行各项指令,并通过assert和throw等指令来检测输出逻辑和输出结果。尽管这个过程略显冗长和麻烦,但是带来的测试效果是显著的。
另外,在我看来,JUnit在涉及到主函数的代码以及private性质的代码测试上很乏力——前者提醒我们尽量使主函数精简,后者我暂时还没想到解决方案(doge),如果随意将一些方法设置成public必然会导致不必要的麻烦。
或许JUnit还有很多强力的功能我没有发现,在今后的学习中我会尝试去优化使用的。
学习OOPre的心得体会
我曾经是一个单语言主义者,认为一种语言的精通足以解决各种编程难题,但是当我第一次接触“面向对象”并了解其内涵之后我屈服了——Java确实比C要适合这个功能。
Java和C比起来有很多明显的差异:首先我要提Java的函数功能,或者叫方法更合适,每个对象类都有自己独有的方法,或者私密或者可以被外部调用,这使得对象的管理和对象之间的交互变得轻松,这是C语言难以实现的;其次是Java代码的编写难度和测试难度都要低于C,特别是代码自动补齐功能,虽然vs中有对C的补充,但是对于Java的自动补齐功能用起来确实更为舒适(也可能是对于已经学过一门语言的我比较友善);最后是UI的问题,Java的UI比C语言要复杂的多,功能也更为强大,一学期下来其实我并没有学会多少,尤其是git bash的使用还仅限于登录。。。如果今后还要继续增进OO的技能,那我觉得还是有必要恶补一下的。
Java是一门很优秀的语言(发自内心)。
对课程的一些简单建议
实话实说,OOPre课堂上老师讲得非常优秀了,助教也很热心(叠甲)。虽然知道是我自己的问题,但是可不可以每次到截止日前一天通知一下,少交一次作业我真的好后悔呀!
没有其他东西了。感谢老师和助教一学期的陪伴!
...全文
39
回复
打赏
收藏
总结与反思:OOPre给我带来了什么
总结与反思:OOPre给我带来了什么 说在前面的话 经过了不到一学期的历练,这段oopre的长跑就要走向尾声了,我们那从零开始写的代码如今已经实现了颇为可观的功能,虽然我们没能真正实现幻想中那番剑与魔法的奇妙世界,但是跟随指导书一点点成长起来的“游戏
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
北航
oop
re课程
总结
反思
北航
oop
re课程
总结
反思
BUAA_
OOp
re结课
总结
本文
总结
了作者在BUAACS_
OOp
re课程的学习收获与
反思
2023 BUAA
OOP
re课程
总结
Main类:负责读入数据的处理以及基本操作框架,包含记录全部冒险者和战斗日志的容器。Adventurer类:除Main类外最重要的一个类,包含分别记录冒险者拥有的药水瓶、装备、食物和被雇佣的冒险者的容器,并封装了对单个冒险者进行的各种操作。Store类:单例模式,拥有静态属性及方法,主要与Adventurer类交互。
OOP
re 课程心得
本文
总结
了
OOP
re课程学习心得,主要从架构设计、JUnit测试和课程体会三方面展开。架构部分详细描述了冒险者相关类(物品管理、背包系统、行为分类)和游戏系统(输入处理、关系管理等)的设计思路,并
反思
了封装不足等问题。JUnit测试部分强调了单元测试的重要性,包括assert断言的使用、边界条件测试等。课程体会部分分享了面向对象思维的转变过程、细节把控的重要性等经验。最后建议加强指导书的细节审核。全文既有具体技术实现,也有方法论层面的思考,展现了
OOP
re课程
带来
的系统性成长。
2023
OOp
re 课程
总结
第四次作业引入FightLog类,一开始并没有正确理解“战斗模式”的概念,只创建了一个日志的实例,将每次战斗模式的有效日志都存放在这一个示例中,导致了后续查询操作的混乱。在课程压力的倒逼下,我开始强迫自己理解面向对象的思维,并且对写的不好的方法进行了重构,最终实现了预期的需求。第七次作业新增Store类并实现了观察者模式,对于所有涉及到战斗模式的内容进行了正确的重构,优化了过于冗长的方法,并为所有改动的方法重新编写了JUnit单元测试。前三次作业按照指导书的要求正常迭代,没有出现问题。
2026年北航面向对象设计与构造
271
社区成员
241
社区内容
发帖
与我相关
我的任务
2026年北航面向对象设计与构造
2026年北航面向对象设计与构造
复制链接
扫一扫
分享
社区描述
2026年北航面向对象设计与构造
java
高校
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章