23秋面向对象先导课程总结

傅航-21375171 学生 2023-11-07 15:57:34

#最终架构设计

img


在顶层模块Main中有三个类的三个实例,分别是adventurers用来管理所有冒险者,fightlog用来记录战斗日志,shop用来记录交易信息。

#架构调整与考虑

在整个迭代过程中,每当需要新增一条指令时,遵循这条指令的直接执行者是哪个类,便在这个类中添加相应的方法,具体举例如下:

  1. 12号指令,使用一个药水瓶,思考这个动作的直接执行者是Adventurer,所以在Adventurer类中增加了useOneBottle这一方法;
  2. 根据冒险者名字的唯一性,在Main中不是选择创建一个哈希表用于管理所有冒险,而是另立了一个类Adventurers,在这个类不仅有一个属性为adventurers的哈希表用于管理所有冒险者(当然这个哈希表的键值是冒险者的ID),还有通过冒险者的name获得该冒险者的方法;
  3. 14号指令中,对战斗日志的正则表达式的输入解析,选择在FightLog这个类中完成。

#不足与改进

  1. 对各条指令的输入解析在MainClass中进行,且长switch-case语句会导致函数入口Main过长,可能的改进方法是独立建立一个类用于对指令进行输入解析,而后Main直接调用即可;
  2. 在Bottle等类作为父类继承出子类后,对于加入药水瓶,购买药水瓶等操作都需根据Bottle的具体类型分开写方法,这导致Adventurer类过长,且重复代码过多,可能的解决办法是在输入时就能确定出具体类型,然后直接new相应的类型就好,但对于这一操作目前还不熟练,仍需学习。

#使用junit心得

-首先需要肯定junit作为单元测试工具,在代码编写完成后用于测试代码正确性中的重要作用。最好的做法是每次迭代时,每新增一个方法,每新增一个类,甚至是作出的任何细小的修改都应紧接着编写单元测试,以验证正确性。这在大型工程项目和企业级开发中是必不可少的。
-但是在面向对象先导课程中,这种单元测试在后期的工作量会变得很大

#面向对象先导课的体会

-初次接触面向对象的编程思想,就不禁与C语言的面向过程的编程思想对比,两者既有相似,更多的是不同。封装、继承、多态是面向对象的三大特征,java语言将各种数据封装为类,并在类中设置相应的属性与方法,C语言中的函数、结构体也有类似的思想,但java将其拓展上升到面向对象的高度。
-先导课中简要介绍了继承和多态的基本思想,但更多细节和使用方法期望在正课中深入学习。
-收获:从最初的C代码编写都有困难的状态,到能够独立构建出完成基本作业要求的java程序,期间不仅熟悉了java语法,IDEA工具的使用,还逐渐提高自己的编程能力。

#课程建议

-增加学分和课时,充分为面向对象正课打基础

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

301

社区成员

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

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