OOPre:冒险者系统作业

王梦翔-24371142 2025-11-06 15:23:37

一、作业最终架构

  1. 图片架构

img

  1. 简要说明:
    • Main:程序入口
    • 冒险者角色及管理类:Adventurer(冒险者,实现Employer、Employee接口)、AdventurerManage(管理类)
    • 背包及物品管理:Backpack、OwnedItems
    • 物品系统:Bottle、Equipment、Spell等抽象类,下设具体的子类,Bottle和Spell类要实现Usable接口
    • 工厂模式:Factory类中的静态方法创造新的实例
    • 输入解析:Lexer、Parser实现递归下降法
  2. 迭代过程:
    • 首次实现:实现冒险者类,创建Bottle类和Equipment类
    • 第三次作业:考虑到涉及多个冒险者,为方便管理创建AdventureManage类;添加背包系统,创建Backpack、OwnedItems加以区分是否携带;添加Spell类,使用继承方法为Bottle和Spell创建不同子类;创建Usable接口
    • 第五次作业:装备类型细化,为Equipment创建子类;创建Factory类,实现工厂模式
    • 第六次作业:用Adventurer实现Employer和Employee接口,实现雇佣系统;实现观察者模式
    • 第七次作业:创建Lexer、Parser类实现递归下降法

使用Junit的心得体会

  • 刚开始接触 JUnit 时,总觉得写测试用例是 “附加任务”。但多次踩坑后发现:进行测试是十分必要的(苦笑)。而用Junit进行单元测试就为我们提供了一个很好的工具。
  • Junit最大的优点就是精准,即可以针对某一个具体的功能模块构造用例进行测试,并且在测试时更容易想到针对该模块进行边界测试,能很好地发现错误点。在构造的Test中发现问题后进行调试时能直接定位可能有错误逻辑的代码块,十分方便。
  • 通过测试用例能够提前暴露我们设计过程中的缺陷,同时倒逼我们做出更好的设计。通过Junit的学习与实践,我想,需要塑造这样一种逆向思维:不仅要考虑如何实现功能,更要考虑如何证明功能是对的。

学习OOPre的心得体会

很明显,学习OOPre,学习Java语言,最大的特点就是面向对象编程。这与我们之前学习的C语言的面向过程编程有很大不同。总结如下:

  • 对象化的思维:学习OOPre让我清晰的认识到“万物皆可对象”,每一个实体都有各自的属性和方法,每一个对象各司其职,这种解耦的思想让逻辑表达更加清晰
  • 三大特点:封装、多态和继承这三种方法的目的都是为了更好的解耦
    • 封装:通过private、public等修饰符能够选择性地将对象的属性隐藏,只暴露安全的操作方法,实现对数据的保护
    • 多态:简单说就是同一种行为有不同的实现方式,在新增方式时只需要添加一个实现类,不用修改原有代码。这很好的体现了作业指导书中的“开闭原则”——对扩展开放,对修改关闭
    • 继承:实现代码的复用,但是不要过度或不合理地继承,会导致层级关系复杂,逻辑混乱,比如用Backpack继承OwnedItems,会导致Backpack被迫拥有了OwnedItems中的不必要的方法
  • OOPre能够强化人的逻辑思维和抽象能力,划清边界实现解耦,有助于复杂系统的设计

简单建议

  • 希望能够为自学的内容提供更多的指导
  • 可以增加面向对象和面向过程的对比学习
...全文
20 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

270

社区成员

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

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