北航2023面向对象先导总结

王禹泉-22373011 学生 2023-11-06 02:03:29

BUAA-oopre-总结

经过五次“丝滑”的迭代和两次bug修复,为我们大二上生活留下浓重一笔的面向对象先导课程也迎来了尾声。这篇博客既是对过去九周java学习和面向对象编程思想的总结和再次思考,也为这样一次收获满满的课程体验画上一个完美的句号。

一、架构设计

1、最终架构设计

img

具体说明:

1、Main主函数模块:从标准输入读入指令,调用指令处理模块实现功能。
2、Solve类:集中了不便于直接写入其他类,或者在其它类中重复可以提炼的指令处理方法。
3、Adventure类、Bag类、Fight类:定义了三个大类,包含对应的指令处理方法。
4、Bottle、Equipment、Food、Record、Person、Fightman类:定义新的类型,用于储存大类中的数组元素。
5、Shop类:采用单例模式的设计模式,负责买卖装备部分。
6、细分的三种bottle和equipment分别继承于父类。

2、迭代中的架构调整及考虑

1、第二次迭代新增了Bag和携带的概念,这一次增加了测试覆盖率要求,我在第一次作业中将较多的方法放在了Main类中,
同时标准输入读入也分布在各个方法中,对junit编写产生了较大的影响,因此进行了一次修改,将Main类的大部分方法移除。

2、第四次迭代新增继承和接口的思想,多种类型的bottle和equipment都由对应父类继承产生;同时因为Main类中的分支方法行数过多,
以及Adventure类许多方法冗杂进行了一次优化,将输入和分支部分分开,同时减少因使用Arraylist导致的多处遍历寻值。

3、最后一次迭代引入工厂模式,因为整个体系中只有一个Shop,因此采用单例模式的设计模式。

二、使用junit心得体会

1、这是第一次接触自己写测试的过程,用一种具有高度逻辑性和范式的方法debug或者测试可行性。

2、因为在将来实际开发的时候并不能保证一定有评测机,所以掌握相关方法很重要,包括未来完成各项任务也经常需要用到这项能力。

3、在写junit的过程中最大的难点是分支覆盖率的保证,这一过程同时也有助于我们分析自己代码的简洁性。

4、总的来说,通过这一模块的学习感觉收获颇丰。

三、学习oopre的心得体会

1、首先,就是之前提到的逐渐形成自己写评测的习惯,联合verilog的自动测试给我狠狠地上了一课,认识到了考虑全面,充分测试的重要性。

2、其次就是确实开始了从面向结果向面向对象的转变,开始分模块,分方法,考虑代码风格(扭转C语言时候永远只有一个main的局面)。

3、同时也为java的学习打下了不错的基础,基本掌握了相关的语法,拥有了参与下个学期oo淬炼的底气。

4、最后也提升了自己的算法思维,尤其是考虑多种情况下怎样简化和结构化自己的设计,也开始尝试探索代码风格。

四、对oopre课程的简单建议

1、个人感觉由于与计组重叠,再加上大家刚刚进入专业学院且时间安排紧凑,确实压力较大。可以考虑课程扩张到16周,每次迭代给予两周的任务时间,双周上课。来减轻压力,同时也可以略微上调课程难度。

2、git的使用方法方面希望可以出个更详细的视频教程,因为实际提交过程可以直接使用IDEA,导致常常缺乏相关的训练。

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

301

社区成员

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

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