OO-Pre课程总结

刘祖权-22371221 学生 2023-11-09 22:17:02

目录

1.架构设计

各模块名称及功能

迭代过程

2.使用 Junit 心得体会

3.学习 OO-Pre 心得体会

4.对 OO-Pre 的简单建议

总结


1.架构设计

各模块名称及功能

名称类型功能
MainClass读取输入;作为枢纽,识别指令并将其传递给各个操作执行类;生成Adventurer
CommodityClass作为Adventurer、Bottle、Equipment、Food的共同父类,声明属性:value
AdventurerClass程序中最主要的对象类,含有对于自身所拥有的价值体、金钱、雇佣的Adventurer进行操作的各个函数
BottleClass声明属性:id,name,capacity,isEmpty;提供get方法;下有RegularBottle等三个子类
Equipment

Class

声明属性:id,name,star;提供get方法;下有RegularEquipment等三个子类
FoodClass声明属性:id,name,energy;提供get方法
ItemOperatorClass负责处理Adventurer与Bottle、Equipment、Food相关的指令
CommodityOperatorClass负责处理与value密切相关的指令
FightClass负责处理战斗相关的指令、储存战斗日志
TradeClass负责处理与买卖物品相关的指令
StoreClass负责记录Adventurers卖出的物品,并生成Adventurer想要购买卖的物品

 

迭代过程

  • 在前两次作业中,我并未编写专门的读取输入的方法,直到第三次作业中看到了助教提供的输入解析代码,这才依葫芦画瓢,仿照着写了一个;同时,在此基础上编写了seInput方法,在Junit测试中帮了我很大忙。
  • 另一方面,在前几次作业中,由于所需处理的指令并不多,我将所有的操作方法全部写在Main类中。后来,Main中的代码很自然地超出了500行的CheckStyle限制,这才建立了专门的操作执行类。随着课程的深入,也使用了继承、重写等操作。相比起过去的面向过程编程,这是很不一样的体验。

2.使用 Junit 心得体会

合理编写Junit可以从基础方法开始,逐步检验各级方法的正确性。但要想排查出全部的漏洞往往需要足够庞大的数据支撑,而自行编写覆盖率足够完善的数据无疑是件费时费力的事。所以我绝大部分的bug还是在测评中发现的……

3.学习 OO-Pre 心得体会

  • CheckStyle:尽管大一就被告知代码在命名、空格等方面应遵循一定的规则,但在实际编写过程中往往只是做到能看就行。直到遇见 OO-Pre,在测评中加入了对代码风格的考察,这才开始认真对待此事。最终 OO-Pre 的项目代码确实比此前写的“好看”了许多。
  • 面向对象:面向对象的编程模式很注重代码的模块化,各个类仿佛独立的个人,每个人只管理自己的物品,只负责处理自己分内的事,并将信息传递给别的类,最终达到分工合作,完成任务的效果。模块化做的好的项目,在新增功能时,几乎不需要对已有的代码做修改,只需增加新的类、方法等。同时,继承、接口等操作也使得代码更加简洁,整体架构更加有序。

4.对 OO-Pre 的简单建议

  • 希望中测时,能把分支覆盖情况分散到不同测试点中。有时十个测试点中只有一个测试点涉及到bug所在的分支,而这个测试点还是输入输出不可见的,即使自行编写了多个测试样例,但还是没找到bug所在,很痛苦。
  • 另外,强测可能需要加强(),有时基础功能(非极端情况)出错了也能满分通过,结果下一次作业时因为上次作业未发现的bug无法通过,对着当次作业新增的功能反复检查也不会有任何发现。

总结

总的来说,OO-Pre让我收获了很多:用上了IDEA这样现代化的IDE,对于Git的使用有了更多了解,学习了面向对象的编程模式……感谢助教及课程组的付出

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

242

社区成员

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

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