BUAA_OO_2023 第一单元总结
BUAA_OO_2023 第一单元总结
程序设计结构
-
HW1
-
类图

在第一次作业中我使用表达式-项-因子的逻辑结构,用lexer读取字符串,在parser中进行解析。以factor类作为接口,根据题目的文法要求,建立了各种基本因子类和表达式(因子)类。用Unit类(单项式结构)进行最终化简结果的储存和运算,在Factor类中定义calculate函数,实现因子转化成Unit对象,对表达式调用calculate,再通过calculate调用Unit类中的multiply和multiplyList函数可以将表达式各项中的因子相乘并化简,从而将表达式的最终各个因子统一地保存在一个Unit类型的ArrayList中,最后使用Unit类中的print的函数输出。
解析表达式的具体处理:①空字符:在创建lexer对象之前,输入表达式之后直接去掉空字符。②前置0处理:在lexer中读取整数时去掉前导0。③连续的正负号处理:根据文法,在一个因子前最多出现三个连续的正负号,所以只要在parser中的parseExpr,parseItem,parseFactor函数中先读取一个符号,根据正负转换为常数因子(+1或-1)乘入即可。 -
OO度量


总体来说,函数中只有Unit.print的复杂度高,因为输出时一些符号的判断导致函数较长。可以考虑重写toString函数降低函数耦合。在Unit复杂度高也是因为Unit承担了化简,输出的重任,如果在解析时进行化简也许会降低复杂度。Main中多写了一个合并同类项的工作,应该放在Unit中。
-
HW2
-
类图

在这次作业中,增加了三角函数和自定义函数类,我按照第一次的思路把他们作为Factor接口的实现,和其他因子统一起来。然后在Unit中增加了三角函数属性,从而保证Unit能够存放所有类型。对于自定义函数, 我使用了一个HashMap存放自定义函数,在parser中解析时调用自定义函数类的replaceParameter进行替换。
-
OO度量

这次因为对自定义函数和三角函数单独进行解析,所以Lexer,Parser类复杂度变高了,可以使用更多的函数简化中间过程。Main函数中实现了储存自定义函数的HashMap,其实应该单独创建一个类完成这项工作,降低Main的复杂度。
-
HW3
-
类图

由于导数可以视为一个运算符,所有我直接在各个因子类中增加了derive导数运算函数,在Parser类中调用Expression的derive函数,就可以解决。同时这次自定义函数可以使用之前的函数,所以在自定义函数类中必须调用Parser进行化简处理,再返回成表达式形式代入。
-
OO度量

