(1)说实话我这部分真的不知道写些什么,因为我只有第三次作业写了两个类,前两次都是一个类,一个类的好处可能也就是写起来比较方便(不用抽象什么共性了,直接c语言莽过去),缺点很多,架构不清晰,可读性不高,可扩展性不强,还学不到什么东西。因此在这里立一个flag,下次作业必好好构造。由于都是一个类,UML就不上丢人现眼了。

(2)第二次作业的bug点在于我的优化,我对我的表达式的优化方法是求导后在String类中将^1,1*,0等替换掉,0是好办的,但是^1,和1*有些麻烦,我一开始想用String自带的replaceall方法,但是发现这样会把类似于x^122改成x22,发现这一点后我便在求导的过程中将所有的1(就真的是1),改为1q,这样我再在后面把所有的1q替换掉就好了,但是我只把1q*和^1q替换掉了,像+1这样的数据就会输出+1q,这就是bug点所在,所以我在修复bug时把这一部分替换成+(-)1就完成了;第二个bug是我当时误以为制表符等于四个空格,于是没有对制表符进行处理导致出现制表符代码会崩溃,于是在一开始的判断时加入了制表符,合法的话就把他替换掉,成功修复了所有bug。第三次作业的bud点发生在求导的时候,由于表达式很长,我是先用+-号分开各个表达式,然后在每一个表达式里再用*号分开,但是这样有一个问题就是像x*+2求导应该是1,但是由于+号分开,导致求导是1甚至崩溃,所以在改进的时候我在+-号分开后去判断是不是*后面的+-或者^后面的加减,修复了这个bug;还有一个bug是我在求导时如果一个表达式是一堆const连乘,我输出的时候会多一个加号,于是我在求导部分特判了这种情况,修复了所有的bug。

(3)来说一下我互测hack别人时的策略吧。由于转专业的情况,第一次作业没有参加互测,所以在第二次互测时,我还真的认真看了别人的代码,先从她的正则开始看,然后就是求导部分对指数系数的求导是否正确,再去试一下数据,这也导致我在第二次的时候hack效率低下;到了第三次,我跟大佬们学习了对拍技术,直接上对拍器,但是不是盲目对拍,拍出的数据我先分析她的问题出在哪里,去除一些同质的bug,再将麻烦的数据简化,提交上去,使得我尽管在A组还是有四次hack入账。还是希望大家在对拍出bug后不要太激动,先看一看,同质的bughack一两次差不多了,你hack太多也没什么意义,人家一次更改就过了,而且还让被hack的人心烦,何必呢?

(4)三次作业我最多用了两个类,说实话还没有掌握面向对象的思想和方法,大多数代码还是在用面向过程(c语言打法)来写,自己也感觉这样会有些问题,于是在前两天学了继承接口等等概念,至于重构什么的我打算在第五次作业开始时好好构思,把面向对象的思想用好,写出像java的代码,真正的学到知识。

