首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
北航oo作业第一单元小结
】的更多相关文章
北航oo作业第一单元小结
前言 在经过了三次艰辛的oo作业后,oo课程的第一单元告一段落,这一单元,我作为一个oo小白,开始了解oo的编程思想,也有了自己的一点心得体会.把笔粗成字,不当之处,还请各位大佬多多指教. 一.分析程序结构 第一次作业: 在第一次作业中,由于刚刚开始接触oo的思想,我还不是很了解面向对象的编程方法,还是按照c语言的思路,将deriviation作为main函数,在deriviation中调用number类,完成运算. 具体的操作思路,则是使用正则表达式构造出因子与项,通过正则式匹配来得到每一个项…
北航oo作业第二单元小结
类的设计: 首先,我对我的思路进行整体的说明,由于我的三次作业,思路是继承的,所以做总体的说明 第一, Main类,Main类自身并没有功能,他的功能只是构造需要的电梯线程和输入线程. 其中,第三次作业中,main类负责将电梯参数(运转时间,负载上限,运行楼层)传入Memory类和Elevator类 第二, 是Eleinput类,这个类,是一个单独的线程,功能是读入需求,每次读入需求,将其写入Memory类中,当读入null时进程结束. 输入器,与电梯类不相连,只负责传数据给Memory…
OO作业第一单元总结
一.第一单元作业回顾  系列一作业分为三周进行,都是表达式求导,难度渐进.  第一次实现的是简单幂函数的求导,第二次加入了sin和cos两种三角函数,第三次实现了三角函数内的嵌套以及引入了表达式因子. 主要学到的东西有:  IDEA的操作使用(包括checkstyle/statics/MetricsReloaded等插件的使用)  正则表达式的使用  Biginteger  java中字符串处理  Arraylist的使用  继承与接口  java建立二叉树  递归分析的思路…
2020北航OO第四单元总结
2020北航OO第四单元总结 一.本单元架构设计 本单元作业是实现一个UML图解析器,其中实现接口及主要框架课程组已经提供,只需要我们完成特定功能. 在第一次作业时,感到十分迷茫,不知道如何下手,最后在重新学习了类图的mdj文件的各项含义及内在关系后,我选择设置一个umlTree类进行UML的解析,然后存入自己写的MyUmlClass和MyUmlInterface中,使其根据原有的UmlClass和UmlInterface构造,在其中实现operations.attributes.associa…
北航OO第四单元——UML图解析
北航OO第四单元--UML图解析 作业要求简析 刚接触本次作业可能需要花上一会才能搞清楚到底是要我们写个啥,在这里简单说一下: UML图的保存格式.mdj文件是以json文件的形式存储的,将每一个UmlElement作为其parent的属性挂载到其中.可以自己随便用starUML画一个,然后看看源文件内容 课程组将这一个个UmlElement单独拿出来逐条输入,以此在我们的程序中建立起UML类图 然后输入查询指令,查询有关于UML图的各种信息并输出 作业思路及架构 由于许多大作业.考试全部堆在这…
OO面向对象第一单元总结
OO面向对象第一单元总结(表达式求导) 写在前面: 魔鬼课程oo第一单元终于结束,当终究要落笔总结,竟不知从何写起…… 回首再去看第一次的作业,你会满足于那时的幸福,或许,这就是成长吧! 千言万语,一切尽在无言中…… 知识点总结: 对象,类 面向对象的编程思想 封装.继承.多态.抽象 接口 重写 …… 作业代码思路: 本单元的三次作业是一个层层深入的关系,我认为,虽然“推倒重来”式写法十分不可取,但对于一个刚刚接触面向对象思想的新手来说,也可能是不可少的一个环节,我们能从自己推倒重来的过程中,逐…
2019年北航OO第1单元(表达式求导)总结
2019年北航OO第1单元(表达式求导)总结 1 基于度量的程序结构分析 量化指标及分析 以下是三次作业的量化指标统计: 关于图中指标在这里简要介绍一下: ev(G):基本复杂度,用来衡量程序非结构化程度.基本复杂度高意味着非结构化程度高,难以模块化和维护. Iv(G):模块设计复杂度,用来衡量模块判定结构,即模块和其他模块的调用关系.模块设计复杂度高意味模块耦合度高,这将导致模块难于隔离.维护和复用. v(G):模块判定结构复杂度,数量上表现为独立路径的条数. 从上面三张图可以看出,整体上3个…
2020北航OO第三单元总结
2020北航OO第三单元总结 本单元要求是根据JML规格完善代码,初看是一个简单的代码照搬实现的东西,但最后才发现由于CPU时间的限制,还考察了大量优化策略及数据结构中关于图的知识,是一次非常注重细节构思的一单元,我借此机会学习并巩固了好几个图的算法,并了解了java各类容器的查插删改的效率. 一.JML理论基础 JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种表示语言,它相当于一种接口,正确的JML可以给实现人员清楚的代码要求,并且针对已有代码书写…
北航oo作业第四单元小结
1.总结本单元两次作业的架构设计 在我动手开始总结我的设计之前,我看了其他同学已经提交在班级群里的博客,不禁汗颜,我是真的偷懒.其他同学大多使用了新建一个类,用以储存每一个UMLelemet元素的具体信息(当然这个类的形式可能是结构.map等等,但核心思路大体一致).在设计这个类的时候,大多数同学都遇到了困难,耗费了大量的时间精力. 下面我来讲一下,我的第一次作业的架构设计: 最开始,我查看方法描述,考虑如何实现方法的时候,惊喜的发现,UMLelemet数据类型的对象是可以实行操作的!这样一来,…
BUAA OO 2019 第一单元作业总结
目录 总 架构 Controller Model 输入处理 代码静态分析 行数 方法复杂度 UML 类图 优点 缺点 坑 输入 非法的空白字符 输入的简并处理 运算 浅拷贝 可变类型与不可变类型 输出 表达式因子的优化 互测策略 测试集测试 针对性测试 脚本测试 Creational Pattern 总 本博文是2019年北航面向对象(OO)课程第一单元作业(多项式求导)的总结.三次作业的要求大致如下: 第一次作业:简单幂函数的求导,如 \(1 + x^5 + 4 * x^3\) 第二次作…
OO第一次博客作业--第一单元总结
OO第一单元总结 面向对象设计与构造的第一单元,对“面向对象”的概念还根本不理解不熟悉,只觉得需要“分模块”,但不知道怎么分,分多少模块,怎么根据需要的模块的功能建立类.学习的进度又太慢,根本跟不上出作业的速度,导致三次作业的代码都写得很乱,很不面向对象. 1. 第一次作业 1.1 程序结构分析 第一次的作业比较简单,但由于刚刚接触面向对象,程序的结构仍然不太好.整个 project 只有两个类,主类和多项式处理类,且两个类的复杂度差别较大.由插件 MetricsReloaded 的分析可知,多…
OO第一单元小结
写在前面 在接触OO课程之前,自己是完全没有学习过java语言的,因此作为一名初的不能再初的初学者,无论是在哪方面都会有许多茫然,但是我相信通过一次次认真的完成OO作业,我对面向对象的理解应该会渐渐的深入,就写在博客上记录下我的点滴的收获.下面是我对前三次作业的分析与体会. 作业分析 (一)第一次作业 类图如下: 度量分析如下: 代码分析: 因为第一次作业对面向对象编程几乎没有概念,因此就当是按照C程序那样编写,现在一看这就是完全的面向过程的编程方法.在一个class里面定义了完成该程序需要的几…
北航OO第四单元作业总结(4.1~4.3)及课程总结
前言 在学习过JML规格描述语言之后,本单元进行了UML(Unified Modeling Language)的学习.和JML单纯用语言描述的形式不同,UML通过可视化的图形形式,对一系列有关类的元素进行抽象化建模,帮助开发者更高效地理解大规模.复杂系统的模型,这对于理清对象之间的关系.设计对象的架构具有重要的意义. 在本单元的学习中,主要包括StartUML工具的使用以及对UML文件的解析,主要目的都是让我们更深入地了解各种元素的结构和组织方式,以及检验模型有效性的原则.StartUML是一款…
BUAA-OO第一单元小结
引言 四周过去了,oo课程的第一阶段作业也算告一段落.在第一单元的内容中,主题是始终如一的多项式求导,但三次作业要求完善的求导功能一次比一次丰富,难度也逐渐增加,也是费了不少心思.接下来就回顾与小结一下这三次作业,分析一下程序结构.遇到的bug以及总结这第一单元作业给我的感受. 第一次作业(关于幂函数多项式求导) 类图: 度量分析: 程序分析: 由于是第一次作业对于面向对象了解不是很透彻,只是根据面向对象的教材依葫芦画瓢创建了两个类,Term类完成项的求导,Poly类完成多项式的求导.但显然类的…
2019年北航OO第四单元(UML任务)及学期总结
第四单元两次作业总结 第十三次作业 需求分析 本次作业需要完成一个UML类图解析器,所需要解析的只有符合UML标准和能够在Java 8中复现的UML类图.查询指令存在两种:仅与所查对象有关的指令,以及需要回溯至顶级父类逐层查询的指令. 实现方案 本次作业需要我们对类图中的组成元素进行重新建模,建模时需要考虑类中的属性.类的继承关系.接口的继承关系以及类/接口之间的关联.为了达成以上目标,我选择将类和接口分别重新抽象为ClassInfo和InterfaceInfo类以记录其属性:对于类和接口之间存…
北航OO第四单元总结
OO最后一次博客作业--好聚好散 一.单元总结 作业一: 第一次是对类图进行解析,没有太大难度,只要根据讨论区提供的建议,新建两个类来存储相关数据即可实现. 作业二: 第二次作业的难度只有量的提升,然而量的提升直接增加了debug的难度,也正是因为bug太多,烤漆又忙,导致最后没能提交. 第二次作业多了状态图和顺序图,存储方式比较类似,大部分地方可以cv. 这次主要还是总结第四单元的体验. 采用的讨论区的建议,搭建了MyOperation和MyClass两个类. 部分截图 第十四次作业(很像章鱼…
2019年北航OO第三单元(JML规格任务)总结
一.JML简介 1.1 JML与契约式设计 说起JML,就不得不提到契约式设计(Design by Contract).这种设计模式的始祖是1986年的Eiffel语言.它是一种限定了软件中每个元素所必需的责任与义务的开发模式,程序设计中的每个元素都需要用规范的语言精准地限定其前置条件(Preconditions).后置条件(Postconditions)和不变式(Invariants).通过这三项限定,我们可以清晰地获得对一个函数功能的刻画,从而达成设计与实现的分离,便于优化.测试和生成文档.…
北航OO第三单元总结
JML基础梳理及工具链 JML的全称是Java Modeling language,即Java建模语言.JML是一种行为接口规格.它为严格的程序设计提供了一套行之有效的方法.通过JML不仅可以基于规格自动构造测试样例,还可以以静态方式检查代码对规格的满足情况. 一.注释结构 行注释://@annotation 块注释:/*@ annotation @*/ 二.JML表达式 (1)原子表达式 \result表达式:表示一个非 void 类型的方法执行所获得的结果,即方法执行后的返回值. \old(…
北航oo作业第三单元小结
一.梳理JML语言的理论基础 1.jml的注释结构 jml注释语言的每一行都以@作为开始,若是块注释,则需要在注释块的首尾使用/*@ 与@*/ 2.jml的表达式体系 1.原子表达式 表达式可以看作是一个原子类型,常见的有\result表达式(用于表达某个方法执行后的结果).\old表达式(用来表示某个对象执行某操作之前的值). 2.量化表达式 量化表达式是对给定范围内对象批量操作的表达式,其存在大大简化了jml语言,常见的有\forall表达式(范围内对象,都要满足某要求).\exists表达…
北航OO第三单元作业总结(3.1~3.3)
JML简介及相关工具链使用 1.JML规格描述语言介绍 本单元学习的内容是JML规格描述语言.我们知道,面向对象方法是一个抽象过程,需求者仅需关注方法的规格.规格是对一个方法/类/程序的外部可感知行为(语义)的抽象表示,内部细节无需在规格中表示 , 同时需保证规格实现的无二义性.JML规格描述语言使用javadoc注释的方式,为严格的程序设计提供了一套行之有效的方法. JML每行都以@起头.有两种注释方式,行注释和块注释.其中行注释的表示方式为 //@annotation ,块注释的方式为 /*…
北航OO(2020)第二单元博客作业
第二单元第一次作业 多线程设计策略 第一次作业的想法是设计三个线程:输入线程,调度器线程以及电梯线程.输入线程获取请求并发送给调度器线程:调度器线程通过查询电梯线程的状态(等待.停靠以及移动),并综合已有的请求为电梯线程分配目标:电梯线程根据分配到的目标进行移动,并进行上下乘客操作. 为了这么做输入线程与电梯线程有一共享变量requestQueue用以保存请求,调度器线程与电梯线程有一共享变量taskQueue用来保存电梯的移动目标.这种设计的初衷是让不同线程尽量只干自己该干的事,即输入线程负责…
2019北航oo课程第二单元作业总结..#_#..
学习了之前在写代码是从来没有见过的多线程之后,便迎来了此次电梯作业.说实话,这次作业做得十分的辛苦,虽然在前三次作业中领悟到了java面向对象的精髓,但是再加上了多线程之后,又开始理不清思路,对自己的代码胡诌八扯了.但是欣慰的是,在最后两次作业中,我仿佛领悟到了多线程正确的写法. 1.1 第一次作业 1.1.1 类图 其中,main函数是主函数,controller是调度器,用来解决输入并且根据输入给予电梯命令,Elevator是电梯线程,用来解决controller所给的命令.Mam函数是专门…
2019北航OO第三单元作业总结
1.梳理JML语言的理论基础.应用工具链情况 JML基础理论: JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种表示语言.JML是一种行为接口规格语言,基于Larch方法构建.JML可以为严格地程序设计提供一套行之有效的方法.通过JML及其支持工具,不仅可以基于规格自动构造测试用例,并整合了SMT Solver等工具以静态方法来检查代码实现对规格的满足情况. 从我个人的理解上,JML语言以简洁严谨的形式描述了代码规格要求,有利于代码的规格化设计,实现…
2019年北航OO第4单元(UML)总结
1 架构设计 经过了接近一学期的程序设计训练,在这一单元的第一次作业中我就非常注重架构的设计,竭力避免像之前一样陷入"第一次作业凑合,第二次作业重构"的不健康的迭代模式.整体上来说,我对我本次作业的架构还是很满意的.废话不多说了,直接上类图: 从类图也可以看出来,整体的架构非常工整.MyUmlGeneralInteraction类是整个程序的中心,负责实现接口UmlGeneralInteraction的全部方法,以及输入的读取和分配.它下面所属的三个类是ClassModel, Stat…
【作业】HansBug的前三次OO作业分析与小结
OO课程目前已经进行了三次的作业,容我在本文中做一点微小的工作. 第一次作业 第一次作业由于难度不大,所以笔者程序实际上写的也比较随意一些.(点击就送指导书~) 类图 程序的大致结构如下: 代码分析 可以看出,整体的功能还是相对零散的,耦合状况也基本还可以.然而类似Main.main.Polynomial.Polynomial两个函数的复杂度仍有点高.笔者后来查阅了阿里Java开发规范手册,发现两个问题: 单个方法的长度不宜过长,入口点方法(Main.main)也是一样 不宜在构造函数中携带过多…
【作业2.0】HansBug的5-7次OO作业分析与小结,以及一些个人体会
不知不觉又做了三次作业,容我在本文胡言乱语几句2333. 第五次作业 第五次作业是前面的电梯作业的多线程版本,难度也有了一些提升.(点击就送指导书) 类图 程序的类图结构如下: UML时序图 程序的逻辑时序图结构如下: 代码分析报告 可以看出,这次的程序依然存在部分类或方法代码较为集中的情况,这样的情况在类Lift.LiftController,甚至笔者自己的第三方库DebugLogger中较为明显.甚至在Lift和LiftController类中可以发现其实业务逻辑已经非常的密集. 公测 我方…
2018-北航-面向对象-前三次OO作业分析与小结
基于度量的程序结构分析 由于平时使用了NetBrains出品的IDEA作为IDE,在分析程序的时候我使用了IDEA的插件Metrics Reloaded.然而在使用时发现不懂得很多分析项目的含义,因此花费了一些时间了解,并在这里总结. Complexity Metrics(复杂度分析) 这部分我们需要使用的主要是方法和类的复杂度分析. 方法的复杂度分析主要基于循环复杂度的计算.循环复杂度是一种表示程序复杂度的软件度量,由程序流程图中的"基础路径"数量得来. ev(G):即Essenta…
2019年北航OO第2单元(电梯模拟)总结
1 三次作业的设计策略 经过了上一单元的训练,我也积累了一些设计策略上的经验.在这一单元的一开始,我便尽可能地把问题中的各个功能实体区分开来,分别封装成类,以便于随后作业中新需求的加入.与此同时,我也在有意地控制住方法的规模,依照程序逻辑层次化地设计方法,使得每个方法都不至于过分臃肿,从而增加代码的可重复利用性,减轻编程负担. 接下来,具体介绍每次作业的设计策略及其演进. 1.1 第1次作业 第一次作业的需求较为简单,只需实现单电梯先来先服务算法的调度模拟即可.为了尽可能模拟出电梯运行的真实行为…
OO作业第二单元总结
目录 一.设计策略 1 2 3 二.程序分析 1 2 3 S.O.L.I.D分析 三.Bug分析 1 2 3 四.互测策略 五.心得体会 一.设计策略 1 第一次完成的是一个傻瓜电梯,简单来说,就是来一个请求,就服务一个请求,服务完之后再服务下一个请求,这样循环往复.在完成这一次作业的时候,我对于多线程的理解还不是很深入,一开始在尝试单开一个电梯线程完成这次作业的时候出现了一些bug,我便尝试继续使用单线程的思路,很快就写出了单线程版本的作业,简单来说就是将电梯的所有功能写到一个deal函数中:…
2019年北航OO第3单元(JML)总结
1 JML语言的理论基础及应用工具链 1.1 JML语言 Java建模语言(JML)是一种行为接口规范语言,可用于指定Java模块的行为.它结合了Eiffel的"契约设计(design by contract)"方法和Larch系列接口规范语言的基于模型的规范方法,以及细化演算的一些元素.对JML语言起到理论支撑作用的文章主要是以下三篇: Leavens G T, Cheon Y. Design by Contract with JML[J]. 2006. 这篇文章解释了JML语言作为…