2019OO第一单元作业总结】的更多相关文章

OO第一单元作业的主题是求导,下面将分三次作业分别总结一下. ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------…
#OO第一单元作业总结 #确认存活,爱学习,爱北航,爱OO 一.三次作业分析 1.第一次作业 1.1 程序结构 对方法的度量: 类的内聚和相互间的耦合情况: 类图: 优缺点: 优点大概没什么优点,毕竟我只是个emmmm 缺点是显而易见的简单粗暴,一个Polynomial干到底,输入输出提取优化求导一站式操作,完全没有get到面向对象. 1.2 bug分析 未通过的公测用例:   无 被互测发现的bug:    未处理的空白字符,理解错题意害死人.×n Bug修复:                …
BUAA_OO第一单元作业总结 单元任务 第一单元的任务为实现表达式的求导,其中第一次作业是对简单多项式的求导,第二次作业是对包含简单幂函数和简单正余弦函数的多项式的求导,第三次作业是对包含简单幂函数和简单正余弦函数同时存在嵌套情况的多项式的求导. 一.基于度量的程序结构分析 第一次作业 1. 设计思路 第一次作业给出的多项式每一项之间仅包含加减运算,并且每一项都有固定的格式,即为系数*x^指数,因此可以创建两个ArrayList链表,一个为系数,另一个为指数.首先通过正则表达式将关于空白符与符…
OO第一单元作业总结 在第一单元作业中,我们只做了一件事情:求导,对多项式求导,对带三角函数的表达式求导,对有括号嵌套的表达式求导.作业难度依次递增,让我们熟悉面向对象编程方法,开始从面向过程向面向对象转变.本文中,我将介绍我个人每一次作业的做法,以及三次作业的分析,互测时策略. 第一次作业 第一次作业由于只对多项式进行求导,求导的函数只有幂函数,项与项之间仅有和关系,因此处理起来比较简单,输入可以使用正则表达式提取数据,存储可以使用HashMap,这样可以很方便的实现合并同类项,输出也只需要判…
目录 总 架构 Controller​ Model​ 输入处理 代码静态分析 行数 方法复杂度 UML​ 类图 优点 缺点 坑 输入 非法的空白字符 输入的简并处理 运算 浅拷贝 可变类型与不可变类型 输出 表达式因子的优化 互测策略 测试集测试 针对性测试 脚本测试 Creational Pattern 总 本博文是2019年北航面向对象(OO)课程第一单元作业(多项式求导)的总结.三次作业的要求大致如下: 第一次作业:简单幂函数的求导,如 \(1 + x^5 + 4 * x^3\) 第二次作…
OO第一单元作业已全部完成,为了使这一单元的作业能够收获更多一点,我回忆起我曾经在计算机组成课设中,经常我们会写一些实验报告,经常以此对实验内容反思总结.在我们开始下一单元的作业之前,我在此对OO第一单元进行总体性的反思总结,请各位助教和同学们批评指正! 一.程序结构分析 1. 代码规模度量 第一次作业 类 类总代码规模 类属性个数 类方法个数 "MainClass" 8 0 1 "Polynomial" 150 10 4 "Term" 36 2…
OO第一单元作业总结 第一次作业 基于度量分析代码结构 基本算法 第一次作业是简单多项式导函数求解,不需要对输入数据的合法性进行判定, 基本思想是用 (coeff, expo)表示二元组 coeff*x**expo,而多项式中的每一项都可以以二元组的形式存储,这样做的好处在于多项式的每一项存储形式规范单一,求导规则随之变得很简单,再加上由于不需要考虑输入数据的合法性与否.化简相对简单,使得实现很快. 当然缺点也很明显,可拓展性很差,只能支持简单的多项式,下一次迭代必须得重构了. UML类图: 耦…
前言 第一单元的主题是表达式求导,第一次作业是只带有常数和幂函数的求导,第二次作业加入了正余弦函数,第三次作业又加入了表达式嵌套,难度逐渐提升.总体来说前两次作业还易于应对,而第三次作业做得相对有些艰难.而且这其中还有很多巧合,第二次作业延时到了周三上午,而我在周二晚睡觉前经过本地测试又找到一处致命BUG,一直改到一点才交上:第三次作业一开始中测的最后一个点一直没有通过,周二找了一天本来已经放弃,后来得知作业又延时到周三中午,成功在周三上午找到了那处BUG,并正好用完十次无偿提交次数,终于过了全…
oo第一单元的作业是对多项式的求导.下面就是对三次作业分别进行分析. 第一次作业 分析 第一次作业相对来讲比较简单,甚至不用面向对象的思想都能十分轻松的完成(实际上自己就没有使用),包含的内容只有常数项和指数项.实际上这次作业给我的最大收获是初步认识了正则表达式的使用.程序的结构如下: 设计 结构十分简单,只有一个类(就是面向了过程...),类的构造函数用以处理输入的字符串,calcDiff()用来计算导数. 度量分析 从表格中可以看出来,factor()方法的复杂度与独立路径条数较高,这是因为…
OO第二单元的作业主题是模拟电梯. ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------…
一.前三次作业内容分析总结 前言 前三次作业,我提交了三次,但是有效作业只有两次,最后一次作业没能实现多项式求导的基本功能因此无疾而终,反思留给后文再续,首先我介绍一下这三次作业,三次作业围绕着多项式求导展开,输出目的都是一致的,即对输入的多项式进行求导,将求导结果打印到显示屏,作业难度递增,每一次对多项式的要求都更加宽松,相应而言,求导的难度也就加大,从简单而固定的多项式到复杂而灵活的多项式,处理的难度随之加大,从正则表达式解决一切到继承接口多态的引入,java代码也越来越复杂,那么就让我们来…
经过了三次作业之后,OO第一单元告一段落,作为一个蒟蒻,我初步了解了面向对象的编程思想,并将所学内容用于实践. 一.第一次作业 1.架构分析 本次作业需要完成的任务为简单多项式导函数的求解.表达式仅支持常数项以及幂函数项的简单加减运算,并且输入保证是符合格式规范.整体要求上较为简单,但由于我对一些基础知识掌握不透彻,并且对面向对象编程的思路还理解得不够,所以整体上本次作业基本上还是面向过程,可移植性以及可扩展性很差. 大致思路:首先将表达式化简,暴力去掉空白项,并且将连续的+.-号化简,使每项统…
简介 本单元作业分为三次 第一次作业:需要完成的任务为简单多项式导函数的求解. 第二次作业:需要完成的任务为包含简单幂函数和简单正余弦函数的导函数的求解. 第三次作业:需要完成的任务为包含简单幂函数和简单正余弦函数的导函数及其组合的求解. 第一次作业 实现方式   输入.解析: 1.      去掉所有空白符. 2.      经过一系列replaceAll使得项与项之间仅以+分隔. 3.      利用Split将所有项拆分开,对于每一个项新建一个对象. 求导: 1.      每个因子存储在…
第一个单元的三次作业均为求导,循序渐进的让我们掌握如何构造类和方法,让整个代码是面向对象的设计而不是面向过程的设计.如果第一次作业和第二次作业你只是简单的对过程着手架构类,到了第三次作业就会变得格外麻烦.掌握了面向对象创建多个类.分层次地实现每个类的功能,并梳理清楚继承与接口处理每个类的思路,便能够游刃有余地解决. 一. 总体设计思路 第一次作业 第一次作业时,还没有建立面向对象的程序设计思维和架构类的思路,因此整个代码采用面向过程,只构建了一个类,用多个方法划分,来处理输入并打印出求导的结果.…
第一次作业 需求简要说明 针对符合规定的多项式表达式输出其符合格式规定的导函数多项式,格式错误输出WRONG FORMAT! 带符号整数 支持前导0的带符号整数,符号可省略,如: +02.-16>.19260817等. 幂函数 一般形式 由自变量x和指数组成,指数为一个带符号整数,如:x ^ +2. 省略形式 当指数为1的时候,可以采用省略形式,如:x. 项 变量项 带有系数的幂函数,如:2 * x ^ 2.-1 * x. 系数为1的时候,可以省略系数或表示为正号开头的形式,如:x ^ 2.+…
第一次作业 (你没看错,就一个类...) 通过正则表达式处理输入的字符串,提取出每一项的系数和指数,在输出的时候,应当考虑到合并同类项和正项提前的问题,使得最终的输出最短. 我第一次作业的代码超级难看,在互测的时候看了别人的代码之后,自己的代码连我自己都看不下去了.在第一次作业的代码中,我只用了一个主类Main,在主方法中用大正则识别表达式.判断合法性.求导,毫无对象概念,根本没有体现出面向对象的特性,同样也在互测环节中被查出来很多bug.所以在第二次作业中,我决定使用面向对象的思想,对代码进行…
第一次作业 类图:   复杂度: 圈复杂度的问题一直困扰着这三次作业,主要体现在求导方法中先判断符号导致出现过多判断语句,应该将整理符号放在一个新的类中处理. 第一次作业由于对面向对象的思维有些不理解,只创建了两个类,一个Main函数处理输入和输出,一个Poly类负责判断表达式合法性并求导.由于未考虑到超过32位数字的存在,导致我未能通过强测的半数内容,后来在Poly类中的求导阶段将数据的判断改成了BigInteger,顺利通过了强测的所有测试点.这个bug的修复只需修改几个方法的数据类型转换并…
前言:当我写这篇博客的时候,我的心情是复杂的,因为这实际上是我第二次写这篇博客--我今年重修的这门课.我对去年的成绩心有不甘--在激烈的竞争下,我虽然尽可能完成了所有作业(仅一次作业未通过弱测),但爆炸的强测分数让我最终分数很低.由于我没有进入补给站,相比于一些进补给站的同学,我没有了拯救写得稀烂的作业的机会,因此最终我的分数不如大部分补给站的同学.今年重修本次课程,我必须完成全部12次代码作业,并且要参加实验课.我不止一次动摇过,但想到这门课是最核心的专业课之一,我没有学好它,不仅仅是没有获得…
写在前面 第一单元作业是针对输入的多项式进行格式合法判断,然后进行求导,结果长度优化,最后输出.三次难度递增,不断添加新的需求,总体感觉在实现方面没有多大困难(?),个人主要困扰环节是寻找自己未知bug阶段. 如果要挑出自己的错误,那此次最大的失误可能就是太相信自己的能力了吧. 自以为Java语言已经运用很娴熟,没必要跟着课程从字符再学一次(你在想x吃),同时过去自学过程中,遗落了正则表达式部分(讲道理我借的书们以及网课确实没提这玩意儿啊),导致第一次作业结束后,我盯着别人一百多行的代码问:“这…
一.第一单元作业回顾 ​ 系列一作业分为三周进行,都是表达式求导,难度渐进. ​ 第一次实现的是简单幂函数的求导,第二次加入了sin和cos两种三角函数,第三次实现了三角函数内的嵌套以及引入了表达式因子. 主要学到的东西有: ​ IDEA的操作使用(包括checkstyle/statics/MetricsReloaded等插件的使用) ​ 正则表达式的使用 ​ Biginteger ​ java中字符串处理 ​ Arraylist的使用 ​ 继承与接口 ​ java建立二叉树 ​ 递归分析的思路…
OO第一单元作业总结 一.前言 开学四周,不知不觉已经做了三次OO作业.事实上,每一次作业对我来说都是很大的挑战,需要花费大量的时间和精力来学习. 虽然学得很艰苦,但最后还是连滚带爬地完成了.(好惨一人) 二.基于度量分析程序结构 (1)第一次作业 类图: 分析:第一次我写了三个类,Derivation类是负责构建一个整体的流程框架,输入.处理.求导.输出.Term类管理表达式的项,主要包含系数coe和指数index两个属性,Dealstr主要负责字符串合法性的判断和进行求导前一些简单的处理.此…
写在前边:第一次接触面向对象语言,编程思想仍然不可避免的有以前面向过程的影子.从第一次作业的完全面向过程,到第二次学会剥离各个类互不影响到第三次作业的先构思面向对象的基本程序架构再编程.虽然程序有些地方仍然显得很笨重,但是在面向对象编程这条道路上也算是迈出了实质性的一步.在这一过程中,真心感谢各位在讨论课上分享自己经验的同学和讨论区的大佬.从各位的分享中,自己get到很多的关于程序架构设计参考,关于面向对象的不同理解,自动评测的方法,以及很多小技巧. 历次作业程序分析 第一次作业(仅包含幂函数的…
引言 四周过去了,oo课程的第一阶段作业也算告一段落.在第一单元的内容中,主题是始终如一的多项式求导,但三次作业要求完善的求导功能一次比一次丰富,难度也逐渐增加,也是费了不少心思.接下来就回顾与小结一下这三次作业,分析一下程序结构.遇到的bug以及总结这第一单元作业给我的感受. 第一次作业(关于幂函数多项式求导) 类图: 度量分析: 程序分析: 由于是第一次作业对于面向对象了解不是很透彻,只是根据面向对象的教材依葫芦画瓢创建了两个类,Term类完成项的求导,Poly类完成多项式的求导.但显然类的…
目录 总 架构 controller model view 优化算法 Look 算法 多种算法取优 预测未来 多线程 第五次作业 第六次作业 第七次作业 代码静态分析 UML 类图 类复杂度 类总代码规模 属性个数 方法复杂度 方法个数 方法规模 控制分支数目 优缺点 优点 缺点 SOLID 原则 单一职责原则(SRP) 开放封闭原则(OCP) 里氏替换原则(LSP) 接口隔离原则(ISP) 依赖倒置原则(DIP) 多线程协作 UML 图 分析 线程间通信 并行任务的独立性 坑 多线程错误 Ma…
(注意:本文写作顺序与作业要求不完全一致,但涵盖了作业的所有要求) 一学期的BUAA特色OO课程结束了. PART 1  我想先写我这一学期的感想 从第一单元满怀期待地写完多项式求值到最后看着60分不到的成绩伤心欲绝(这个词用的其实并不是特别夸张),到第二单元作业在截止前两小时还在做不停地思考和调试,再到第三单元在活页纸上记下一种又一种可能的实现方法(然后还有一堆bug2333),最后到第四单元,也就是这个单元的与考期共舞,与程序广度作斗争,每个单元都是你从未玩过的船新版本(因为OO课程改革所以…
三次作业,三次成长 第一次作业--幂函数求导总结 作业思路和心得 第一次作业的要求只有x的指数这样的幂函数加减组成表达式,对表达式进行求导,而且没有格式错误的检查,所以难度感觉还不是很高.不过由于我寒假的preview作业还有两个task没有做完,所以我感觉自己对语法和字符串处理等方面还不是很熟练.因此,虽然看起来第一次作业难度不高,但是我仍然十分认真地对待它,把它当作巩固自己基础的一次机会(之后的作业就没机会巩固基础了 进入正题,第一次作业由于只有一种幂函数,所以我的思路也比较简单:直接用Tr…
oo第二单元作业总结 一.设计策略与质量分析 第一次作业 设计策略 在第一次作业之前,我首先确定了生产者--消费者模式的大体架构,即由输入线程(可与主线程合并)充当生产者,电梯线程充当消费者,二者不直接交互,而是在Controller类的成员变量等待队列中不断取出或放入请求以达到交互的目的.而对于调度器位置的考虑,我将其与电梯线程合并,即从宏观上来看,电梯本身不断与请求队列交互,并按照自己的策略决定是否移动.开关门等(这一架构正是后两次作业中无为而治的基础).在此基础上,添加一些线程结束的判断以…
BUAA_OO_2020_第一单元总结 OO第一单元作业主题为表达式求导,主要学习目标为熟悉面向对象思想,学会使用类来管理数据,感受分工协作的行为设计,建立程序鲁棒性概念.如今,第一单元的学习已落下帷幕,再次对于本人的学习心得和成果进行总结. 第一次作业 基于度量的代码结构分析 第一次作业为简单表达式求导,不涉及因子.嵌套等复杂结构,因此代码结构相对简单.UML类图如下: 架构 第一次作业我分了三个类,即主函数类.表达式类和项类.主函数类中只有Main函数,进行读取输入.创建表达式等功能.表达式…
第四单元总结--UML 第四单元作业架构分析 第一次作业其实是本单元三次作业中最难的一次.由于第一次是第一次作业,要考虑到搭建框架和设计架构,这次作业的思维性很强.在了解了各个类型元素(Element)之间的关系之后,我采用了如下设计架构.类似于课程组所给的源代码的架构,但将class与interface一同继承于一个合并类.新建立operation和association类让自己能够更多的操作空间(能够更好地获取相关数据).其实第一次作业很大部分时间都在完成架构的设计,这个框架设计好了之后完成…
前言 学习面向对象这门课程的后的第一单元作业,主线是多项式求导,三次作业层层推进,由单一的幂函数求导,到幂函数和三角函数的复合求导,最后再到两种函数的嵌套求导,由两个类到重构后的十几个类,我逐渐对面向对象的思想有了更深一步的理解,对结构化的设计也有了更加深刻的体会. 第一次作业 作业要求 实现仅含幂函数和常数的多项式求导,数据长度上限1000,性能上要求结果越短越好(即化简到最简),保证输入数据合法. 实现简述 完成本次作业时,由于扩展意识不足,采取了仅为解决当前问题的设计模式,包含两个类Pol…