北航2023秋oopre总结与反思

张翼飞-22230622 学生 2023-11-04 15:47:22

这是本学期oopre的最后一次作业,回望本学期的课程,从第一节课什么也听不懂的新手小白到经历了前七次作业的洗礼后已经写出了几百行的关于冒险者的游戏的代码,我感受到了自己对于Java这门语言的了解越来越多,所以在此对这门课程做出一些总结与反思。

目录

 

一、架构设计

1、Adventure类

2、Bottle类(父)

3、Equipment类(父)

4、Food类

5、Bag类

6、FightLog类

7、Commodity接口

8、Shop类(单例)

9、Factory类(工厂模式)

二、架构调整及考虑

1、第二次作业

2、第三次作业

3、第四次作业

4、第六次作业

5、第七次作业

三、Junit心得体会

四、oopre心得体会

五、oopre课程建议


一、架构设计

1、Adventure类

这个类专门用来处理冒险者的行为,定义了冒险者的属性。因为作业主要围绕冒险者来展开,所以我的冒险者类写的比较长,比如对于药水、装备、食物的处理都是在冒险者类里实现,买东西与卖东西也在这个类里。

2、Bottle类(父)

这个类专门用来处理药水这个物品的行为,如在其他类获得药水的属性的get系列的方法,特别的,本人在刚开始的几次作业当中并没有给药水isempty的属性,但最后一次迭代作业不得不用(对于药水容积的理解不到位),所以最好还是早点加上。

这个类作为父类,其有以下子类:

  1. RegularBottle
  2. RecoverBottle
  3. ReinforcedBottle

这些子类继承了父类的属性,也会有自己独有的属性(ratio),主要方法是计算冒险者喝完药水后增加的体力。

3、Equipment类(父)

这个类专门用来处理装备这个物品的行为,如在其他类获得装备的属性的get系列的方法。

这个类作为父类,其有以下子类:

  1. RegularEquipment
  2. CritEquipment
  3. EpicEquipment

这些子类继承了父类的属性,也会有自己独有的属性(ratio、critical)。

4、Food类

这个类专门用来处理食物这个物品的行为,如在其他类获得食物的属性的get系列的方法。

5、Bag类

这个类专门用来处理冒险者携带的物品的行为,其属性为三个容器,分别为药水、装备、食物容器,其主要方法为在其它类获得这些容器的get系列方法。

6、FightLog类

这个类专门用来处理冒险者的日志的行为,其属性为日志的日期、事件、名字。主要也为get系列的方法。

7、Commodity接口

此接口用来定义价值体的getPrice方法,由冒险者、药水、装备、食物这四个类来实现这个接口。

8、Shop类(单例)

这个类用来处理商店这一个单例对象的行为,主要方法为计算目前商品的平均价钱以及一些属性的平均值。

9、Factory类(工厂模式)

这个类主要是用来创造一些对象,本人最后一次迭代作业没想太多,就用了简单工厂来实现。

二、架构调整及考虑

1、第二次作业

此次作业中加入了Adventure、Bottle、Equipment类

2、第三次作业

此次作业新加入了Bag类

3、第四次作业

此次作业新加入了FightLog类,在刚开始写这次作业时没好好读题,因为前几次作业的容器全是用HashMap实现,所以这次作业也没想那么多,也都用HashMap实现,写了一半才发现,作业要求日志要有时间顺序,进入战斗模式要有顺序,所以又改回了Arraylist。

4、第六次作业

此次作业新增了Commodity接口,关于装备的三个子类和关于药水的三个子类。在这次作业刚开始时,本人并没有对RegularBottle和RegularEquipent专门设置子类,但到后面还是想分清楚三种不同类别,就加上了。

5、第七次作业

此次作业新增了Shop类和Factory类。

三、Junit心得体会

其实刚开始对于junit比较抵触,认为没什么作用,老师还要求高覆盖率,所以刚开始junit比较简单,写的比较敷衍。但到第四次作业时,代码一直有几个点过不去,当时想着先写会junit,写完自己测试还真发现了好多bug,那时我就觉得junit还是有用的,只要写的将全部分支都覆盖到,就真的有发现bug的作用。自那次作业后,我就一直认真写junit测试,代码的正确率也越来越高了。

四、oopre心得体会

通过这次oopre的学习,我是真的认识到了面向对象与面向过程的不同。现在还记得在写数据结构大作业时,一堆函数,一堆for循环,我现在打开那个代码都有些地方看不懂,感觉特别的乱,思路不清晰。但是再看oopre的代码,就感觉是将一件事情分成了很多模块,每个模块各司其职,思路很清晰,每个类要做的事情很分明,所以看的很舒服。所以总的来说,面向对象的优点就是降低了一件事情的复杂度,提高了代码的可读性,写起来不会乱。虽然刚开始过渡的不是很顺利,但只要知道这两者的区别,知道每个类要做什么,就能在一次又一次的迭代中更加熟练,相信这次的先导课会对接下来的oo正课有着莫大的帮助。

五、oopre课程建议

1、我认为老师可以在上课的时候讲的再基础一些,大家刚开始对于Java真的是一点都不懂,第一次上完课后真是什么也没听懂,只好上网学了一些Java的基础知识,这才能看懂ppt上的代码,更别说自己写了,所以希望老师可以多讲一下Java的基础知识,教我们怎么写代码。

