OO第一单元】的更多相关文章

oo第一单元的作业是对多项式的求导.下面就是对三次作业分别进行分析. 第一次作业 分析 第一次作业相对来讲比较简单,甚至不用面向对象的思想都能十分轻松的完成(实际上自己就没有使用),包含的内容只有常数项和指数项.实际上这次作业给我的最大收获是初步认识了正则表达式的使用.程序的结构如下: 设计 结构十分简单,只有一个类(就是面向了过程...),类的构造函数用以处理输入的字符串,calcDiff()用来计算导数. 度量分析 从表格中可以看出来,factor()方法的复杂度与独立路径条数较高,这是因为…
OO第一单元作业总结 一.前言 开学四周,不知不觉已经做了三次OO作业.事实上,每一次作业对我来说都是很大的挑战,需要花费大量的时间和精力来学习. 虽然学得很艰苦,但最后还是连滚带爬地完成了.(好惨一人) 二.基于度量分析程序结构 (1)第一次作业 类图: 分析:第一次我写了三个类,Derivation类是负责构建一个整体的流程框架,输入.处理.求导.输出.Term类管理表达式的项,主要包含系数coe和指数index两个属性,Dealstr主要负责字符串合法性的判断和进行求导前一些简单的处理.此…
OO第一单元优化博客 第一次作业: 合并同类项+提正系数项+优化系数指数0/1=满分 第二次作业: 初始想法 一开始是想以\(sin(x)​\)和\(cos(x)​\)的指数作为坐标,在图上画出来就可以发现,两个坐标分别为\((a,b+2),(a,b+2)​\)的点能够合成\((a,b)​\)的点. 现在我们推广开来,假设有系数分别为为1,2,1的三个点\((a,b+4),(a+2,b+2),(a+4,b)\)即可合成一个\((a,b)\),即,若一排连续的\(n\)个点系数满足杨辉三角第\(n…
OO第一单元作业总结 在第一单元作业中,我们只做了一件事情:求导,对多项式求导,对带三角函数的表达式求导,对有括号嵌套的表达式求导.作业难度依次递增,让我们熟悉面向对象编程方法,开始从面向过程向面向对象转变.本文中,我将介绍我个人每一次作业的做法,以及三次作业的分析,互测时策略. 第一次作业 第一次作业由于只对多项式进行求导,求导的函数只有幂函数,项与项之间仅有和关系,因此处理起来比较简单,输入可以使用正则表达式提取数据,存储可以使用HashMap,这样可以很方便的实现合并同类项,输出也只需要判…
OO第一单元(求导)单元总结 这是我们oo课程的第一个单元,也是意在让我们接触了解掌握oo思想的一个单元,这个单元的作业以求导为主题,从一开始的加减多项式求导再到最后的嵌套多项式求导,难度逐渐提高,编程思想也逐步深入面向对象,如果说前两次作业还可以用C语言的面向过程的思想去对付,那么第三次作业可以说是为面向对象而设计的. 一.作业分析 1.第一次作业 第一次作业作业的目标是实现简单的加减多项式的求导,项的形式为带符号整数和幂函数的结合,带符号整数符号与数字间不允许有空格,如-3*x. 由于此次作…
OO第一单元作业已全部完成,为了使这一单元的作业能够收获更多一点,我回忆起我曾经在计算机组成课设中,经常我们会写一些实验报告,经常以此对实验内容反思总结.在我们开始下一单元的作业之前,我在此对OO第一单元进行总体性的反思总结,请各位助教和同学们批评指正! 一.程序结构分析 1. 代码规模度量 第一次作业 类 类总代码规模 类属性个数 类方法个数 "MainClass" 8 0 1 "Polynomial" 150 10 4 "Term" 36 2…
OO第一单元(前四周)作业总结 OO第一单元(前四周)作业总结要求(第四次作业) 0.前言 本次博客针对的是本人学习Java的第一阶段的三次作业的作业总结 第一次作业的内容是:7-1 计算税率 (20分),7-2 判断坐标点所在范围 (20分),7-3 电话键盘字母数字转换 (20分),7-4 判断三角形类型 (20分),7-5 统计最大数出现次数 (20分). 第二次作业的内容是:7-1 求一元二次方程 (10分),7-2 判断闰年及星期几 (30分),7-3 求下一天 (30分),7-4 求…
经过了三次作业之后,OO第一单元告一段落,作为一个蒟蒻,我初步了解了面向对象的编程思想,并将所学内容用于实践. 一.第一次作业 1.架构分析 本次作业需要完成的任务为简单多项式导函数的求解.表达式仅支持常数项以及幂函数项的简单加减运算,并且输入保证是符合格式规范.整体要求上较为简单,但由于我对一些基础知识掌握不透彻,并且对面向对象编程的思路还理解得不够,所以整体上本次作业基本上还是面向过程,可移植性以及可扩展性很差. 大致思路:首先将表达式化简,暴力去掉空白项,并且将连续的+.-号化简,使每项统…
OO第一单元总结与反思 目录 OO第一单元总结与反思 摘要 第一次作业 本次作业UML类图 本次作业度量分析 第二次作业 本次作业的UML类图 本次作业的度量分析 第三次作业 本次作业的UML类图: 本次作业的度量分析 测试及bug杀虫 心得与体会 摘要 本单元作业分为三次 HW1:本次作业,需要完成的任务为简单多项式导函数的求解. HW2:本次作业,需要完成的任务为包含简单幂函数和简单正余弦函数的导函数的求解. HW3:本次作业,需要完成的任务为包含简单幂函数和简单正余弦函数的导函数及其组合的…
title: BUAA-OO 第一单元总结 date: 2020-03-19 20:53:41 tags: OO categories: 学习 OO第一单元通过三次递进式的作业让我们实现表达式求导,在这几次作业中我也有很多收获.下面就回顾一下前三次作业中存在的问题. 在个人看来,表达式求导的难点主要有三部分--对输入的处理.表达式的存储结构以及化简.这三次作业我所采用的表达式存储结构都不相同,不过重构的速度还是比较快的(安慰自己). 第一次作业 在第一次作业中,我的程序总体架构为提取幂函数为Po…
OO第一单元总结 前言 第一单元 OO 作业的主题是求导,从最简单的幂函数求导,到添加三角函数求导,再到最后添加嵌套规则.(对熬夜有了新体验,OO 作业比较适合晚上写,OO 博客也是一样 doge) 一.代码分析 分析将主要通过UML图,OCavg 和 WMC 三个方面来分析. OCavg 代表类的方法的平均循环复杂度 WMC 代表类的方法的总循环复杂度 第一次作业 第一次作业总的来说很简单,只需要对幂函数进行求导,而且没有 WF 的判断需求,我直接上大正则匹配,同时尝试了一下面向对象的编程模式…
OO第一单元作业总结 第一次作业 基于度量分析代码结构 基本算法 第一次作业是简单多项式导函数求解,不需要对输入数据的合法性进行判定, 基本思想是用 (coeff, expo)表示二元组 coeff*x**expo,而多项式中的每一项都可以以二元组的形式存储,这样做的好处在于多项式的每一项存储形式规范单一,求导规则随之变得很简单,再加上由于不需要考虑输入数据的合法性与否.化简相对简单,使得实现很快. 当然缺点也很明显,可拓展性很差,只能支持简单的多项式,下一次迭代必须得重构了. UML类图: 耦…
OO第一单元总结-多项式求导 一.第一.第二次作业总结 因为前两次作业设计复杂度差别不大,因而放在这里统一总结. 基于度量分析程序结构: 前两次作业确实存在缺乏可拓展设计的构想,基本还是面向过程的思维方式."一类到底,一main到底",因为有代码风格的要求被迫将代码模块化(捂脸). 初次接触正则表达式,第一次设计正则表达式的时候并不知道正则的内部实现,出现了"一个大正则",后来了解到许多正则匹配模式(贪婪,懒惰,独占).两次作业都改成了小正则匹配同时捕获,这样可以有…
OO第一单元总结 目录 OO第一单元总结 前言 第一次作业 HW1基本思路 UML类图 代码规模 复杂度分析 方法复杂度 分析 类复杂度 分析 优化策略 第二次作业 HW2基本思路 UML类图 代码规模 复杂度分析 方法复杂度 分析 类复杂度 分析 优化策略 第三次作业 HW3基本思路 UML类图 代码规模 复杂度分析 方法复杂度 分析 类复杂度 分析 优化策略 整体架构分析 数据生成及自动化评测 第一次作业 数据生成 代码示例 自动化评测 第二次作业 数据生成 代码示例 自动化评测 代码示例…
第一单元OO作业总结 第一次作业 ​ 第一次作业的要求是对仅有常数和幂函数的式子进行求导. ​ 由于是第一次接触JAVA,对很多东西都还不熟悉,尤其是正则表达式做得不好.当时我的思路如下: 建立Poly类,存储若干个幂函数(但是没有把幂函数建立成一个对象,对后面产生了麻烦) 先对字符串进行预处理(好坏参半) 使用符号作为关键字对原字符串进行分割(好坏参半,原因见后文分析) 对特殊符号采用了保护符(有效,但是不够巧妙) 进行简单判断之后,把大部分异常交给BigInteger处理(好) 在Poly类…
写在前面 在接触OO课程之前,自己是完全没有学习过java语言的,因此作为一名初的不能再初的初学者,无论是在哪方面都会有许多茫然,但是我相信通过一次次认真的完成OO作业,我对面向对象的理解应该会渐渐的深入,就写在博客上记录下我的点滴的收获.下面是我对前三次作业的分析与体会. 作业分析 (一)第一次作业 类图如下: 度量分析如下: 代码分析: 因为第一次作业对面向对象编程几乎没有概念,因此就当是按照C程序那样编写,现在一看这就是完全的面向过程的编程方法.在一个class里面定义了完成该程序需要的几…
2019面向对象课设第一单元总结 一.三次作业总结 1. 第一次作业 1.1 需求分析 第一次作业的需求是完成简单多项式导函数的求解,表达式中每一项均为简单的常数乘以幂函数形式,优化目标为最短输出.为了满足优化目标,我们需要将含有相同指数的项进行合并. 1.2 实现方案 根据需求,我们很容易就能想到利用HashMap构建常数和幂指数的对应关系(再加上这是第一次作业,本以为只是让我们借此熟悉一下Java语法,于是并没有考虑程序可扩展性),于是仅建立了Polynomial多项式类和用作主函数的Tes…
前言 第一单元的作业主要是以多项式求导为载体来训练我们的面向对象的思维,难度循序渐进,复杂度也一直在提高,但是面向对象的体现性也越来越强,当然带来的优势与便利也在逐步提升.下面的内容主要从需求分析,代码结构与框架,复杂度分析,如何测试四个方面来对每一次作业进行总结. 第一次作业 需求分析 第一次作业需要我们对简单多项式进行求导,只需要支持简单的幂函数加上常数项即可,且项与项之间只有加法和减法,难度并不是很大. 代码结构与框架 写第一次作业时我竟然神奇地忽略了指导书中的正则表达式指导,并且本身对其…
前言 第一单元的主题是表达式求导,第一次作业是只带有常数和幂函数的求导,第二次作业加入了正余弦函数,第三次作业又加入了表达式嵌套,难度逐渐提升.总体来说前两次作业还易于应对,而第三次作业做得相对有些艰难.而且这其中还有很多巧合,第二次作业延时到了周三上午,而我在周二晚睡觉前经过本地测试又找到一处致命BUG,一直改到一点才交上:第三次作业一开始中测的最后一个点一直没有通过,周二找了一天本来已经放弃,后来得知作业又延时到周三中午,成功在周三上午找到了那处BUG,并正好用完十次无偿提交次数,终于过了全…
写在前边:第一次接触面向对象语言,编程思想仍然不可避免的有以前面向过程的影子.从第一次作业的完全面向过程,到第二次学会剥离各个类互不影响到第三次作业的先构思面向对象的基本程序架构再编程.虽然程序有些地方仍然显得很笨重,但是在面向对象编程这条道路上也算是迈出了实质性的一步.在这一过程中,真心感谢各位在讨论课上分享自己经验的同学和讨论区的大佬.从各位的分享中,自己get到很多的关于程序架构设计参考,关于面向对象的不同理解,自动评测的方法,以及很多小技巧. 历次作业程序分析 第一次作业(仅包含幂函数的…
写在前面 第一单元作业是针对输入的多项式进行格式合法判断,然后进行求导,结果长度优化,最后输出.三次难度递增,不断添加新的需求,总体感觉在实现方面没有多大困难(?),个人主要困扰环节是寻找自己未知bug阶段. 如果要挑出自己的错误,那此次最大的失误可能就是太相信自己的能力了吧. 自以为Java语言已经运用很娴熟,没必要跟着课程从字符再学一次(你在想x吃),同时过去自学过程中,遗落了正则表达式部分(讲道理我借的书们以及网课确实没提这玩意儿啊),导致第一次作业结束后,我盯着别人一百多行的代码问:“这…
一.前三次作业内容分析总结 前言 前三次作业,我提交了三次,但是有效作业只有两次,最后一次作业没能实现多项式求导的基本功能因此无疾而终,反思留给后文再续,首先我介绍一下这三次作业,三次作业围绕着多项式求导展开,输出目的都是一致的,即对输入的多项式进行求导,将求导结果打印到显示屏,作业难度递增,每一次对多项式的要求都更加宽松,相应而言,求导的难度也就加大,从简单而固定的多项式到复杂而灵活的多项式,处理的难度随之加大,从正则表达式解决一切到继承接口多态的引入,java代码也越来越复杂,那么就让我们来…
(一)第一单元的作业围绕着多项式的求导,从简单到复杂,主要的要求是 作业一:只有两种格式的因子:带符号整数(+02)和幂函数(x^+02). 作业二:在作业一的基础上添加了:sin(x)和cos(x)以及首项的第一个因子为+1或-1可以省略“1” 作业三:在作业二的基础上增加了 “表达式因子”的概念:用括号括起来的整个表达式,如(x+sin(x)),另外sin()和cos()的括号中可含所有因子,如sin(+2),sin(x^2),sin(sin(x)),sin((x+x)) (二)我三次作业的…
第一单元的三次编程作业结束了,现在分享一些我对自己作业的分析和感想 1.程序结构的分析 第一次作业: 本次作业我的主要思路是,为每一项写一个正则表达式,在输入的字符串中匹配每一项,多项式类中保存着一个单项类的列表,这样来完成求导并不难,完成多项式中项的排序工作后,合并同类项也不难. 第二次作业: 我的第二次作业是基于第一次作业做了一些小的修改,每个项中新增了sin(x)的次数和cos(x)的次数两个属性,对单项的求导结果返回一个包含三个新项的列表,大体与第一次作业类似.只不过优化过程中思路有些混…
前言 学习面向对象这门课程的后的第一单元作业,主线是多项式求导,三次作业层层推进,由单一的幂函数求导,到幂函数和三角函数的复合求导,最后再到两种函数的嵌套求导,由两个类到重构后的十几个类,我逐渐对面向对象的思想有了更深一步的理解,对结构化的设计也有了更加深刻的体会. 第一次作业 作业要求 实现仅含幂函数和常数的多项式求导,数据长度上限1000,性能上要求结果越短越好(即化简到最简),保证输入数据合法. 实现简述 完成本次作业时,由于扩展意识不足,采取了仅为解决当前问题的设计模式,包含两个类Pol…
“OOP永远是我的好朋友爸爸!” ——来自某无能狂怒的菜鸡 身处在OO的第一个摸鱼黄金周中的我,感觉到了巨大的满足感.如果写博客这种充满意义的事情可以代替我们亲爱的作业,那么我提议每周来两个:)下面开始正经分析~ Homework 1  简单多项式求导 Part1 程序架构分析 面对人生的第一次面向对象程序,没有学过java的我认认真真思考了整个代码框架,最后通过不懈努力,完完全全写成了面向过程(毕竟我又没得对象). 在这次作业中使用了三个类:PolyDerivation.Poly.Term.程…
一.结构度量 1. UML类图 第一次作业 第二次作业 第三次作业 2. 复杂度分析 (1)方法复杂度 ​ ev, iv, v这几栏,分别代指基本复杂度(Essential Complexity (ev(G)).模块设计复杂度(Module Design Complexity (iv(G))).Cyclomatic Complexity (v(G))圈复杂度.   ev(G)基本复杂度是用来衡量程序非结构化程度的,非结构成分降低了程序的质量,增加了代码的维护难度,使程序难于理解.因此,基本复杂度…
综述:本模块的内容为表达式求导,目的是通过不同项的嵌套四则运算求导这一基本思路熟悉面向对象的继承与接口机制. 一.三次作业总结分析 1.第一次作业: 1.1 作业分析 盼望着,盼望着,鸽了一年的oo终于要掀开它神秘的面纱了(高工狗的怨念).第一次作业的要求是初级的表达式求导,这次作业中项和因子的概念没有加以区分,所以导致我并没有从中体会到oop的思想,加上当时还有托福考试于是第一次作业基本算是“混过去”了,只用一个简单的面向过程的模式进行了书写.第一次作业和以前面向过程不同的就是要处理各种各样的…
第一个单元的三次作业均为求导,循序渐进的让我们掌握如何构造类和方法,让整个代码是面向对象的设计而不是面向过程的设计.如果第一次作业和第二次作业你只是简单的对过程着手架构类,到了第三次作业就会变得格外麻烦.掌握了面向对象创建多个类.分层次地实现每个类的功能,并梳理清楚继承与接口处理每个类的思路,便能够游刃有余地解决. 一. 总体设计思路 第一次作业 第一次作业时,还没有建立面向对象的程序设计思维和架构类的思路,因此整个代码采用面向过程,只构建了一个类,用多个方法划分,来处理输入并打印出求导的结果.…
Homework 1  简单多项式导函数 对于初次接触的OO,第一次作业已经可以体会到其与面向过程的C语言之间的差别. 我的想法是,建立了Multinomial和Monomial 两个类,分别能够实现多项式和单项式. 对于多项式类,只提供默认的无参数构造方法.对单项式类,提供参数为系数和指数的构造方法. 个人认为,多项式的append方法是我的设计中较好的一个方法,通过将单项式append进入,将组合为一个多项式.并且,在append方法中,还拥有合并同类项的作用. 对于求导,在单项式和多项式都…