第一次作业 功能描述: 对输入的表达式进行求导计算和格式正误判断   思路: 一开始的想法是想写一个大正则找到一个通项式,通过这个多项式来判断WRONG FORMAT,结果发现正则写的总是不完善,会漏掉一些没用考虑到的情况,所以就先写一个非法空格可能出现的所有情况的正则 把带非法空格的表达式判断为WRONG FORMAT! 然后按照常数.带x的项,封装放入ArrayList动态数组中进行求导和合并,最后输出. 在处理爆栈的时候,使用了独占模式.独占与贪婪一样匹配最长.不过在独占量词模式下,正则表…
2019面向对象课设第一单元总结 一.三次作业总结 1. 第一次作业 1.1 需求分析 第一次作业的需求是完成简单多项式导函数的求解,表达式中每一项均为简单的常数乘以幂函数形式,优化目标为最短输出.为了满足优化目标,我们需要将含有相同指数的项进行合并. 1.2 实现方案 根据需求,我们很容易就能想到利用HashMap构建常数和幂指数的对应关系(再加上这是第一次作业,本以为只是让我们借此熟悉一下Java语法,于是并没有考虑程序可扩展性),于是仅建立了Polynomial多项式类和用作主函数的Tes…
一.基于度量分析程序结构 (一)第一次作业 (1)设计思路 本次作业只涉及到简单幂函数通过加减运算而复合而成的函数,因此笔者自然的把函数分成了函数本体以及单个的项两个部分,在笔者的设计中两个类的功能如下: Poly:存储函数本体.将函数的各个项分解出来 Item:存储单个的项.单个项的求导.输出 (2)UML类图 本次设计主要的采用了Poly和Item两个类,分别代表函数表达式和单个的幂函数因子,本次设计中存在的问题在于,主类中包含不必要的方法init()用以对字符串进行预处理,通过研讨课,笔者…
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…
2019年北航OO第1单元(表达式求导)总结 1 基于度量的程序结构分析 量化指标及分析 以下是三次作业的量化指标统计: 关于图中指标在这里简要介绍一下: ev(G):基本复杂度,用来衡量程序非结构化程度.基本复杂度高意味着非结构化程度高,难以模块化和维护. Iv(G):模块设计复杂度,用来衡量模块判定结构,即模块和其他模块的调用关系.模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离.维护和复用. v(G):模块判定结构复杂度,数量上表现为独立路径的条数. 从上面三张图可以看出,整体上3个…
OO Unit 1 表达式求导 面向对象学习小结 前言 本博主要内容目录: 基于度量来分析⾃己的程序结构 缺点反思 重构想法 关于BUG 自己程序出现过的BUG 分析⾃己发现别人程序bug所采⽤的策略 测试集构造 有条理地构造一个测试集 面向对象思维方式 (次次重构,越来越像个OO代码,但还远远不够. 基于度量来分析⾃⼰的程序结构 前两次作业 第一次作业用两个ArrayList存系数和指数,第二次作业三元组,第三次作业才开始有点OO思维. 第三次作业 类图如下. 思路:根据输入流面向过程地构造表…
经过了三次作业之后,OO第一单元告一段落,作为一个蒟蒻,我初步了解了面向对象的编程思想,并将所学内容用于实践. 一.第一次作业 1.架构分析 本次作业需要完成的任务为简单多项式导函数的求解.表达式仅支持常数项以及幂函数项的简单加减运算,并且输入保证是符合格式规范.整体要求上较为简单,但由于我对一些基础知识掌握不透彻,并且对面向对象编程的思路还理解得不够,所以整体上本次作业基本上还是面向过程,可移植性以及可扩展性很差. 大致思路:首先将表达式化简,暴力去掉空白项,并且将连续的+.-号化简,使每项统…
一.前三次作业内容分析总结 前言 前三次作业,我提交了三次,但是有效作业只有两次,最后一次作业没能实现多项式求导的基本功能因此无疾而终,反思留给后文再续,首先我介绍一下这三次作业,三次作业围绕着多项式求导展开,输出目的都是一致的,即对输入的多项式进行求导,将求导结果打印到显示屏,作业难度递增,每一次对多项式的要求都更加宽松,相应而言,求导的难度也就加大,从简单而固定的多项式到复杂而灵活的多项式,处理的难度随之加大,从正则表达式解决一切到继承接口多态的引入,java代码也越来越复杂,那么就让我们来…
前言 学习面向对象这门课程的后的第一单元作业,主线是多项式求导,三次作业层层推进,由单一的幂函数求导,到幂函数和三角函数的复合求导,最后再到两种函数的嵌套求导,由两个类到重构后的十几个类,我逐渐对面向对象的思想有了更深一步的理解,对结构化的设计也有了更加深刻的体会. 第一次作业 作业要求 实现仅含幂函数和常数的多项式求导,数据长度上限1000,性能上要求结果越短越好(即化简到最简),保证输入数据合法. 实现简述 完成本次作业时,由于扩展意识不足,采取了仅为解决当前问题的设计模式,包含两个类Pol…
OO是个借助Java交我们面向对象的课,可是萌新们总是喜欢带着面向过程的脑子去写求导,然后就是各种一面(main)到底.各种方法杂糅,然后就是被hack的很惨. 第一次作业:萌新入门面向对象 题目分析 题目其实不难,最难不过是这种东西的求导: +4*x - -x^2 + x 其实很好办啊,直接超级长的一个正则表达式莽,如图. String pattern = "..."://好长的一段 String longPattern = "pattern(pattern)+"…