OOpre课程总结:

徐子成-24371104 2025-11-06 17:17:11

一.冒险者作业最终架构设计

1.核心实体类

  • Adventurer(冒险者):实现 Target 接口,是系统的核心实体,包含属性和方法,关联 Bottle、Equipment、Spell 等其他类。
  • Equipment(装备):作为父类,有 Armour、Weapon子类,Weapon 又衍生出 Sword、Magicbook
  • Bottle(药水):有 HpBottle、AtkBottle、DefBottle、ManaBottle 子类。
  • Spell(法术):有AttackSpell,HealSpell子类。
  • Target(目标):接口,定义了目标的基本属性和方法,Adventurer 实现了该接口。

2.工具类

  • AdventurerFinder:用于从冒险者列表中查找特定冒险者。
  • EquipmentCreator:创建不同类型的装备,并能获取装备类型。
  • BottleCreator:创建不同类型的瓶子,并能获取瓶子类型。
  • CommandProcessor:处理命令。
  • CourseHandler:根据CommandProcessor处理各种具体操作命令。
  • AidProcessor:记录和处理冒险者的生命值相关辅助信息,用于收到攻击后的援助。
  • Lexer:用于解析输入命令,分解导入的复杂冒险者关系。

3.主程序类

      Main:程序入口,负责读取输入、初始化数据结构,并调用相关处理器处理命令。

二.迭代中的架构调整及考虑

1.第二次作业(初始架构)

       实现冒险者类Adventurer  、药水瓶类Bottle  、装备类Equipment

       利用容器,管理所有冒险者,并管理每一个冒险者所拥有的药水瓶和装备

2.第三次作业

       实现法术类Spell

       对冒险者添加属性 

       对Bottle类,Spell类添加子类

3.第五次作业

      为装备添加子类

      引入Target,实现攻击功能

      实现金钱系统

4.第六次作业

      实现雇佣关系

      实现操作后援助功能

5.第七次作业(最终架构)

     利用递归下降法导入的复杂冒险者关系

三.使用JUnit的心得体会

使用JUnit进行单元测试,能够精准地对自己代码的bug进行定位,但刚一接触Junit,起初只是用来满足作业要求的覆盖率,但随着作业的类和功能逐步增加,以前光靠肉眼发现bug已经越来越困难,这个时候我才意识到Junit的重要性。

在我看来,JUnit 不仅是一个测试框架,更培养了 “质疑代码” 的思维 ,从一开始为了完成任务追求覆盖率,到熟练运用检测边界情况,本身对我而言就是一种提升,虽然初期会多花一些时间,但长远来看,这种投入能显著降低调试和修复 bug 的成本。

四.学习OOPre的心得体会

从面向过程编程到面向对象编程,像是一种思维方式的重构。

面向过程编程中,解决问题的核心是 “步骤”,而面向对象编程中,核心变成了 “实体”,我们不再纠结先做什么后做什么,而是专注于谁拥有什么数据,应该做什么事,这更符合现实世界的逻辑。

同时面向对象编程具有分装性,每个类只对外提供接口,其他类只需调用接口,不关心内部如何实现。

并且面向对象中的继承解决了共性抽取问题,避免了繁琐的代码复用。

这里我引用网络上的一句话来做最后的总结:从面向过程到面向对象,本质是从 “线性思维” 到 “结构化思维” 的升级。它的价值不在于 “代码写得更优雅”,而在于当系统规模扩大、需求频繁变化时,能通过对象的封装、继承、多态降低复杂度,让代码更易维护、复用和扩展。     

最后感谢各位助教和老师的帮助,同时希望本人OO正课进展顺利。

五.对OOPre课程的简单建议

1.加强对学生面向对象思维的培养

2.题目选有更能激发学生兴趣的开发迭代问题

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

270

社区成员

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

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