OO度量的问题和之前两次作业相同,根本原因是Unit输出的问题,以及化简堆到Unit类中造成运算复杂度变大,只能重构解决。
程序Bug分析
第一第二次作业没有发现Bug,也是因为对三角函数的优化不够,所以没有进行很复杂的程序设计。在第三次作业中,因为没有自己构造全面的测试数据来测试程序,导致在自定义函数化简返回表达式时,三角函数忘记输出指数,导致犯了低级错误,其他方面暂时没有发现问题。
互测
这三次作业都没有刀人成功,但是也在研讨课上了解了评测机的构建方法,主要核心在于自己构建特殊的数据和自动生成全面覆盖的数据,之后有机会研究一下大佬们的代码。
架构设计体验
这次架构主要是依据发布作业的示例,选择了层次递归的方法,将因子作为接口,在lexer中读取,parser中解析,最后在Unit中化简和输出。
心得体会
这次作业开始感觉很困难,但是架构好整体程序后,再增添新的需求变得更简单,不过优化程序还是需要更优秀的架构和解析方法。
相关推荐
40-基于89C52的量程自适应切换数字电压表设计(设计+说明+原理+仿真).rar
项目40-基于89C52的量程自适应切换数字电压表设计 资料包括Proteus仿真+Keil程序+Altium Designer原理图+软件安装包+参考设计说明书+答辩PPT+设计流程图,保证资料完整性! 功能: (1)本设计以89C52单片机为控制核心,具备高效数据处理与控制能力,可稳定驱动量程自适应切换数字电压表工作。 (2)采用ADC0808作为模数转换传感器,精准将模拟电压信号转换为数字信号,为电压测量提供准确数据基础。 (3)配备数码管显示器,清晰直观呈现测量得到的电压数值,方便用户快速读取电压信息,了解测量结果。 (4)具有自动量程切换功能,能依据输入电压大小智能调整量程,确保测量精度,拓宽电压测量范围。 (5)以待测电压输入为监测对象,资料包含原理图等,助力学生掌握量程自适应数字电压表设计要点。
《人形机器人自适应形态学的变形覆盖建模与控制》,.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
neo4j-community-5.26.32-unix.tar 自己编译 带neo4j-browser-2026.10.08+0.zip 解压可直接运行
neo4j-community-5.26.32-unix.tar 自己编译 带neo4j-browser-2026.10.08+0.zip 解压可直接运行
三电平ANPC并网逆变器+DPWMA调制控制+正负序分离+电网前馈控制仿真
内容概要:本资源系统性地提供了三电平ANPC并网逆变器的Simulink仿真体系,聚焦于DPWMA调制控制、正负序电流分离、电网电压前馈补偿、中点电位平衡控制以及虚拟同步发电机(VSG)等核心技术,构建了完整的构网型逆变器控制框架。内容涵盖弱电网条件下逆变器的正负序阻抗建模与稳定性分析,采用扫频法实现精确的序阻抗辨识,并集成低电压穿越(LVRT)、孤岛检测、预测电流控制等多种典型工况仿真模型。所有模块均配套参考文献与仿真文件,部分为SCI论文复现成果,兼具理论深度与工程实用性,适用于先进控制策略的研发与验证。; 适合人群:面向电力电子、新能源发电、微电网及电力系统自动化等方向的研究生、科研人员及从事并网逆变器控制算法开发的工程技术人员,要求具备扎实的电力系统基础知识和一定的Simulink建模能力。; 使用场景及目标:①支持高校与科研机构开展三电平ANPC逆变器先进控制策略的教学与研究;②服务于高水平学术论文的复现与创新性控制方法(如VSG、MPC、DPWMA)在复杂电网环境下的性能验证;③助力工程师进行并网逆变器控制系统的设计、优化与稳定性评估。; 阅读建议:建议结合所提供的参考文献与仿真模型同步学习,先掌握双闭环控制与中点电位调节的基本架构,再逐步深入正负序分离、阻抗建模与稳定判据等高阶内容,注重理论推导、参数设计与仿真实验之间的闭环验证与相互印证。
LCL滤波三相并网逆变器仿真模型【附设计文档】
内容概要:本文提供了LCL滤波三相并网逆变器的Matlab/Simulink仿真模型及配套设计文档,系统阐述了LCL型滤波器在三相并网逆变系统中的建模方法与控制策略。内容涵盖LCL滤波器的参数设计原则、稳定性分析、有源阻尼技术、PI与准PR控制策略的应用、电流内环与电压外环的双闭环控制系统设计、SVPWM调制技术实现,以及并网系统的谐波抑制与动态响应特性分析。仿真模型完整呈现了逆变器并网全过程,结合设计文档详细说明了各模块的功能实现与参数整定流程,有助于深入理解新能源发电系统中并网逆变器的核心技术难点与工程实现路径。; 适合人群:适用于电力电子、电气工程及其自动化等相关专业的高校本科生、研究生,以及从事新能源发电、微电网、储能系统等领域的科研人员和工程技术人员;需具备电路理论、自动控制原理、电力电子技术和信号与系统等基础知识。; 使用场景及目标:①用于高校课程设计、毕业设计或实验教学中掌握三相并网逆变器的工作原理与控制方法;②支撑科研项目中对LCL滤波器设计、有源阻尼策略、并网稳定性等问题的研究与优化;③作为SCI论文复现、课题开发或工程项目前期验证的技术参考。; 阅读建议:建议结合所提供的设计文档与仿真模型同步学习,重点理解控制器参数整定逻辑、LCL参数设计约束条件及仿真波形的物理意义,建议动手调整关键参数以观察系统稳定性与动态性能的变化,从而深化对并网控制机制与工程实践要点的掌握。


