OO-Unit4 个人感想与收获 22230612-杭洋

杭洋-22230612 学生 2024-06-16 16:29:27

正向建模与开发

正向建模就是”先设计,再代码“的思想,也就是先设计好整个程序的架构以及各个类之间的关系,然后逐步地取实现代码。这是一种在实际操作当中常用的开发手段,主要面向规模庞大的代码体系。

 

img

本单元的架构设计

  • 从整体的架构上,我尽可能地抽出了很多概念的共同性质,然后使用同样的类取表现它。目的是让整个架构更见简洁的同时可维护。主要的抽象概念如下:
      - 书架:我使用了Shelf<T>-SubShelf<T>的结构,用于抽象用户持有书籍、书架和图书馆的几个功能模块的概念。由于各个概念有着自己不同的额外信息需求,比如用户需要知道某本借书的时间,书架需要知道借书的本数,漂流角需要知道某本借书的次数,于是我使用泛型<T>来表示需要额外记录的信息。这也是我第一次自定义泛型容器。
      - 书本:由于记录的书本有两种,除了记录书本本身的信息以外,可能还会拓展心的内容<T>,所以将书本换做本身Book和数目BookItemShelf<T>两个部分记录。
  • 为了使代码尽量发挥面向对象语言的优势而不是显得面向过程,我在输入处理的时候确定了将同一本书一定要对应某一个确定的对象的想法。这让我在输入的时候用parseBookparseUser两个函数将书本和用户从抽象的描述信息直接对应到一个确定的对象,大大方便了后续的处理。
  • 最终的代码设计和自己最初的架构设计是比较吻合的,这体现出了正向建模的优势。

四个单元中架构设计思维的演进

在四个单元当中我的感受是循序渐进的。

  • 在第一单元当中,我感受到了递归下降法的魅力。当时主要的架构设计思路停留在分阶段处理当中,尤其是在递归下降的部分,代码之间是高度耦合的,所以在整体的设计上是模块化的思想。
  • 在第二单元当中,我体会到了多线程编程的新方法。多线程编程相对于单个程序的编程当中具有更多的新的特性,尤其是同步,特别考验个人的代码能力。我觉得在以后的编程当中,这一部分也是非常重要的。
  • 在第三单元当中,我使用了lazy标记等方法,让设计架构兼顾了性能。同时,类似PL的形式化描述让我看到了一些代码的新的可能。在其他场合与其他优秀高校的同学进行交流的过程当中,我感受到JML这一个小众的形式虽然看起来在科研当中主要的作用并不属于OO这一块(这也是我开发过程当中的疑惑),但是课程组的引入无比适合。
  • 在第四单元当中,我根据正向建模的要求,尝试先设计好架构再进行实现。这一点非常关键,让我的代码在增量开发的过程当中几乎没有做过结构上的改动,同时每一次的

四个单元中测试思维的演进

测试的主要思路是根据题目的要求构造具有特点的数据点,然后针对测试点进行提交。同时,感谢室友大佬yyg同学和他的评测机,在debug过程当中帮助了我很多很多!(鞠躬):)

课程收获

在面向对象的课程当中,我收获颇丰。我最大的感受是,这一门课并非只是一门面向代码-开发的课程,而更多的是教会我们开发的架构设计的智慧。至少有了oo课程的学习之后,我在acm竞赛等场合不再害怕规模庞大复杂的模拟题,为我的队伍在今后的区域赛当中攻克高码量题目提供了更低的门槛和更高的机会。同时,oo课程的设计思路至少开拓了我的眼界,让我觉得这一部分所体现出的设计思想是在今后很多方面的工作当中都适用的。

...全文
61 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文提出了一种融合模型预测控制(MPC)与人工势场法(APF)的船舶运动规划方法,旨在解决复杂海上交通场景下符合国际海上避碰规则(COLREG)的智能避碰路径规划问题。该方法充分利用MPC的滚动优化与前瞻预测能力,结合APF对动态障碍物的实时响应优势,构建包含目标引力场与多船斥力场的综合势场模型,并显式嵌入COLREG规则以确保避让行为的合法性与可解释性。通过在多船会遇、交叉、追越等多种复杂场景下的Matlab仿真实验,验证了该方法在生成安全、平滑、合规轨迹方面的有效性与鲁棒性,为智能船舶自主航行提供了可靠的决策支持。; 适合人群:从事航海自动化、智能船舶系统、海洋机器人、路径规划与智能控制研究的科研人员,以及具备Matlab编程与控制系统基础的研究生和工程技术人员。; 使用场景及目标:① 实现多船复杂交互环境下的智能避碰决策;② 开发符合国际法规的无人船自主航行系统;③ 深入学习MPC与APF融合算法的设计原理与仿真实现;④ 为智能航运、海上交通管理系统提供核心算法技术支持。; 阅读建议:建议结合提供的Matlab代码进行仿真实验,重点理解势场函数构建、COLREG规则的形式化表达、约束处理机制及MPC滚动优化的实现细节,同时对照国际避碰规则条款验证算法行为的合规性与合理性。

301

社区成员

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

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