第一次oo博客作业--表达式求导的更多相关文章

  1. BUAA_OO第一单元总结性博客作业——表达式求导

    一.程序设计思路 在我的三次作业中都采用了类的分层结构,采用逐项匹配,分层求导的思路. (一). 第一次作业中构建了Polynimial(多项式)类,在类的构造器中就完成了对非法空格的判断并对合法表达 ...

  2. 2019年北航OO第1单元(表达式求导)总结

    2019年北航OO第1单元(表达式求导)总结 1 基于度量的程序结构分析 量化指标及分析 以下是三次作业的量化指标统计: 关于图中指标在这里简要介绍一下: ev(G):基本复杂度,用来衡量程序非结构化 ...

  3. 2020 OO 第一单元总结 表达式求导

    title: BUAA-OO 第一单元总结 date: 2020-03-19 20:53:41 tags: OO categories: 学习 OO第一单元通过三次递进式的作业让我们实现表达式求导,在 ...

  4. 2019年北航OO第一单元(表达式求导任务)总结

    2019面向对象课设第一单元总结 一.三次作业总结 1. 第一次作业 1.1 需求分析 第一次作业的需求是完成简单多项式导函数的求解,表达式中每一项均为简单的常数乘以幂函数形式,优化目标为最短输出.为 ...

  5. OO博客作业-《JML之卷》

    OO第三单元小结 一.JML语言理论基础以及应用工具链情况梳理 一句话来说,JML就是用于对JAVA程序设计逻辑的预先约定的一种语言,以便正确严格高效地完成程序以及展开测试,这在不能容忍细微错误的工程 ...

  6. OO第一单元总结——表达式求导

    第一次作业 (1) UML结构图 (2)结构分析 Polynomial 类是对输入的字符串进行预处理,其中包括判断格式是否合法,运算符简化,分割成项等方法. Polynomial处理后得到的每一个项的 ...

  7. 2019 OO第一单元总结(表达式求导)

    一. 基于度量的程序结构分析 1. 第一次作业 这次作业是我上手的第一个java程序,使用了4个类来实现功能.多项式采用两个arraylist来存,系数和幂指数一一对应. private ArrayL ...

  8. OO第一单元作业——魔幻求导

    简介 本单元作业分为三次 第一次作业:需要完成的任务为简单多项式导函数的求解. 第二次作业:需要完成的任务为包含简单幂函数和简单正余弦函数的导函数的求解. 第三次作业:需要完成的任务为包含简单幂函数和 ...

  9. 第二次oo博客作业--多线程电梯

    这次的系列作业是写一个电梯调度,主要目的是让我们熟悉多线程. 第一次作业是一个傻瓜电梯的调度问题,要求也很简单,即每次接一个人就行了.我只用了两个线程,一个是输入线程,一个是电梯线程,输入线程负责从标 ...

随机推荐

  1. 工控随笔_20_西门子_WinCC的VBS脚本_09_常量和流程控制_02

    vbs不但提供了分支结构,还提供了丰富的循环形式.一共有3种循环: 1.for循环 2.do...loop循环 3.while循环 各种循环有各自的特点,在使用的时候可以进行转换. 前面已经描述过Fo ...

  2. java 中的强制转换

    强制转换分两种,一种是基础类型强制转换(Type Conversion),一种是引用类型强制转换(Class Casting):

  3. Android给控件添加默认点击效果

    Android控件点击效果 Android中Button控件是有点击效果的,但是像TextView.ImageView.各种Layout是没有点击效果的,给TextView设置点击事件后,加个点击效果 ...

  4. js中各种弹窗

    ** * JS提示跳转 * @param  $tip  弹窗口提示信息(为空没有提示) * @param  $type 设置类型 close = 关闭 ,back=返回 ,refresh=提示重载,j ...

  5. c#经典三层框架中的SqlHelper帮助类

    using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...

  6. nodejs版 阿里云开放api签名算法

    阿里云 API 签名 github:https://github.com/liuyinglong/aliyun; npm :https://www.npmjs.com/package/aliyun-a ...

  7. html--form表单

    <!-- form 标签 作用:收集并提交用户的信息 属性: id   表单的id,用于js获取表单 name 表单的名字,用于js获取表单 action 表单提交的地址 method 表单提交 ...

  8. 在IDEA中设置命令行参数

  9. 用tar命令把目标压缩包解压到指定位置

    linux下tar命令解压到指定的目录 : #tar zxvf /bbs.tar.zip -C /zzz/bbs    //把根目录下的bbs.tar.zip解压到/zzz/bbs下,前提要保证存在/ ...

  10. java序列化和反序列化中的serialVersionUID有啥用

     1.什么是序列化和反序列化 序列化就是将java对象转成字节序列的过程:反序列化就是将字节序列转成java对象的过程. java中,序列化的目的一种是需要将对象保存到硬盘上,一种是对象需要在网络中传 ...