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

目录 总 架构 Controller​ Model​ 输入处理 代码静态分析 行数 方法复杂度 UML​ 类图 优点 缺点 坑 输入 非法的空白字符 输入的简并处理 运算 浅拷贝 可变类型与不可变类型 输出 表达式因子的优化 互测策略 测试集测试 针对性测试 脚本测试 Creational Pattern 总 本博文是2019年北航面向对象(OO)课程第一单元作业(多项式求导)的总结.三次作业的要求大致如下: 第一次作业:简单幂函数的求导,如 \(1 + x^5 + 4 * x^3\) 第二次作…
目录 总 架构 controller model view 优化算法 Look 算法 多种算法取优 预测未来 多线程 第五次作业 第六次作业 第七次作业 代码静态分析 UML 类图 类复杂度 类总代码规模 属性个数 方法复杂度 方法个数 方法规模 控制分支数目 优缺点 优点 缺点 SOLID 原则 单一职责原则(SRP) 开放封闭原则(OCP) 里氏替换原则(LSP) 接口隔离原则(ISP) 依赖倒置原则(DIP) 多线程协作 UML 图 分析 线程间通信 并行任务的独立性 坑 多线程错误 Ma…
OO面向对象第一单元总结(表达式求导) 写在前面: 魔鬼课程oo第一单元终于结束,当终究要落笔总结,竟不知从何写起…… 回首再去看第一次的作业,你会满足于那时的幸福,或许,这就是成长吧! 千言万语,一切尽在无言中…… 知识点总结: 对象,类 面向对象的编程思想 封装.继承.多态.抽象 接口 重写 …… 作业代码思路: 本单元的三次作业是一个层层深入的关系,我认为,虽然“推倒重来”式写法十分不可取,但对于一个刚刚接触面向对象思想的新手来说,也可能是不可少的一个环节,我们能从自己推倒重来的过程中,逐…
目录 第四单元总结 总 UML UML 类图 UML 时序图 UML 状态图 架构设计 第十三次作业 第十四次作业 课程总结 历次作业总结 架构设计 面向对象方法理解 测试方法理解与实践 改进建议 尽量避免与面向对象无关的任务 时间安排提前安排好 理论课存在感不强 课程收获 第四单元总结 总 本部分是2019年北航面向对象(OO)课程第四单元作业(UML)的总结.两次作业的要求大致如下: 第一次作业:实现一个UML类图解析器,可以通过输入各种指令来进行类图有关信息的查询. 第二次作业:扩展类图解…
前言 在经过了三次艰辛的oo作业后,oo课程的第一单元告一段落,这一单元,我作为一个oo小白,开始了解oo的编程思想,也有了自己的一点心得体会.把笔粗成字,不当之处,还请各位大佬多多指教. 一.分析程序结构 第一次作业: 在第一次作业中,由于刚刚开始接触oo的思想,我还不是很了解面向对象的编程方法,还是按照c语言的思路,将deriviation作为main函数,在deriviation中调用number类,完成运算. 具体的操作思路,则是使用正则表达式构造出因子与项,通过正则式匹配来得到每一个项…
一.第一单元作业回顾 ​ 系列一作业分为三周进行,都是表达式求导,难度渐进. ​ 第一次实现的是简单幂函数的求导,第二次加入了sin和cos两种三角函数,第三次实现了三角函数内的嵌套以及引入了表达式因子. 主要学到的东西有: ​ IDEA的操作使用(包括checkstyle/statics/MetricsReloaded等插件的使用) ​ 正则表达式的使用 ​ Biginteger ​ java中字符串处理 ​ Arraylist的使用 ​ 继承与接口 ​ java建立二叉树 ​ 递归分析的思路…
目录 总 JML规格化设计 理论基础 工具链 规格验证 验证代码 代码静态检查 自动生成测试样例 生成结果 错误分析 作业设计 第九次作业 架构 代码实现 第十次作业 架构 代码实现 第十一次作业 架构 代码实现 心得体会 参考 总 本博文是2019年北航面向对象(OO)课程第三单元作业(规格化设计)的总结.三次作业的要求大致如下: 第一次作业:实现一个路径管理系统,可以通过各类输入指令来进行数据的增删查改等交互. 第二次作业:实现一个无向图系统,可以进行基于无向图的一些查询操作. 第三次作业:…
UML与解析架构 UML是什么 统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对象的.软件密集系统的制品的开放方法.UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效.(百度百科) 作为一种统一的建模语言,UML具有完全的面向对象特性,UML使用类作为建模的主题对象,能够很好地涵盖面向对象设计…
OO第四单元总结暨期末总结 目录 OO第四单元总结暨期末总结 第四单元三次作业架构与迭代 整体感受 HW1 HW2 HW3 四个单元架构设计与方法演进 Unit1 Unit2 Unit3 Unit4 四个单元测试理解与实践的演进 课程收获 课程建议 线上学习体会 第四单元三次作业架构与迭代 整体感受 第四单元主要学习的是UML相关的知识,大体包括类图,顺序图与状态图.在理论课掌握了所有知识点的前提下,代码实践部分的难点则集中在初期阅读大量官方代码(yysy,第一次作业开始写代码前我至少花了3h+…
2019面向对象课设第一单元总结 一.三次作业总结 1. 第一次作业 1.1 需求分析 第一次作业的需求是完成简单多项式导函数的求解,表达式中每一项均为简单的常数乘以幂函数形式,优化目标为最短输出.为了满足优化目标,我们需要将含有相同指数的项进行合并. 1.2 实现方案 根据需求,我们很容易就能想到利用HashMap构建常数和幂指数的对应关系(再加上这是第一次作业,本以为只是让我们借此熟悉一下Java语法,于是并没有考虑程序可扩展性),于是仅建立了Polynomial多项式类和用作主函数的Tes…
一.前三次作业内容分析总结 前言 前三次作业,我提交了三次,但是有效作业只有两次,最后一次作业没能实现多项式求导的基本功能因此无疾而终,反思留给后文再续,首先我介绍一下这三次作业,三次作业围绕着多项式求导展开,输出目的都是一致的,即对输入的多项式进行求导,将求导结果打印到显示屏,作业难度递增,每一次对多项式的要求都更加宽松,相应而言,求导的难度也就加大,从简单而固定的多项式到复杂而灵活的多项式,处理的难度随之加大,从正则表达式解决一切到继承接口多态的引入,java代码也越来越复杂,那么就让我们来…
「BUAA OO Unit 2 HW8」第二单元总结 目录 「BUAA OO Unit 2 HW8」第二单元总结 Part 0 前言 Part 1 第五次作业 1.1 作业要求 1.2 架构设计 1.3 协作图 1.4 调度分析 1.5 bug分析 自己bug 使用了run而不是start方法启动线程 别人bug 1.6 对象头.锁和同步 对象实例结构 锁和同步 参考资料 对象锁 方法锁形式 代码块形式 类锁 静态方法形式 代码块形式 参考资料 1.7 线程安全--封装安全输出类 每次调用加锁…
「BUAA OO Unit 4 HW16」第四单元总结与课程回顾 目录 「BUAA OO Unit 4 HW16」第四单元总结与课程回顾 Part 0 第四单元作业架构设计 架构设计概要 AppRunner官方包代码简析与架构设计初步 一.AppRunner工作逻辑和流程 1. 属性 1.1 interaction 1.2 status 2. 行为 2.1 run Step 1 输入与解析模型 Step 2 输入与指令获取 Step 3 输出 二.我们的工作 1. 解析和存储元素 1.1 输入顺…
BUAA面向对象设计与构造——第一单元总结 第一阶段:只支持一元多项式的表达式求导 1. 程序结构 由于是第一次接触面向对象的编程,加之题目要求不算复杂,我在第一次作业中并没有很好利用面向对象的特点,只建了两个类. 第一个DerivativeFunc类只包含main函数,而剩余所有功能包括正确性检查.求导和输出都全在类Poly里.这两个类之间也没有继承等关系,所以整体看起来还是偏向C语言的思路,这也是这次作业最大的问题.在类Poly里面,我建立了两个链表来分别存储每一项的系数和幂指数. 从以上两…
oo第一单元的作业是对多项式的求导.下面就是对三次作业分别进行分析. 第一次作业 分析 第一次作业相对来讲比较简单,甚至不用面向对象的思想都能十分轻松的完成(实际上自己就没有使用),包含的内容只有常数项和指数项.实际上这次作业给我的最大收获是初步认识了正则表达式的使用.程序的结构如下: 设计 结构十分简单,只有一个类(就是面向了过程...),类的构造函数用以处理输入的字符串,calcDiff()用来计算导数. 度量分析 从表格中可以看出来,factor()方法的复杂度与独立路径条数较高,这是因为…
OO第一单元作业总结 一.前言 开学四周,不知不觉已经做了三次OO作业.事实上,每一次作业对我来说都是很大的挑战,需要花费大量的时间和精力来学习. 虽然学得很艰苦,但最后还是连滚带爬地完成了.(好惨一人) 二.基于度量分析程序结构 (1)第一次作业 类图: 分析:第一次我写了三个类,Derivation类是负责构建一个整体的流程框架,输入.处理.求导.输出.Term类管理表达式的项,主要包含系数coe和指数index两个属性,Dealstr主要负责字符串合法性的判断和进行求导前一些简单的处理.此…
OO第一单元总结 面向对象设计与构造的第一单元,对“面向对象”的概念还根本不理解不熟悉,只觉得需要“分模块”,但不知道怎么分,分多少模块,怎么根据需要的模块的功能建立类.学习的进度又太慢,根本跟不上出作业的速度,导致三次作业的代码都写得很乱,很不面向对象. 1. 第一次作业 1.1 程序结构分析 第一次的作业比较简单,但由于刚刚接触面向对象,程序的结构仍然不太好.整个 project 只有两个类,主类和多项式处理类,且两个类的复杂度差别较大.由插件 MetricsReloaded 的分析可知,多…
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作业总结 第一次作业 ​ 第一次作业的要求是对仅有常数和幂函数的式子进行求导. ​ 由于是第一次接触JAVA,对很多东西都还不熟悉,尤其是正则表达式做得不好.当时我的思路如下: 建立Poly类,存储若干个幂函数(但是没有把幂函数建立成一个对象,对后面产生了麻烦) 先对字符串进行预处理(好坏参半) 使用符号作为关键字对原字符串进行分割(好坏参半,原因见后文分析) 对特殊符号采用了保护符(有效,但是不够巧妙) 进行简单判断之后,把大部分异常交给BigInteger处理(好) 在Poly类…
写在前面 在接触OO课程之前,自己是完全没有学习过java语言的,因此作为一名初的不能再初的初学者,无论是在哪方面都会有许多茫然,但是我相信通过一次次认真的完成OO作业,我对面向对象的理解应该会渐渐的深入,就写在博客上记录下我的点滴的收获.下面是我对前三次作业的分析与体会. 作业分析 (一)第一次作业 类图如下: 度量分析如下: 代码分析: 因为第一次作业对面向对象编程几乎没有概念,因此就当是按照C程序那样编写,现在一看这就是完全的面向过程的编程方法.在一个class里面定义了完成该程序需要的几…
2019年北航OO第1单元(表达式求导)总结 1 基于度量的程序结构分析 量化指标及分析 以下是三次作业的量化指标统计: 关于图中指标在这里简要介绍一下: ev(G):基本复杂度,用来衡量程序非结构化程度.基本复杂度高意味着非结构化程度高,难以模块化和维护. Iv(G):模块设计复杂度,用来衡量模块判定结构,即模块和其他模块的调用关系.模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离.维护和复用. v(G):模块判定结构复杂度,数量上表现为独立路径的条数. 从上面三张图可以看出,整体上3个…
第四单元两次作业总结 第十三次作业 需求分析 本次作业需要完成一个UML类图解析器,所需要解析的只有符合UML标准和能够在Java 8中复现的UML类图.查询指令存在两种:仅与所查对象有关的指令,以及需要回溯至顶级父类逐层查询的指令. 实现方案 本次作业需要我们对类图中的组成元素进行重新建模,建模时需要考虑类中的属性.类的继承关系.接口的继承关系以及类/接口之间的关联.为了达成以上目标,我选择将类和接口分别重新抽象为ClassInfo和InterfaceInfo类以记录其属性:对于类和接口之间存…
一.JML简介 1.1 JML与契约式设计 说起JML,就不得不提到契约式设计(Design by Contract).这种设计模式的始祖是1986年的Eiffel语言.它是一种限定了软件中每个元素所必需的责任与义务的开发模式,程序设计中的每个元素都需要用规范的语言精准地限定其前置条件(Preconditions).后置条件(Postconditions)和不变式(Invariants).通过这三项限定,我们可以清晰地获得对一个函数功能的刻画,从而达成设计与实现的分离,便于优化.测试和生成文档.…
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:本次作业,需要完成的任务为包含简单幂函数和简单正余弦函数的导函数及其组合的…