OO第一次课程总结分析】的更多相关文章

作为一个之前从未使用过java语言,主攻面向过程式编程的“面向对象”小白,于是乎从第一次作业开始时利用时间疯狂学习java语言,经过三次作业的残酷洗礼,自己对面向对象式编程多多少少有了初步的了解(前路漫漫,任重而道远).下面针对之前的三次作业进行总结分析,以及自己这一个月来的心得体会. 第一次作业:一元多项式加减运算 这次作业可谓是与“面向对象”和“瞌睡虫”对决的开始了.第一次接触这门语言和这种思想,还没有养成相应的思维习惯,于是基本就是按着面向过程的思路来完成的.整个程序只有一个主类.一个主方…
OO第四次课程总结分析 测试与正确性论证的效果差异及优缺点 测试,即使用测试样例来验证我们的程序是否能完成相应功能的过程.测试数据的产生基于前置条件和后置条件,通过执行测试数据检查方法输出是否满足需求.由此,测试的优缺点显而易见.优点是易于实施,可以针对特定的功能构造相应的测试数据去加以检验,好的测试数据能有效及时地发现错误:缺点是我们构造的测试数据并不能完全保证覆盖到了所有的情况,即我们无法保证程序的正确性,程序可能还存在我们未发现的bug. 正确性论证,就是针对规格化的代码,通过对代码逻辑进…
OO第三次课程总结分析 规格化设计发展历史 在网上找了好久也没找到合适的信息,稍稍参考了同学的博客.大致如下:最初的的软件并没有形式化方法,随着软件工程的兴起,为了便于工程间的协调管理,人们提出采用工程方法来组织.管理软件的开发过程并深入探讨程序和程序开发过程的规律,建立严密的理论.随着时代的发展,软件的复杂度日益加大,结构化程序设计的缺点日渐暴露出来,面向对象设计由此产生,规格化设计进一步发展,这一次的规格设计可以更好地区分置换条件,以适应面向对象设计.如今,规格化设计基本完善,软件可以轻松实…
OO第一次博客作业 一.三次作业的bug反省 1.自己发现别人的问题 (1)输入处理的问题,比如第一次作业,主要就是处理输入的字符串,然后有同学的正则表达式有问题,则对于一些错误输入就不能正确判断. (2)在求导求完之后的合并项的时候出问题,在第二次作业中我发现了两个同学都是在和并项的时候出了问题,导致两个指数相同的项没有成功合并,然后出现了一些奇奇怪怪的错误. (3)输入没有处理好,具体到项中各个参数读入的时候会出错,有一个同学x前输入一个空格就没法正确输出. 2.作业中自己被别人发现的bug…
第一次OO博客作业 前言 面向对象课程已经经过了4周的时间.前三次作业全部是关于多项式求导的相关内容,内容由易到难,同时我也开始逐渐深入感受学习面向对象的各项特征,逐渐将自己的编程风格从C向真正的面向对象语言转换.同时我还接触了DEBUG和互测屋这样崭新的学习方式,在阅读别人代码的过程中不断增强自己的编程能力和学习能力. 本篇博客将结合3次作业内容,分别从题目的理解思路,代码风格和度量,BUG的产生以及修复和Applying Creational Pattern共4个方面分析我这四周以来的工作.…
OO第一次学习总结 1.第一次作业:多项式加法 从未接触过java的我,在从输入输出开始学了几天后,按照C语言的思路,写出了一个与面向过程极其接近的程序. 在这个程序中,存在两个类:一个是ComputePoly,用于验证格式.提取以及传递多项式参数:还有一个是Poly类,用以多项式的存储与计算. 从下图可以看到,程序总共有94行,而main方法有47行,占了一半的行数,说明该程序的总体思路仍是停留在写C代码时的面向过程思想上,将大部分的处理操作在main中逐步实现,而不是分摊到类中,从而导致ma…
oo 第一次博客作业 早在大一就听说了oo的各种传奇故事,大二下学期终于也开始了我的oo之旅. 基于度量来分析自己的程序结构 第一次作业 类图分析 耦合度分析 可以看出在第一次作业中,我的耦合度非常高,还停留在面向过程式的设计. 第二次作业 类图分析 耦合度分析 可以发现在第二回作业中虽然我有意识的拆分类,但组织结构仍然不好,耦合度仍然很高. 第三次作业 类图分析 耦合度分析 可以分析发现,这次的作业有了一些oo的样子,对input, output, terms有了各自的package,并且耦合…
当我满怀期待叩开OO的大门,却发现宝藏藏在层层阻难之后 第一次作业 1.度量分析 >关于第一次作业的metrics图分析没有出现标红的McCabe Cyclomatic Complexity或者Nested Block Depth,但笔者在第一次作业后也反思了自己的问题:在解析多项式将其中的数据取出时并没有设计一个很好的方法,而是繁琐的if-else判断和while语句,代码的嵌套现象还是比较严重的. 2.类图 >第一次作业刚刚学习JAVA,对于类与对象的概念还不是特别清晰.所以很容易看到笔者…
前几次的作业都是单线程的,总体来说和以前的思维模式和调试等存在着一定的挂钩,在设计上整体难度还不算太大,这次开始了多线程编程,难度可以说是质的飞跃,构思上所考虑的不止一点两点,在整体的基础上还要考虑线程的同步安全等问题,下面针对三次作业的分析来谈谈在多线程编程上所犯的错误和得到的收获. 一.多线程电梯 1.设计策略 作为多线程的第一次作业,又恰逢清明假期,可以有相对充足的时间来学习多线程的相关知识和进行构思(可以说这个清明假期过得非常揪心了),因为有了前面两次电梯的积累,这次关于同质和捎带的问题…
综述:本模块的内容为表达式求导,目的是通过不同项的嵌套四则运算求导这一基本思路熟悉面向对象的继承与接口机制. 一.三次作业总结分析 1.第一次作业: 1.1 作业分析 盼望着,盼望着,鸽了一年的oo终于要掀开它神秘的面纱了(高工狗的怨念).第一次作业的要求是初级的表达式求导,这次作业中项和因子的概念没有加以区分,所以导致我并没有从中体会到oop的思想,加上当时还有托福考试于是第一次作业基本算是“混过去”了,只用一个简单的面向过程的模式进行了书写.第一次作业和以前面向过程不同的就是要处理各种各样的…
虽然早在开学之前就已耳闻过OO这门课的威力,也在寒假自学了一些java的语法,但在真正面对OO这样的工程训练时才发现寒假所学的那点语法简直不值一提,也深刻的感受到在这个过程中自己的提升确实很快,毕竟ddl是第一生产力. 第一次作业-一元多项式加减 1.程序结构分析 类图: 代码分析: 整体上来看,虽然本次作业用了一些面向对象的特性,比如多项式类和数对类,但从主类ComputePoly来看依然是个过程式的程序.最大的体现就是主类里有非常多的static全局变量和static函数,然后在main里依…
一.基于度量对程序结构的分析 1. 第一次作业 1.1 基于类的分析的度量 首先,基于类的属性个数,方法个数,每个方法的规模,每个方法的控制分支数目,类总代码规模等特征对本次作业的结构进行分析. 1.2 基于类间内聚和耦合的度量 我使用了MetricsReloaded插件来对代码的复杂度进行了分析. 还有对于方法的复杂度分析由于篇幅原因没有贴出来,主要的指标为ev,iv,v三个指标,分别代表基本复杂度.模块设计复杂度以及模块判定结构复杂度,ev大代表代码非结构化程度高,难以模块化和维护.iv大代…
使用了masteruml插件来生成类图和metrics插件分析代码 第一次作业 1.UML类图 >在第一次作业中,使用了两个类,代码中有没有使用的变量与函数,为平衡两个类的内容,我将输出函数放在了多项式类中,但是仍然不够平衡. 2.量化分析: >处理字符串输入的过程,按照面向过程的思路来写,嵌套的判断条件过多,时间空间复杂度都比较高,写的并不简洁. 3.程序中的bug: 公测bug:压力测试,在数据量较大的情乱下,我对计算结果进行了取模运算,导致了公测出错.错误来源处于多项式计算的过程中,在最…
第一次总结性博客 16071070 陈泽寅 2019.3.23 一.第一单元所学总结 首先先来总结一下第一单元我所学到的知识以及所感所悟.第一个单元,是我第一次接触JAVA语言,并且再使用了几次之后,就被这门语言的独有的魅力以及简便的用法所深深吸引.下面我从三个方面来简单阐述一下我对于JAVA相比较于c语言的优势. (1)从架构上来说,java的设计思路是不同于c的,它是一门面向对象的语言,我们的思维从熟悉的过程式编程语言转移到了对象思维上来.这样的思维的好处是,我们可以将一个大的问题分成很多个…
OO第一单元总结 面向对象设计与构造的第一单元,对“面向对象”的概念还根本不理解不熟悉,只觉得需要“分模块”,但不知道怎么分,分多少模块,怎么根据需要的模块的功能建立类.学习的进度又太慢,根本跟不上出作业的速度,导致三次作业的代码都写得很乱,很不面向对象. 1. 第一次作业 1.1 程序结构分析 第一次的作业比较简单,但由于刚刚接触面向对象,程序的结构仍然不太好.整个 project 只有两个类,主类和多项式处理类,且两个类的复杂度差别较大.由插件 MetricsReloaded 的分析可知,多…
过去的三周里我们完成了表达式求导的程序设计与构造.表达式求导程序,大致思路是实现一个表达式类,支持表达式的输入.求导运算和输出功能.可能的话,还可以增加表达式的化简方法,从而得到更高质量的输出结果.总的来说,输入的处理是最为繁琐,也最容易出错的:而只要表达式类的结构设计合理,求导运算和输出都不会构成太多障碍. 一.程序结构分析 1.1第一次作业 第一次作业我在Main类中写了表达式输入的部分,因此Main类非常臃肿.尤其是对于x的指数部分的处理,判断分支写的很繁琐.这个在后面的两次作业中做了改进…
前言: 这是一篇面向对象作业总结,作业内容是对多项式进行求导,一共有三个阶段,具体要求不详述,第一阶段只要求’+’连接coeff*x^pow的形式,第二次支持*连接的幂函数及三角函数,第三次则需要支持括号表达式的嵌套.本想不用编译原理所述表达式树,最后发现做成一团乱麻. 第一次作业 类图如下: 说明:第一次作业比较简易,主要是对新版eclipse和checkstyle的安装和熟悉.词法分析器为Token,可以考虑将其单例化,因为只有一个词法分析器.用Poly存储多项式的系数和幂次,在PolyDi…
第一次作业1.程序分析 (1)OO度量 (2)类图: (3)分析与评价: 这次作业由于作业整体设计难度不大,因此按照去年暑假上的OO先导课老师讲的设计方法很容易实现一个还不错的面向对象式程序,类与类之间的耦合度不是很高.但是即第一次简单的作业还是在设计上出现了漏洞被找到了bug,说明设计做的还是不够充分.类图分析:本次设计分为Poly类,InputDeal类,Main类,Item类,其中Item类实现了Comparator接口,Main类主要进行主函数运行.Item是一个项数和系数的偶对,并且通…
第一次作业 第一次进行面向对象的编程,不论是针对数据设计类还是对方法进行合适的归于不同类中,都不是很熟悉.所写出来的程序还是面向过程+有函数的类(虽然现在很大程度上感觉起来也是这样).索性作业难度并不算高,完成的也算马马虎虎.公测都通过了,但是互测的时候被发现了一处笔误,少写了一个0,导致6位的测试样例无法正常读入.并且由于我的检测输入的实现并不是通过正则表达式,而是通过简单粗暴的有限状态机,故而第一周并没有完整学习正则表达式.虽然有限状态机的设计并没有出错,但是没有尽早学习正则表达式也给我后面…
写在最前面: 我是一个这学期之前从未接触过java的小白,对面向对象的理解可能也只是停留在大一python讲过几节课的面向对象.幸运的是,可能由于前三次作业难度还是较低,并未给我造成太大的困难,接下来我就三次作业,从程序以及个人体会谈谈我的分析与感悟. 第一次作业: 度量结果以及UML图: 度量结果: UML: 分析: 这次作业是我人生中的第一个像点样子的java程序,刚拿到指导书真是一脸懵逼.由于我还什么都不太懂,于是我就采用了“照猫画虎”的策略,直接模仿老师ppt中给出的代码框架,然后自己填…
作业一.多项式的加减运算 1.设计要点与自我分析 我设计的类图 老师建议类图 我设计了两个类来进行多项式的计算,类Polynomial进行多项式的存储和输入输出,第二个类进行多项式加减运算.而加减运算的类里面只有方法,而且都是静态方法,没有存储变量,感觉这个设计还是有些问题.之后我也参考了一下别人的代码. 多项式的存储: 我用的是一维数组来存储多项式,下标代表的是多项式的次数,数组存储的是多项式的系数,这种存储方法对于多项式加减法的操作很方便,但是浪费的空间大,因为很多系数是0:而且存储多项式加…
经过三次作业的历练之后终于来到了写博客这一周.回顾开学来的这一个月,令我印象最深刻也是最累的一门课就是OO了.虽然上学期学过一部分Java,但这学期开学就来的OO作业还是让我在第二周就开始熬夜了.不过虽然这几次作业相比于其他几门课在开学这一阶段的进度来说感觉很紧张,但是我从中学到的知识以及代码技巧也很多(给别人挑bug也熟练起来了(狗头)). 前三次作业的度量分析及类图 第一次作业 第二次作业 第三次作业 由上可见,三次作业中,我的代码中都存在一些较为复杂的方法,这些方法大多是整个程序核心逻辑的…
第一次作业: 第一次作业的指导书发下来之后我按着上面的步骤一步一步的做了之后发现项目拉下来了,怎么开始码代码呢...然后在舍友的帮助下才知道怎么建包建类,然后对Java的语法又不是很了解,于是就先把C的代码写了然后照着C程序的代码进行面向过程编程... 第一次作业中未熟练了解到正则表达式的用法,所以在分析多项式时使用了状态机用了很多的if-else也正是这样所以在互测中被找到了一个多项式判断的bug,在公测中也由于没能完全理解指导书也挂了一个.互测中对方的bug貌似我比还多他的error用了小写…
前言 这一单元关于线程安全的作业结束了,在助教提供的接口的帮助以及老师提供的设计模型的指导下,这三次作业还是相对轻松地完成了,中间也没有出现什么bug,可能就是因为简单的逻辑不容易出错吧,可惜两次都由于性能分与a组失之交臂,或许在后续作业中还是应该多在性能优化下做一些工作. 第一次作业 设计思路 这次参考了老师所给的生产者消费者问题,主要设计了电梯类,控制器类,输入器类,主类,电梯类只负责向调度器请求指令,并根据接收到的指令进行上下楼接送人操作,输入器类只负责接受指令并向调度器塞入指令,控制器类…
Q:菜是绿的,鸡是黄的,那菜鸡是什么颜色的? A:红的,强测全WA了,能不红么. 菜不菜的问题先不说了,认真研究一下这次的题目,以及WA的原因吧. 程序结构简析 三次实验的核心结构都是差不多 第一次的没什么好分析的,每个Item可以用固定的方式表示:num * x ^ n(暂且不考虑格式),然后拼成表达式就行了. 第二次,以Item为最小单位显然是不现实了,每个Item的项数和项的种类都不确定,那么就用抽象类Factor作为基本单位,常数因子.幂函数因子.sin函数因子和cos函数因子作为该类的…
(1)基于度量来分析自己的程序结构 第一次:Poly:属性 AL<Term>方法 check(格式检查) Poly(构造) merge(合并) compute(求导) Term:属性 coeff exp方法 Term(构造) get/set Poly格式检查,Poly用正则分割出Term,Term解析出coeff和exp.在Poly中根据Term的属性进行合并,并计算,最终在PolyCompute中输出.1.感觉把输出部分写到Poly的tostring里面更好一些.2.这次用了一个超大正则一次…
测试与正确性论证的效果差差异 测试和正确性论证都是对程序进行可靠性的验证. 测试: IEEE提出了对软件测试的定义:使用人工或者自动的手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或者弄清预期结果和实际结果之间的差别.它是从对程序的实际操作来对运行结果和期望的结果进行比对,实质上只是一种抽样检查,只是一种查错的手段,它可以帮助人们去发现程序中的错误,但不能证明程序中没有错误,即:测试不能证明程序是正确的.测试又分为黑盒测试和白盒测试: 黑盒测试把测试对象看做一个黑盒子,测试人…
一.当时未能完成的作业 未能完成的作业是第四单元的作业. 未能完成的原因主要有以下两点:一是当时对于数据的整理没有好的设计和思路:二是临近期末,未能合理地分配时间导致作业未能完成 二.改进的部分 通过重新审视第四单元的三次作业,我对两个方面进行了改进 1.对于不同数据的层次进行分析,为上层元素进行封装 2.采用多次遍历数据的方法来整合数据 这样做就很好的将数据有层次地整合在了一起,方便了后续的查找和判断 三.进步和收获 由于之前的第四单元作业被实锤抄袭(因为不会整理数据就借鉴了往年学长的整理方法…
使用: Picasso.with(this) .load("http://imgstore.cdn.sogou.com/app/a/100540002/467502.jpg") .into((ImageView) findViewById(R.id.ivImage));(1),首先进入Picasso.with(this): 创建一个Picasso类型单例singleton, 接着进入Builder构造函数: 这里是通过传入的context获取全局的context,主要是为了防止内存泄漏…
一. 多项式求导问题描述 基本概念的声明: 带符号整数 支持前导 0 的带符号整数,符号可忽略,如:+02.-16.19260817 等. 因子 变量因子 幂函数 一般形式 由自变量x和指数组成,指数为一个带符号整数,如:x ^ +2.且,指数绝对值一律不得超过$ {10}^4 ​$. 省略形式 当指数为1的时候,可以采用省略形式,如:x. 三角函数 sin(x),cos(x),另外,本指导书范围内所有的词语“三角函数”,除非特殊说明,否则一律包含且仅包含上述两个函数) 一般形式 类似于幂函数,…