OOPRE 课程总结

王雅智-24231217 2025-11-06 16:55:14

OOPRE 课程总结

作业最终的架构设计(仅展示部分主要结构)

img

  • 前几次作业比较简单,按题意创建AdventurerBottle等类即可,按照关系继承,所使用方法如addBottle等均在Adventurer类中实现。

  • 后面由于实现逻辑(switch-case语句)一开始均在main方法中实现导致冗长,于是建立新类Game,逻辑均放在此类中

    //Game类
    public static void runGame() throws CloneNotSupportedException {
              //...
              options(strings, adventurers);//具体操作
          }
      }
    
    public static void options(String[] strings,
                                 ArrayList<Adventurer> adventurers)
                                  throws CloneNotSupportedException {
          switch (strings[0]) {
              case "aa":
                  adventurers.add(new Adventurer(strings[1]));
                  break;
              //...
          }
      }
    
  • 后续由于指令太多,全在Adventurer类中实现会导致代码行数过多,于是新建Optional接口,并把除了addAdventurer的其他功能全部单独写成一个类,这样Adventurer中的代码就会大大化简。

    //Adventurer类
    //以addBottle为例
    public void addBottle(String botID, String type, int effect) {
          AddBottle option = new AddBottle(this);
          option.operate(botID, type, effect);//逻辑在AddBottle类中的operate方法实现
      }
    

使用JUnit的心得体会

虽然写JUnit是麻烦了点,但JUnit确实是在帮助我们找到代码bug方面十分有用的工具。使用JUnit,我们无需过多在意整体逻辑,仅需关注需要测试的代码部分,并要尽可能地想出所有情况,包括边界、非法、特殊情况等等。只要JUnit写得够详尽,充分考虑几乎所以情况,往往可以很早就发现代码的bug,帮助我们修复漏洞,那么过强测也不是问题。

学习OOPre的心得体会

面相对象更加强调顶层逻辑的思考。之前学c时仅需考虑实现过程即可,然而在JAVA中,更加注重的是类与类的关系。我们往往首先得思考将各种共同属性抽象为一个类,并找出这些封装好的模块间该实现什么借口来完成工作。在面相对象中,我们往往无需首先关心借口具体实现内容,先把外部构架建立好了,后面实现代码才会写起来十分顺利。

对OOPre课程的简单建议

1.课下弱测和中测真是弱到爆炸了,感觉纯不怀好意啊
2.感觉对于纯0基础的人来说还是太超进了,很多重要思想估计没这么快就能接受

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

270

社区成员

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

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