BUAA_OO 第一单元总结】的更多相关文章

BUAA_OO第一单元作业总结 单元任务 第一单元的任务为实现表达式的求导,其中第一次作业是对简单多项式的求导,第二次作业是对包含简单幂函数和简单正余弦函数的多项式的求导,第三次作业是对包含简单幂函数和简单正余弦函数同时存在嵌套情况的多项式的求导. 一.基于度量的程序结构分析 第一次作业 1. 设计思路 第一次作业给出的多项式每一项之间仅包含加减运算,并且每一项都有固定的格式,即为系数*x^指数,因此可以创建两个ArrayList链表,一个为系数,另一个为指数.首先通过正则表达式将关于空白符与符…
OO第一单元总结 目录 作业总体分析 代码结构分析 遇到的bug问题    找到bug的方法 结语 一.作业总体分析 尽管这个单元三次作业都是表达式求导,但我认为每次作业的侧重点是不同的. 对于第一次作业而言,这是我们OO课程的首次作业,所以从难度上讲并不大,仅仅需要完成对幂函数和常函数的求导,其中最主要的部分是完成对表达式的输入处理,即检查出正确的输入格式,这部分的完成情况对于互测是非常重要的. 到了第二次作业,这次的作业内容在第一次作业的基础上增加了对sin(x)和cos(x)的求导.这次作…
一.程序设计思路 在我的三次作业中都采用了类的分层结构,采用逐项匹配,分层求导的思路. (一). 第一次作业中构建了Polynimial(多项式)类,在类的构造器中就完成了对非法空格的判断并对合法表达式进行删除空格处理.由于第一次作业仅含有带有系数的幂函数与常数项,因而我就没有专门构建针对每一个项的类,而是在本类中就定义了getitem方法,用正则表达式逐项匹配出符合要求的项.在第一次作业中我求导的基本单位为项,在构造正则表达式时我对表达式中可能出现项的类型进行枚举,分别为:(1)系数与指数均有…
1.简单多项式求导 第一次作业的难点,我认为是对输入的预处理,尤其是正则表达式的使用.这次作业的思路是:首先将表达式进行预处理,(由于题目中要求不会有空格产生的WF,所以可以放心大胆的消除空格). 消除空格之后进行表达式的解析,主要分为表达式的判断,以及对指数以及系数的存储,将指数以及系数分别放在两个容器里. 解析之后是求导运算,我这里采用的方法是将容器里的数字进行操作,最终得到新的系数与指数. 最容易卡bug的地方是表达式的输出,一不小心,有些地方优化的时候忘记考虑,就会在户厕中gg. 下面是…
前言 第一单元的主题是表达式求导,第一次作业是只带有常数和幂函数的求导,第二次作业加入了正余弦函数,第三次作业又加入了表达式嵌套,难度逐渐提升.总体来说前两次作业还易于应对,而第三次作业做得相对有些艰难.而且这其中还有很多巧合,第二次作业延时到了周三上午,而我在周二晚睡觉前经过本地测试又找到一处致命BUG,一直改到一点才交上:第三次作业一开始中测的最后一个点一直没有通过,周二找了一天本来已经放弃,后来得知作业又延时到周三中午,成功在周三上午找到了那处BUG,并正好用完十次无偿提交次数,终于过了全…
BUAA面向对象设计与构造——第一单元总结 第一阶段:只支持一元多项式的表达式求导 1. 程序结构 由于是第一次接触面向对象的编程,加之题目要求不算复杂,我在第一次作业中并没有很好利用面向对象的特点,只建了两个类. 第一个DerivativeFunc类只包含main函数,而剩余所有功能包括正确性检查.求导和输出都全在类Poly里.这两个类之间也没有继承等关系,所以整体看起来还是偏向C语言的思路,这也是这次作业最大的问题.在类Poly里面,我建立了两个链表来分别存储每一项的系数和幂指数. 从以上两…
前言 OO第一单元共有三次作业,分别为多项式求导.带有三角函数与幂函数的表达式求导.带有嵌套表达式因子的表达式求导.虽然这三次作业都离不开求导,可是每次作业的复杂度都是大大递增的.对于习惯于面向过程编程的我来说,完成这三次作业是一个不小的挑战.我在各个方面也还存在着诸多问题,借由此次博客,我将回顾一下完成这三次作业的经历,并对代码进行一次详细的分析与总结. 基于度量的程序结构分析 这里使用了IDEA的Diagram和MetricsReloaded工具辅助分析.工具里的一些参数说明如下: 方法与类…
oo第一单元的作业是对多项式的求导.下面就是对三次作业分别进行分析. 第一次作业 分析 第一次作业相对来讲比较简单,甚至不用面向对象的思想都能十分轻松的完成(实际上自己就没有使用),包含的内容只有常数项和指数项.实际上这次作业给我的最大收获是初步认识了正则表达式的使用.程序的结构如下: 设计 结构十分简单,只有一个类(就是面向了过程...),类的构造函数用以处理输入的字符串,calcDiff()用来计算导数. 度量分析 从表格中可以看出来,factor()方法的复杂度与独立路径条数较高,这是因为…
OO第一单元作业总结 一.前言 开学四周,不知不觉已经做了三次OO作业.事实上,每一次作业对我来说都是很大的挑战,需要花费大量的时间和精力来学习. 虽然学得很艰苦,但最后还是连滚带爬地完成了.(好惨一人) 二.基于度量分析程序结构 (1)第一次作业 类图: 分析:第一次我写了三个类,Derivation类是负责构建一个整体的流程框架,输入.处理.求导.输出.Term类管理表达式的项,主要包含系数coe和指数index两个属性,Dealstr主要负责字符串合法性的判断和进行求导前一些简单的处理.此…
OO第一单元总结 面向对象设计与构造的第一单元,对“面向对象”的概念还根本不理解不熟悉,只觉得需要“分模块”,但不知道怎么分,分多少模块,怎么根据需要的模块的功能建立类.学习的进度又太慢,根本跟不上出作业的速度,导致三次作业的代码都写得很乱,很不面向对象. 1. 第一次作业 1.1 程序结构分析 第一次的作业比较简单,但由于刚刚接触面向对象,程序的结构仍然不太好.整个 project 只有两个类,主类和多项式处理类,且两个类的复杂度差别较大.由插件 MetricsReloaded 的分析可知,多…