作业分析
前三次作业是正则表达式求导,由于对课程的重视度不够以及pre开始的较晚,三次作业都没有有效提交。但是在这期间我多少还是有一些收获的,希望后面的作业能够努力完成。
程序结构
因为第一次作业没有有效提交,且基础较差,因此我后续没有再去重构以完成第二次和第三次作业,这里描述一下第一次作业的结构。
UML分析

第一次作业对简单多项式求导,Poly类用于解析Main读取到的多项式,并进行求导后返回;Polyitem解析由Poly分割得到的每一项,并完成求导,存储每一项的系数与指数。
复杂度分析
方法分析:
ev(G):基本复杂度衡量程序非结构化程度,非结构成分降低了程序的质量,增加了代码的维护难度,使程序难于理解。
iv(G) :模块设计复杂度衡量模块判定结构,即模块和其他模块的调用关系。软件模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离、维护和复用。
v(G) :衡量一个模块判定结构的复杂程度,数量上表现为独立路径的条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护。
这次作业Main函数复杂度过高,总的来说还是比较面向过程的设计思路,输入输出以及正则表达式匹配部分全处于main函数中,Poly和PolyItem类更多类似于写好的函数进行调用,类内部实现的功能较少,同时整体结构也过于简单,后续难以扩展。

类分析:
同方法分析部分显露的问题,Main类的复杂度过高,整体比较面向对象。

作业难点
- 多项式这三次作业的难点主要在于正则表达式的匹配(没学会递归下降分析法),在表达式拆分的过程中总是会遇到问题,导致结果不正确。
- 第二点是对于面对对象构造的理解,整体框架设计不够完善。
- 最后是对于java语言不够熟悉,包括不同容器的使用等问题。
感想与体会
- 第一部分作业给我最大的提醒是一定要投入更多时间及时完成作业,由于个人的问题,第一次作业没有完成,导致后面没法跟上进度,进而整段垮掉,因此在第二部分作业开始的时候我会投入更多时间去完成。
- 除此之外,在前三周的实验与pre完成过程中,我逐渐开始掌握了面向对象的设计思路,通过完成实验,研讨课与课上讲解的内容,对于工厂模式等设计模式,深浅拷贝,类与类之间的依赖关系等知识也有了一定的了解。希望能在后续的课程中学习到更多知识。
posted on
浙公网安备 33010602011771号