BUAA_oopre学习心得

1 篇文章 0 订阅
1 篇文章 0 订阅

一、架构设计 :

1、最后一次架构图

在这里插入图片描述

2、功能分析

Main:处理输入的类型,将更进一步的行动转到help内进行。

Help:处理各种指令,定义一个help的对象,里面包含整个程序中的冒险者,并且实现按照id和name寻找冒险者的函数。

Commodity:价值体,Adventure、Bottle、Equipment、Food均实现对Commodity的接口。

Adventure:在这儿进行对冒险者的各种操作,每个冒险者有一个雇佣者的对象数组,该冒险者雇佣的冒险者会加入该数组;分别有两个Bottle、Equipment、Food类型对象的数组,是已经拥有但未加入背包的该对象和已经加入背包的该对象。

Bottle:在该类型中进行对药水瓶的各种操作,RegulerBottle、RecoverBotttle、ReinforcedBottle三种类型的瓶子类继承自该类。

Equipment:在该类中实现对装备的操作,RegularEquipment、CritEquipment、EpicEquipment继承自该类。

Date:按照日期实现对日志的记录。

Food:在该类中实现对食物的各种操作。

Shop:商店,单例模式。实现对各种类型价值体的售卖。

3、迭代中的架构调整

  1. 在前期的架构设计中,没有考虑到方法行数过多的问题,直接在读入的时候对指令进行分析,随着后期指令数目越来越多,该方法的行数较多,在后期迭代过程中,加了一个Help类进行帮助分析指令,将读入的指令分类传到Help中,在根据指令要求进行后续操作。

  2. 当新增14号指令时,在Help类中新增加了一个方法,专门去判断战斗日志的类型以及进行相关的操作,同时也是在这一次的迭代中对main函数进行了大幅度的修改。

  3. 在前期的迭代中,没有考虑到后续添加日志的要求,再次在后续的迭代过程中,增加了一个Date类,实现对每天日志的一个记录,对于每个冒险者的日志,则选择在冒险者对象里面增加一个字符数组,对他在战斗模式下进行的行为做记录,以便在查询时输出。

  4. 在前期没有实现继承和接口,后期使用后,大大的减少了需要增加的代码量。

  5. 商店的实现需要用到单例模式,增加了Shop类,实现了售卖各种价值体和冒险者出售背包内价值体的方法。

二、使用junit的心得体会

  1. 一开始,觉得测试就是为了满足提交要求,其实后来发现,针对每一个方法的测试能够明确该方法的正确性,以便到后来出了bug,确保不是因为其中的一个方法写错了而无从下手。

  2. 在对指令的处理模块测试时,直接把指令放进去,能够在debug时较快地发现该类型的指令是否出错,以及该指令涉及到的的各个方法之间的协调有没有出错。

  3. 在提高覆盖率的同时,分支覆盖率是一个比较难提高的点。为了提高分支覆盖率,就需要把每个方法中可能出现的情况都进行测试,一定程度上提高了代码的正确率。

三、学习oopre的心得体会

  1. 能力提高: 在oopre课程开始前,我对java完全没有概念,甚至在第一次作业的时候完全看不懂该干什么,后来认真阅读代码就会发现其实要比c语言要更好懂一些。在经历了第一次阅读代码以后,能够快速的上手写一些较为简单的代码。

  2. 统筹结构:不同于以往面向过程的代码,在编写面向对象的代码时,主要是对每个对象进行一定的操作,在写代码之前需要认真的考虑代码的架构,在该类中能够实现哪些操作,必要时还需要定义继承以及接口类来实现一定的功能。

  3. 写代码更注重思维:IDEA是一个非常好用的软件,基本不会因为多打了一个字母而导致程序出现错误,比写c语言的体验好。因此,代码对思维的要求就较高。

  4. 代码风格:面向对象对代码风格的要求也较高,尤其是因为对方法行数的要求导致了解析指令方法的大改,好吧,其实是我最初的结构不够好,是因为在实际的应用中较长的代码很难做到覆盖率百分之百,而航天工程中对覆盖率的要求很高。

四、对oopre课程的简单建议

  1. 增加对git相关知识的传授以及考察,目前对git了解的并不多,但是仍然能够正常的完成作业,希望能多一点关于git的知识。

  2. 对于课上的一些结构,在课下如果不按照该结构来实现甚至也能完成任务,这就会导致对该知识点的印象不深,希望能够多一些理论题目的考察,或者是一些小的编程题加深对一些结构的理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值