301
社区成员
发帖
与我相关
我的任务
分享1.Mainclass类:实现自定义函数和需处理字符串的读入和结果的输出。同时集成了自定义函数字符串替换方法的实现。
2.Cusfunc类:即自定义函数类,实现了自定义函数的存储和其不同部分的分割并分别存储。
3.Single类:即单项式类。因子定义为a*x^b*exp(),所以单项式成员为a,b,exppoly,该类实现了单项式的加减乘和求导,同时利用了toString方法处理了信息流转问题。
4.Poly类:即多项式类。多项式其实就是单项式的一个集合。通过引用单项式的方法进行遍历实现多项式的加减乘和求导。
5.Term类:即项类。实现了项解析,将项分割为一个个因子进行存储。
6.Expr类:即表达式类。实现了字符串预处理和字符串解析,将表达式分割为项进行存储。

上图为UML图



类优点:实现方便。
类缺点:不够面向对象。类之间的区分不够显著。对封装的考虑有所欠缺。
未经历重构
若下次迭代出现了sin,cos,ln()等其他函数,那么本质上只需要扩充Single类成员,再完善各种方法即可。
本人的架构大概可分为两类。其中,Single和Poly可归为“计算类”,他们执行计算过程。Expr和Term可归为解析类,负责处理字符串和给表达式降维。架构缺点是应该将Mainclass里的字符串替换函数写在Cusfunc类中。
合并同类项,exppoly合并同类项。检测(a==0)(b==0 or b==1)(exppoly.equals()=="0")
面向对象编程和面向过程编程最重要的在于体会类这个概念。在写oo代码的时候,由于把任务分散到了各个类当中,而代码是由一个人编辑。所以有时会产生从哪开始,大楼的四个角要同时开拔的为难场景。但是要学会克服这个坎。即写a类的时候要告诉自己b类的方法已经实现了。
此外,要认识到测试的重要性。要学会使用最少的测试样本检测出最多的bug。
我认为可以第二次作业求导,第三次作业嵌套括号和自定义函数。