OOPre博客总结

OOPre博客总结

  1. 作业最终的架构设计, 在迭代中的架构调整及考虑


    架构设计

    • Main类作为顶层处理模块,因业务需求还不是那么复杂,就直接负责读入命令与调用相应的方法,管理冒险者列表。

    • Adventurer类作为主要业务逻辑体,基本上所有命令都是围绕其展开。负责冒险者相关的功能。

    • Logs类负责管理战斗模式以及存储、查询日志。

    • Store类负责处理冒险者购买与出售物品。

    • Commodity类作为价值体的抽象类。子类FoodBottleEquipment等负责其相关的功能。

    架构调整

迭代中,针对要求,进行屎山开发

  • 冒险者背包需求,并未新增类,笔者认为对背包的操作还是以冒险者为主体,利用现有的容器HashMap,将三种物品抽象成一个类,存入放在Adventurer中即可,对背包内的操作也主要是增查删改,HashMap够用了。

  • 需要记录战斗日志,添加Logs类,存储日志与输出日志

  • 在对药水和装备进行分类时,为BottleEquipment添加多个子类,继承共有的属性方法,并通过重载实现它们不同的效果。

  • 计算价值时,添加抽象类Commodity,给出价值体的通用属性和方法

  • 冒险者购买与售卖物品等功能,封装到Store商店内。


  1. 使用junit的心得体会
    1. 不必对每个方法都进行测试,比如一个getId(),就直接return一个Id,写一个test没什么意义。

      换句话说,应该对逻辑较为复杂,对应具体功能的方法进行测试,而部分简单的方法在测试中基本上就会被调用。

    2. 要覆盖方法的所有分支,并针对数据的上下界以及0等特殊值进行测试。编写数据是比较麻烦的,可以尝试自动化生成测试数据。

    3. 可以重定向输入以模拟命令行输入。


  1. 学习oopre的心得体会

    面向对象编程是一种广泛使用的编程范式,它以对象的思想为核心。面向对象编程有以下几个特点:

    1. 封装 - 面向对象编程强调将对象的属性和行为封装到对象内部,外界无法直接访问,只能通过对象提供的接口来访问。这有助于隐藏实现细节,提高代码的模块化程度。
    2. 继承 - 继承可以使得子类继承父类的属性和行为,增加了代码的重用性和可维护性。子类可以扩展和自定义父类的功能。
    3. 多态 - 多态使得调用相同的方法可以有不同的响应,增加了程序的灵活性。子类可以覆盖父类的方法来实现多态。
    4. 抽象 - 抽象类和接口可以将类中共有的属性和行为进行抽象,提取共性而忽略个性,有利于抽象思考和减少重复代码。
    5. 组合 - 组合使得类具有包含其他对象的能力,可以灵活地建立起复杂的对象之间的关系,增强了面向对象编程的表现力。
    6. 设计原则 - 面向对象编程还提出了一些设计原则,如单一职责原则、开闭原则等,这有助于编写灵活、可复用、可维护的代码。
    7. 模拟实体 - 面向对象编程可以通过模拟实际世界中的实体及其关系,使程序更贴近现实场景,增加了代码的可读性。

    在编写代码之前,要先在脑中构建好实现功能需要的类以及它们之间的关系,尽量保证对象的独立性,业务逻辑之间足够清晰,不然将会给编写代码带来极大的麻烦,甚至需要进行代码重构。

    碎碎念:上一次写大项目还是在上一次,经过数据结构一份.c写完大作业,这次的迭代开发还是积累了很多写大项目(?)的经验,以往写的代码量少,没什么架构,能跑就完了,现在写大项目,再不规划架构,人和代码总得跑一个,人和学分总得没一个。


  1. 对oopre课程的简单建议
    • oopre绝世好课,希望加大力度,最后几次迭代把互测环节加进去,让我们提前熟悉一下
    • 希望课上可以展示上次作业写得比较好的代码,以供参考 (不然自己写的烂也没有自知之明
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值