OO unit1 总结

21231110-司亦菲 学生 2023-03-19 18:56:08

前言

开学第一周接触这门课时,看到第一页PPT上强调上学期学先导课的重要性,突然感觉有些荒谬。上学期的先导课抽签没中时其实并没什么感觉,导师也只是说“推荐选,对以后的课有些帮助”,甚至在后来听到同学们吐槽这门叫做“c++与c#程序设计”的课居然留JAVA作业时,心里有些庆幸没抽中。而且由于这门课的名字甚至寒假自学的是c++。于是本学期开学,完全是个JAVA小白的我迷茫的迎来了第一次作业。

五天速成JAVA没能让我按时交上这次作业,自然后面两次也都没能成功,大家开始讨论求导因子的处理方法时,我才搞懂自定义函数。再加上os课下实验,导致我每次大概弄明白作业时,下次作业都已经要结束了。其实想要参加第一次的补交,但既没生病也没缓考,单纯因为自己菜导致的没交上,还是算了。马上第二单元,一切重新开始吧。而且写的代码都只是本地过了加上和参加互测的同学对了一下,基本都没交上去正式测过,全都写上有些献丑,就简单写下第一次的吧。

第一次作业

代码解析

main类

Lexer类

词法分析器,用于解析数学表达式。

Parser类

表达式解析器。

 

Expr类

getTerms(): 返回一个ArrayList<Term>类型的terms,表示表达式中的项。

getExpo(): 返回一个整数类型的expo,表示指数。

setExpo(int expo): 设置指数为给定的整数类型的expo。

addTerm(Term term): 添加一个给定的Term对象到terms列表中。

toPoly(): 将Expr对象转换为Poly对象。

Factor类

一个接口定义。

Number类

表示一个数值因子。

num:一个BigInteger类型的私有变量,表示该数值因子的值。

Number(BigInteger num):接受一个BigInteger类型的参数,表示该数值因子的值。

toString():返回该数值因子的字符串表示。

toPoly():将该数值因子转化为一个多项式类型(Poly),该多项式只有一个基本项,系数为num,指数分别为0(x)、0(y)、0(z)。

Power类

用于表示一个幂次表达式。

该类包含了一个构造函数Power(String name)。在构造函数中,指数默认为1。还包含了一个setExpo(int expo)函数,用于设置指数的值。

实现了Factor接口,并重写了toPoly()方法,将幂次表达式转换为多项式,即生成一个包含了一个Basic对象的ArrayList列表,并使用该列表创建一个Poly对象。

Term类

用于表示多项式的单个项。

factor: 一个ArrayList类型的变量,存储该项的因子。

sign: 一个整型变量,存储该项的符号。

Term(): 初始化一个空的项,其中 factors 初始化为空列表,sign 初始化为1。

addFactor(Factor factor): 向该项中添加一个因子,参数为一个Factor 类型的对象。

getFactors(): 获取该项的因子列表。

getSign(): 获取该项的符号。

reverseSign(): 将该项的符号取反。

toPoly(): 该项转换为一个Poly类型的多项式对象。

Basic类

用于表示三元多项式中的一个基本项。

Poly类

用于表示多项式。

ArrayList<Basic> basicArrayList: 存储多项式的标准项数组。

ArrayList<Basic> getBasicArrayList(): 获取多项式的标准项数组。

Poly(ArrayList<Basic> basicArrayList): 用于初始化多项式。

addPoly(Poly that): 相加。

mulPoly(Poly that): 相乘。

powPoly(int expo): 幂次方。

negate(): 取相反数,即正负翻转。

@Override public String toString(): 将多项式转换为字符串形式,并返回字符串。

Bug分析

没参加互测也没被hack过,自己的评测机倒是过了,那就先不分析bug了。

关于不知道算不算的重构

一开始是写了个c语言的代码,然后试图把它翻译成刚学几天的JAVA,结果大败而归,后来才发现大家都有好多类,不像我的c文件一下几百行。而且据老师上课讲的,这样写第二三次就寄了,所以开始尝试直接用JAVA。

最初一头雾水,写JAVA像写c,但感谢大佬同学分享的思路和架构,感觉明白了不少。

心得体会

对于面向对象的思想有了基本的了解。大概搞懂JAVA和c的本质区别了。

因为毫无基础,一开始真的超级焦虑,担心自己连补给站都进不了,后来反而想通了,焦虑也没什么用,不如多请教别人。

据说本学期最难的第三次所以已经过去了,希望之后的作业能顺利一点吧。

...全文
62 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
吴际老师 教师 2023-03-22
  • 打赏
  • 举报
回复

你有一点说的非常到位,多请教。我的建议是,多思考,多做一些准备工作。相信困难都是暂时的

443

社区成员

发帖
与我相关
我的任务
社区描述
2023年北京航空航天大学《面向对象设计与构造》课程博客
java 高校 北京·海淀区
社区管理员
  • 被Taylor淹没的一条鱼
  • 0逝者如斯夫0
  • Mr.Lin30
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