OO第一单元作业总结 第一次作业 基于度量分析代码结构 基本算法 第一次作业是简单多项式导函数求解,不需要对输入数据的合法性进行判定, 基本思想是用 (coeff, expo)表示二元组 coeff*x**expo,而多项式中的每一项都可以以二元组的形式存储,这样做的好处在于多项式的每一项存储形式规范单一,求导规则随之变得很简单,再加上由于不需要考虑输入数据的合法性与否.化简相对简单,使得实现很快. 当然缺点也很明显,可拓展性很差,只能支持简单的多项式,下一次迭代必须得重构了. UML类图: 耦…
写在前边:第一次接触面向对象语言,编程思想仍然不可避免的有以前面向过程的影子.从第一次作业的完全面向过程,到第二次学会剥离各个类互不影响到第三次作业的先构思面向对象的基本程序架构再编程.虽然程序有些地方仍然显得很笨重,但是在面向对象编程这条道路上也算是迈出了实质性的一步.在这一过程中,真心感谢各位在讨论课上分享自己经验的同学和讨论区的大佬.从各位的分享中,自己get到很多的关于程序架构设计参考,关于面向对象的不同理解,自动评测的方法,以及很多小技巧. 历次作业程序分析 第一次作业(仅包含幂函数的…
作业一.含幂函数的简单多项式的求导 (1)基于度量的程序结构分析 1. 统计信息图: 2. 结构信息图: 3. 复杂度分析 基本复杂度(Essential Complexity (ev(G)).模块设计复杂度(Module Design Complexity (iv(G))).Cyclomatic Complexity (v(G))圈复杂度 OCavg为平均循环复杂度;WMC为总循环复杂度 4. 分析: 本次作业一共使用3个类,没有使用继承.接口. Main类: 1)程序入口 2)主要业务逻辑层…
OO第一单元作业总结 在第一单元作业中,我们只做了一件事情:求导,对多项式求导,对带三角函数的表达式求导,对有括号嵌套的表达式求导.作业难度依次递增,让我们熟悉面向对象编程方法,开始从面向过程向面向对象转变.本文中,我将介绍我个人每一次作业的做法,以及三次作业的分析,互测时策略. 第一次作业 第一次作业由于只对多项式进行求导,求导的函数只有幂函数,项与项之间仅有和关系,因此处理起来比较简单,输入可以使用正则表达式提取数据,存储可以使用HashMap,这样可以很方便的实现合并同类项,输出也只需要判…
OO第一单元作业已全部完成,为了使这一单元的作业能够收获更多一点,我回忆起我曾经在计算机组成课设中,经常我们会写一些实验报告,经常以此对实验内容反思总结.在我们开始下一单元的作业之前,我在此对OO第一单元进行总体性的反思总结,请各位助教和同学们批评指正! 一.程序结构分析 1. 代码规模度量 第一次作业 类 类总代码规模 类属性个数 类方法个数 "MainClass" 8 0 1 "Polynomial" 150 10 4 "Term" 36 2…
oo第一单元的作业是对多项式的求导.下面就是对三次作业分别进行分析. 第一次作业 分析 第一次作业相对来讲比较简单,甚至不用面向对象的思想都能十分轻松的完成(实际上自己就没有使用),包含的内容只有常数项和指数项.实际上这次作业给我的最大收获是初步认识了正则表达式的使用.程序的结构如下: 设计 结构十分简单,只有一个类(就是面向了过程...),类的构造函数用以处理输入的字符串,calcDiff()用来计算导数. 度量分析 从表格中可以看出来,factor()方法的复杂度与独立路径条数较高,这是因为…
经过了三次作业之后,OO第一单元告一段落,作为一个蒟蒻,我初步了解了面向对象的编程思想,并将所学内容用于实践. 一.第一次作业 1.架构分析 本次作业需要完成的任务为简单多项式导函数的求解.表达式仅支持常数项以及幂函数项的简单加减运算,并且输入保证是符合格式规范.整体要求上较为简单,但由于我对一些基础知识掌握不透彻,并且对面向对象编程的思路还理解得不够,所以整体上本次作业基本上还是面向过程,可移植性以及可扩展性很差. 大致思路:首先将表达式化简,暴力去掉空白项,并且将连续的+.-号化简,使每项统…
前言 第一单元的主题是表达式求导,第一次作业是只带有常数和幂函数的求导,第二次作业加入了正余弦函数,第三次作业又加入了表达式嵌套,难度逐渐提升.总体来说前两次作业还易于应对,而第三次作业做得相对有些艰难.而且这其中还有很多巧合,第二次作业延时到了周三上午,而我在周二晚睡觉前经过本地测试又找到一处致命BUG,一直改到一点才交上:第三次作业一开始中测的最后一个点一直没有通过,周二找了一天本来已经放弃,后来得知作业又延时到周三中午,成功在周三上午找到了那处BUG,并正好用完十次无偿提交次数,终于过了全…
第一个单元的三次作业均为求导,循序渐进的让我们掌握如何构造类和方法,让整个代码是面向对象的设计而不是面向过程的设计.如果第一次作业和第二次作业你只是简单的对过程着手架构类,到了第三次作业就会变得格外麻烦.掌握了面向对象创建多个类.分层次地实现每个类的功能,并梳理清楚继承与接口处理每个类的思路,便能够游刃有余地解决. 一. 总体设计思路 第一次作业 第一次作业时,还没有建立面向对象的程序设计思维和架构类的思路,因此整个代码采用面向过程,只构建了一个类,用多个方法划分,来处理输入并打印出求导的结果.…
一.前三次作业内容分析总结 前言 前三次作业,我提交了三次,但是有效作业只有两次,最后一次作业没能实现多项式求导的基本功能因此无疾而终,反思留给后文再续,首先我介绍一下这三次作业,三次作业围绕着多项式求导展开,输出目的都是一致的,即对输入的多项式进行求导,将求导结果打印到显示屏,作业难度递增,每一次对多项式的要求都更加宽松,相应而言,求导的难度也就加大,从简单而固定的多项式到复杂而灵活的多项式,处理的难度随之加大,从正则表达式解决一切到继承接口多态的引入,java代码也越来越复杂,那么就让我们来…