OO-Unit1博客

许洲诚-24373076 2026-03-31 15:38:09

OO-Unit1博客

一、基于度量分析程序结构

类名属性个数方法个数类总代码规模总控制分支数核心职责
Factor(接口)0280定义因子展开/求导标准接口
Parser1915027表达式语法解析核心逻辑
Lexer345013词法分析,生成Token
Num15200数值因子的展开与求导
Mul26250乘法因子的展开与求导
Add36302加减因子的展开与求导
Term49556多项式项的合并与运算
Preprocess04202表达式字符串预处理
ReFun34506递归函数展开逻辑
Mainclass01403程序入口,流程调度
Exp15252指数函数因子的展开与求导
Poly1812018多项式运算与格式化输出
Var26357变量因子(x/y)的展开与求导
Fun1280函数体静态属性管理

所有 Java 类均呈现高功能内聚,每个类严格遵循单一职责

img

二、架构设计体验

第一次作业中,我借鉴了第一次上机时的程序结构,进行表达式的解析,并在poly类中用Arraylist存储各个term(形如a*x^b)。
第二次作业,我增加了exp类来实现exp需求的拓展,对于自定义函数,我新增了Fun类,在Parser解析表达式时进行字符串替换。对于选择表达式,我在ParseFactor方法中新增了解析选择表达式的分支,解析[(A==B)?C:D]中的ABCD,实现相等判断并返回C或D。
第三次作业,实现双变量的扩展和求导功能,新增ReFun类对递推函数进行处理,并在"f"token的解析中新增自定义函数和递推函数的分支,返回需要替换的表达式。
考虑到其他迭代,有可能会新增sin和cos函数,此时需要给每一个term新增两个Arraylist,分别存储sin和cos中的factor

三、bug分析及测试

1.作业中的bug
第二次作业:指数爆int,将var类中exp属性改为Biginteger即可解决,提前明确数据范围将会大大减少此类bug;进行多层嵌套乘方时还会TLE,是因为没有实现快速幂,需要增强优化性能的意识。
第三次作业:判断exp内是否需要加括号的逻辑有误;ParseFactor缺少对"+"token的解析:嵌套处理不当导致TLE;
2.测试策略
起初使用AI测试,效果不佳,后主要采用边界测试和嵌套测试,但是嵌套测试强度不足,没有检测出潜在的TLE问题

四、相关优化

输出时优先输出正项;采用快速幂降低时间复杂度

五、大模型相关使用

作业正确性性能优化
第一次10%0%
第二次20%20%
第三次40%50%

大模型还用于讨论架构,debug,拆分过长方法

六、心得体会

对于代码的拓展性有了更深刻的认识,先前代码的缺陷将为后续的迭代带来麻烦。此外还意识到了自己测试工作的不足,下一个单元中将注重代码的测试,学习测试策略方法。

七、未来方向

希望课程组能提供代码测试相关的指导

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

302

社区成员

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

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