OOpre课程总结

前言

经过半个学期的OOpre过程,我完成了被戏称为面向对象原神的迭代作业开发,从原来对java语法一窍不通的小白开始对继承、封装、多态稍有了解,现在等待被下学期OO正课虐。

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

在历次的作业中,我一直会想着如何让代码的架构更为优雅,进行了几次大大小小的调整。也很荣幸被选取了展示给了同学们。

image-20231104010037957

我的作业的架构为:

  • 两个顶层类:

    • 负责函数输入输出处理IOhandle:解析输入,调用函数

    • 负责函数背景基本信息的BasicData:储存冒险者列表、进行对战、储存查找对战记录、存储商店等等

  • 若干执行类:

    • 对于具体的对象:冒险者Adventurer类、瓶子类Bottle、武器类Equipment、食物类Food、记录Record

    • 抽象的处理集合:背包Bag(专门用来处理和携带相关的操作)、商店Shop(处理和售卖相关的操作)

对于基本的储存结构,则应该是:

 basicData->Record
         ->Fight
         ->adventurerList->adventurter->objects
                                    ->behave

在历次作业中,主要大的调整主要有一下这么几个:

  1. 引入IOhandle类。一开始的输入输出都挤在Main类里面,过于臃肿,后来建立这个类来处理。

    其次有个很大的调整是使用了反射,将函数的调用更为优雅,实现了统一化的调用思路

  2. 引入BasicData类,处理了冒险者列表、记录列表、对战操作这些属于背景性质的属性方法

最后我的想法是,感觉类的数量优点多,达到了16个,但是好像也不能为了少而少了,担心再多下去会在管理中产生不方便,毕竟人脑是有限的,如果继承再多,可能数量会更多。

使用junit的心得体会

说来惭愧,为了优雅的架构实现了IOhandle这个类,里面的方法巨多,且这些方法的参数列表里面有scanner,而需要调用System.in的函数是不能在junit测试中被测试的。因为不想使用setIn来写测试,于是我摆了(摊手)。

在历次的作业中,我除了第一次写入全面的junit测试(但还是因为IOhandle中无法测的方法太多导致覆盖率不达标),之后的历次都因为觉得时间过于繁琐,书写后可能还是达不到要求,均未书写junit测试,为了保证代码的正确性,使用了其他的测试方法。

我所使用的测试方法包括:

  1. 瞪眼法。通过深入代码的逻辑,将代码的操作尽可能做到高内聚、低耦合的特点,这样子代码不会在运行过程中出现奇怪的bug

  2. 保证所有方法的正确性。在OOpre作业的测试中,因为整体函数规模不太巨大,不会出现奇怪的特性,只要保证各个函数的正确性以及组合(指调用关系等),应该能得到正确的结果。这样就依赖于迭代的正确性,必须保证前一次作业书写的代码都是正确的才可以。

总的来说通过历次作业的测试工作,我还是学习到了如何进行妥善的测试,如何保证自己代码的逻辑和执行的正确性。

学习oopre的心得体会

  1. 了解了什么是面向对象,从原来只会c的小白到现在了解了Java的面向对象,顺带着对c艹、python等语言的面向对象性质有了一定的认识,知识是相通的。

  2. 有了一定的工程能力。之前程设、数据结构的码量较小,代码写成屎山的问题不太明显,在迭代开发中培养了一定的工程化思想,会思考这么让架构更优雅。

  3. 强测满分真的能缓和写计组的悲伤兴趣。

对oopre课程的简单建议

  1. 有些理论知识很有用但是用的很有限,比如设计模式等,可能考虑作业中再设计一些应用场景等

很有收获,希望OO正课也能这样丝滑开发

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值