面向对象先导课程总结

邝晓文-22373445 学生 2023-11-08 20:42:34

面向对象先导课程总结

架构设计

最终架构设计

  • UML类图

    design

    过程调整

  • 第一次调整

    在hw3中对先前代码进行了一次较大调整,在最初编写时,在Main中进行了命令的解析以及部分命令的实现,导致把许多本该属于Adventurer中的方法写在了Main中,造成结构层次上的混乱。初期可能只是从命令实现的方便性出发编写代码,而没有考虑到其合理性,甚至出现了由于没有厘清各类中需要实现的功能,不同类中出现了内容极为相似的方法,在一定程度上增加了代码的复杂性。在调整时,对于每一个方法,首先思考其作为谁的方法、由谁调用才是最为合适的,再将其挪至对应类中,再对方法进行调整。
    在方法实现时,先前一个很大的问题就是参数过冗余,基本是需要用到的参数全部传递过去,当在实现过程中发现功能无法完成时就继续添加参数,其实其本质仍是没有厘清各类应该负责的功能,把过多的工作都集中在Adventurer中完成,为解决这种问题,就要把多余部分交至其他类中完成,以及对于重复过程进行抽象提取,形成新的方法,以减少方法的冗余问题和接口的混乱。

  • 其余调整

    随着命令条数的增加以及命令形式更加多样化,如何解析并完成命令成为新的问题。最初采用的if-else分支语句,在中期出现类中方法行数超出规定值的问题,不得不寻找新的实现方法。为解决这个问题,新增Utils类在其中完成命令的读取和储存,并新增Parser类用于命令的存储,将命令(operation)和日志(logs)作为其属性,以解决新增的14命令中对于战斗日志的处理和操作问题。

    使用junit的心得体会

    在历次迭代的过程中,都要求我们自行对代码进行测试,并且对Junit测试覆盖率有所要求。

    在迭代初期,代码复杂度较低,在编写过程中产生的bug较少,导致对代码的测试环节常被忽略。然而随着题设要求的增加,运行时出现的问题越来越多,愈发意识到测试的重要性。特别是在最终修复出bug后,会发现如若能在先前对代码进行功能测试,其实就可以减少大量的bug排查时间。测试看似是在初期“浪费”了时间,实则会减少debug时的工作量,是重要且必要的。完成这样的认识转变,是我在先导课程中十分重要的收获。

    测试的覆盖率也是一个很重要的指标,在测试中对覆盖率的要求,提醒我要充分测试代码,不遗漏分支,对尽可能多的语句进行检查。

    课程体会

  • 从面向过程到面向对象

    完成从面向过程编程到面向对象编程的认识转变,是在先导课程中很重要的一个内容。在迭代初期,代码更像是经过java翻译后的c语言,缺乏封装的思想。随着历次课程的不断深入和在迭代中的反复体会,开始学会如何从面向对象出发,构建整个代码。在迭代过程中,也开始反思先前的构架是否有合理性,如果不合理,又应该如何调整。从如何抽象提取出每一个类,再到使用继承还是接口,抑或是其他在构建过程中遇见的问题,都有在帮助我进一步了解“面向对象”的思想。

课程建议

  • 如果能补充一些java语法教程会更好
...全文
39 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

303

社区成员

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

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