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

杭洋-22230612 学生 2024-06-16 16:26:53

# 正向建模与开发

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

![](main.jpg)

# 本单元的架构设计

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

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

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

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

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

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

# 课程收获

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

...全文
42 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
内容概要:本文提出了一种考虑储能电池参与电力系统一次调频的技术经济模型,并基于该模型研究储能容量的优化配置方法。通过构建涵盖调频收益、投资成本、运维费用及寿命损耗等因素的综合经济性评估框架,结合Matlab仿真平台实现容量优化求解,旨在提升储能系统在电网调频中的经济性与技术可行性。文中深入分析了储能参与调频的动态响应特性、功率分配策略以及循环寿命对经济效益的影响,为新型电力系统背景下储能系统的规划、运行与投资决策提供理论支撑与实践路径。; 适合人群:具备电力系统基础知识及相关仿真能力的科研人员、研究生以及从事储能系统规划、电网调度与辅助服务市场的工程技术人员。; 使用场景及目标:①应用于新型电力系统中储能参与辅助服务市场的容量规划与经济性评估;②支撑科研项目中关于储能系统经济性建模、优化算法开发与政策仿真研究;③为电力企业制定储能投资策略、参与电力市场竞价提供量化分析工具与决策依据。; 阅读建议:建议结合Matlab代码深入理解模型构建过程,重点关注目标函数的设计、约束条件的设定及关键参数的敏感性分析,同时可将该模型扩展至二次调频、多时间尺度协调控制等场景进行对比研究与功能拓展。
已经博主授权,源码转载自 https://pan.quark.cn/s/1ababf45b226 QT与Basler相机SDK的开发源代码及详尽说明资料是一份极具价值的参考资料,它融合了QT图形用户界面框架与Basler工业相机的软件开发工具包,为开发人员提供了一套全面的二次开发支持。Basler相机凭借其高清晰度、高运行速度和高度可靠性,在工业自动化行业中得到了广泛的应用,而QT则是一款功能强大的跨平台用户界面开发工具,两者的结合能够实现高效且用户友好的相机应用程序。1. **QT框架**:QT是一个基于C++的开源库,用于构建能够在多个平台上运行的应用程序。其核心功能涵盖了事件管理、网络通信、数据库连接以及丰富的图形视图模型。在当前项目中,QT被用于设计相机操作的图形用户界面,例如参数配置、图像预览展示等操作。2. **Basler相机SDK**:Basler提供的软件开发工具包(SDK)包含了与相机硬件交互的应用程序接口,使开发人员能够访问相机的全部功能,包括图像采集、曝光时间调整、增益控制、触发模式设定等。借助SDK,开发人员可以编写出性能卓越、响应迅速的图像处理程序。3. **SDK的二次开发**:二次开发指的是在原有SDK基础上进行的扩展或个性化定制工作。在此项目中,开发人员可能已经将SDK的功能集成到了QT界面中,比如增加了实时图像显示、图像保存、相机参数调节等特性。4. **QT与工业相机协同开发**:这种开发方式代表了QT界面与工业相机之间的紧密协作,通过QT的图形用户界面来操控相机,完成图像的即时预览、捕捉、分析等任务,同时确保用户界面的直观性和便捷性。5. **Demo_BaslerCamera_Qt-master**:这可能是源代码项目的主文件夹,...
内容概要:本文围绕芯片制造中的质量溯源问题,介绍如何通过数据挖掘技术从WAT/CP电性测试数据与wafer map缺陷图中识别工艺异常。文章系统讲解了WAT/CP数据、wafer map模式、bin分析和多批次关联等关键概念,提出了数据清洗、可视化、map特征化、相似度检索与聚类等核心技术方法,并通过完整代码示例展示从数据读取、热力图生成、特征提取到随机森林分类的全流程,强调“可视化先行、特征工程为核心”的工业实践逻辑。最后展望AutoML、多模态大模型与实时数据闭环等未来方向。; 适合人群:具备Python与数据分析基础,从事半导体制造、良率分析、工艺整合或质量工程(PI/OE/QE)的技术人员,以及对工业数据挖掘感兴趣的数据科学家;尤其适合工作1-3年、希望将机器学习应用于实际产线问题的工程师。; 使用场景及目标:①实现WAT/CP数据的自动化可视化与异常检测;②将wafer map空间模式转化为可建模特征,进行缺陷分类与根因追溯;③通过相似案例推荐加速异常排查;④构建可持续监控的良率分析系统。; 阅读建议:此资源以实际代码驱动,建议读者结合文中案例动手实践,重点关注特征工程的设计逻辑与可视化方法的应用时机,理解每一步背后的工艺含义,并尝试将方法迁移至自有数据集,逐步拓展至聚类、深度学习或多源数据融合分析。

301

社区成员

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

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