2、关于git知识希望老师可以在上课时演示一下,不然在课下自己弄太麻烦了,需要上网了解的太多,而且光看网上的文字有点难懂。

...全文
1023 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文提出了一种改进的各向异性引导滤波器,通过引入加权平均策略,在实现最大程度平滑扩散的同时有效保留图像中的强边缘特征,从而实现强各向异性滤波效果。该方法在继承传统引导滤波器计算效率高、运行稳定优势的基础上,进一步增强了边缘保持能力与结构感知性能,适用于图像去噪、细节增强、边缘提取和多尺度分解等任务。文中配套提供了完整的Matlab代码实现方案,便于算法复现与实际应用,具有较强的工程实用性与科研参考价值。; 适合人群:具备一定图像处理理论基础和Matlab编程能力,从事计算机视觉、图像增强或滤波算法研究的科研人员与工程技术人员,尤其适合攻读硕士、博士学位并聚焦于图像预处理方向的研究者。; 使用场景及目标:①在图像预处理阶段去除噪声干扰的同时保持关键结构信息;②作为高层视觉任务(如语义分割、目标检测)的前置模块以提升输入图像质量;③支持学术研究中的滤波算法对比实验与性能评估,助力高水平论文撰写与算法创新。; 阅读建议:建议读者结合所提供的Matlab代码深入理解加权机制与各向异性扩散原理,重点分析局部窗口内权重矩阵的构建方式及其对滤波性能的影响,并推荐与双边滤波、标准引导滤波等经典方法进行可视化对比,以全面掌握其优势与适用边界。
源码下载地址: https://pan.quark.cn/s/7f242081e14c 标题 "普中51-A2开发板资料.7z" 提供的信息表明,这是一个与普中51-A2开发板相关的资源包。 51单片机是微控制器领域中的一个经典系列,STC-89C52是51系列中的一个型号,常用于教学和入门级项目。 这个压缩包可能包含了一系列帮助用户理解和使用该开发板的材料。 描述中的"SHA256: B889D6FE71BF1CB25C67D57BE0854787F4D6902B20E2A1AF8FC9DEB66F4C7827"是文件的哈希值,用于验证文件的完整性和未被篡改,但具体知识点不在此范围内。 从标签来看,我们可以期待以下内容:1. **普中51-A2开发板**:这是一款基于51单片机的开发工具,可能包括硬件电路图、原理图、PCB设计文件等。 2. **STC-89C52**:这是51单片机的一个变种,具有增强的特性,如更多的I/O口、更大的内存等。 资料可能包含其数据手册、引脚定义、编程指南等。 3. **开发板**:可能包含开发板的使用手册、接线教程、初始化设置步骤等。 4. **51单片机**:基础理论、指令集、编程语言(如汇编或C语言)、中断系统、定时器/计数器的使用等。 5. **开发工具**:可能有Keil、Proteus、ISP编程软件等,这些工具用于编写、调试和烧录代码到单片机中。 从压缩包子文件的文件名称列表来看,我们可以深入学习以下内容:1. **普中51单片机开发攻略--A2.pdf**:这可能是开发板的用户指南或教程,涵盖基本操作、示例项目和常见问题解答。 2. **5--开发工具.rar**:可能包含开发环境的安装教程、配置指南和使用技巧。 3. **5--实验程序....
内容概要:本文围绕“基于水动力模型的螺旋桨驱动机器人模拟研究”展开,系统性地实现了无人水下航行器(UUV)的动力学建模与控制仿真,采用Matlab作为主要工具完成系统建模、算法设计与仿真验证。研究聚焦于构建精确的水下机器人六自由度非线性动力学模型,充分考虑流体静力学、附加质量、阻尼力及重力-浮力耦合效应等关键水动力因素,并在此基础上设计了PID与LQR复合控制策略,实现对UUV姿态角(俯仰、横滚、偏航)与运动速度的高精度协同控制。研究内容涵盖水动力模型建立、运动方程推导、控制器参数设计、稳定性分析及仿真平台搭建等核心环节,通过仿真实验验证了所提控制策略在复杂水下环境中良好的动态响应性能与鲁棒性,为UUV的自主导航、路径跟踪与高精度作业提供了有效的理论依据和技术支持。; 适合人群:具备自动控制理论、海洋工程或水下机器人等相关专业背景,熟悉Matlab/Simulink仿真环境,掌握经典控制理论(如PID)与现代控制理论(如状态空间、LQR)的基础知识,且具有一定动力学建模与仿真经验的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于水下机器人控制系统的设计、性能评估与算法优化;②支撑高水平学术论文的撰写与发表,尤其适用于UUV建模、水动力仿真、非线性控制、多变量耦合控制等领域;③为实际水下装备的研发提供低成本、高效率的前期仿真验证平台,探索先进控制算法在复杂流体环境中的应用潜力。; 阅读建议:建议读者结合提供的Matlab代码与理论文档进行同步学习与仿真操作,重点关注水动力系数的物理意义与获取方法、非线性模型的线性化处理技巧以及PID与LQR控制器的参数整定过程,深入理解多变量系统间的耦合关系及其对控制性能的影响,从而全面掌握UUV仿真与控制的核心技术要点。

301

社区成员

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

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