1第一次作业 1.1题目描述 对形如4*x+x^2+x的多项式求导. 1.2类图 1.3度量分析 在完成第一次作业时,我的写法没有特别的"面向对象".唯一封装起来的是Node,代表多项式的一个项.PolyDerivation是一个方法庞杂的类,先判断输入是否合法,再将多项式拆分成独立的项,接着求导,同时也包含了程序的入口main.这无疑是一个面向方法的写法. 写valid方法判断合法性的时候,经历过一次波折.一开始的思路是用一个很长的大正则表示出整个多项式,写完发现超过了100个字符,…
面向对象第一单元总结:Java实现表达式求导 题目要求 输入一个表达式:包含x,x**2,sin(),cos(),等形式,对x求导并输出结果 例:\(x+x**2+-2*x**2*(sin(x**2+(cos(x**2))))\) 思路分析 表达式拆解 将一个表达式分为三级:表达式Polynomial.项Term.因子Unit 一个Poly由Term累加构成,一个Term由Unit累乘构成 解题思路 读入表达式字符串,将其分解成一个表达式类 对表达式类求导 输出导数表达式的字符串形式 字符串->…
一. 基于度量的程序结构分析 1. 第一次作业 这次作业是我上手的第一个java程序,使用了4个类来实现功能.多项式采用两个arraylist来存,系数和幂指数一一对应. private ArrayList<BigInteger> coefs; private ArrayList<BigInteger> degrees; 四个类分别为 Poly类,代表表达式: PolyDiff类,代表求导运算: PolyParse类,封装了格式检查,encoding(输入的多项式转为内部存储形式)…
一.程序设计思路 在我的三次作业中都采用了类的分层结构,采用逐项匹配,分层求导的思路. (一). 第一次作业中构建了Polynimial(多项式)类,在类的构造器中就完成了对非法空格的判断并对合法表达式进行删除空格处理.由于第一次作业仅含有带有系数的幂函数与常数项,因而我就没有专门构建针对每一个项的类,而是在本类中就定义了getitem方法,用正则表达式逐项匹配出符合要求的项.在第一次作业中我求导的基本单位为项,在构造正则表达式时我对表达式中可能出现项的类型进行枚举,分别为:(1)系数与指数均有…
OO_Unit1_表达式求导总结   OO的第一单元主要是围绕表达式求导这一问题布置了3个子任务,并在程序的鲁棒性与模型的复杂度上逐渐升级,从而帮助我们更好地提升面向对象的编程能力.事实也证明,通过这3个task的练习,我的OO水平也在各方面得到了不同程度的提高,包括但不限于模型的设计.对Java中各类容器的使用和重载以及测试手段的多样化等等.接下来我将分别就这3个task对我的代码进行分析,同时总结自己的一些收获与心得. Task 1 任务目标:实现由简单幂函数构成的多项式的求导 任务特点:…
OO Unit 1 表达式求导 面向对象学习小结 前言 本博主要内容目录: 基于度量来分析⾃己的程序结构 缺点反思 重构想法 关于BUG 自己程序出现过的BUG 分析⾃己发现别人程序bug所采⽤的策略 测试集构造 有条理地构造一个测试集 面向对象思维方式 (次次重构,越来越像个OO代码,但还远远不够. 基于度量来分析⾃⼰的程序结构 前两次作业 第一次作业用两个ArrayList存系数和指数,第二次作业三元组,第三次作业才开始有点OO思维. 第三次作业 类图如下. 思路:根据输入流面向过程地构造表…
2019年北航OO第1单元(表达式求导)总结 1 基于度量的程序结构分析 量化指标及分析 以下是三次作业的量化指标统计: 关于图中指标在这里简要介绍一下: ev(G):基本复杂度,用来衡量程序非结构化程度.基本复杂度高意味着非结构化程度高,难以模块化和维护. Iv(G):模块设计复杂度,用来衡量模块判定结构,即模块和其他模块的调用关系.模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离.维护和复用. v(G):模块判定结构复杂度,数量上表现为独立路径的条数. 从上面三张图可以看出,整体上3个…
figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-width: 100%; vertical-align: middle; } button, input, select, textarea { color: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit…
Java描述表达式求值的两种解法:双栈结构和二叉树 原题大意:表达式求值 求一个非负整数四则混合运算且含嵌套括号表达式的值.如: # 输入: 1+2*(6/2)-4 # 输出: 3.0 数据保证: 保证表达式合法(含除数不为0). 保证运算数是非负整数. 双栈版 维护两个栈: 符号栈,数字栈,遍历输入串过程中计算 数字直接入栈 符号入栈 a. 符号栈为空 b. 当前符号优先于栈顶符号 c. 栈顶为'(' 符号出栈计算: 栈顶符号非'(' 且 优先级更高. class ExpStack { pri…
title: BUAA-OO 第一单元总结 date: 2020-03-19 20:53:41 tags: OO categories: 学习 OO第一单元通过三次递进式的作业让我们实现表达式求导,在这几次作业中我也有很多收获.下面就回顾一下前三次作业中存在的问题. 在个人看来,表达式求导的难点主要有三部分--对输入的处理.表达式的存储结构以及化简.这三次作业我所采用的表达式存储结构都不相同,不过重构的速度还是比较快的(安慰自己). 第一次作业 在第一次作业中,我的程序总体架构为提取幂函数为Po…