OO博客作业-《JML之卷》】的更多相关文章

OO第三单元小结 一.JML语言理论基础以及应用工具链情况梳理 一句话来说,JML就是用于对JAVA程序设计逻辑的预先约定的一种语言,以便正确严格高效地完成程序以及展开测试,这在不能容忍细微错误的工程领域如航空航天领域有广泛应用. 1.1 JML语言理论基础 本单元我们学习了一些语言理论基础,梳理如下: 1.requires 该子句定义了方法的前置条件 2.assignable子句,列出方法修改的类成员属性.\nothing则表示方法不改变任何成员属性,是一个pure的方法 3.ensure子句…
(1)基于度量来分析自己的程序结构 注:UML图中每个划分了的圆角矩形代表一个类或接口,箭头可代表创建.访问数据等行为.类的图形内部分为3个部分,从上到下依次是类的名称.类包含的实例变量(属性).类实现的方法.接口图形内部只分2个部分,上方为接口名,下方为接口定义的抽象方法.箭头上的注释进一步解释了类之间的关系. 作业1:多项式运算 两处红色的问题都出自checkformat方法.该方法圈复杂度高,块嵌套深度高.原因在于自己的格式检查没有使用推荐的正则表达式,依然使用了传统的有限状态机.这就容易…
一.总结介绍规格化设计的大致发展历史和为什么得到了人们的重视 1.规格化设计的大致发展历史 规格化设计,又称契约式设计,最早由Bertrand Meyer于1986年提出,出自于<面向对象软件构造>.其基础是形式验证.形式规格和Hoare logic. 2.规格化设计得到重视的原因 在大型软件工程开发中,协同工作能力的重要性日益凸显.“对于一个大型系统来说,光保证它的各组成成分的质量是不够的.而最有价值的是确保在任何两个组成部分的交接处设计明晰的彼此义务和权利规范,即所谓契约.”(<面向…
一.JML 在第三单元的面向对象课程中我们第一次接触了JML语言以及基于JML规范的规格化设计.在之前一系列关于面向对象思想的学习认识中,我们知道了Java是一种面向对象的语言,面向对象思想的一个重要原则就是将过程性的思考尽可能地延迟.而作为Java建模语言,JML给予了我们一种全新的方式来看待Java的类和方法,其通过将一些符号语言显式地插入到Java程序代码中,来描述一个方法所要求的前提以及期望达到的效果,而将过程性的思考延迟到了方法的设计中. JML理论基础 JML是用于对Java程序进行…
(1)本单元是撰写UML数据分析器,架构大致如下,在指导书要求的函数外,对于UmlClass类,Umlinterface类,以及状态机,顺序图这四个类重现构造一个类,这个类里有他们所需要的全部信息,另外还有三个check类和操作类,一遍提高代码的可读性. (2)第一个单元,我根本不知道何为架构,我每次代码都用的一个poly类(行数不够就分一个类出去,分担一下好引用的函数),第二次作业是电梯,电梯作业其实还是架构很清晰的,但是我在那个时候不是很会哟用继承,导致出现了一些bug,因此从第三次作业开始…
一.论述测试与正确性论证的效果差异,比较其优缺点 测试是设计若干组测试用例,运行程序并检验其是否完成预期功能.测试是一种直接发现BUG的方法,可以准确断定什么样的BUG会发生,并通过辅助调试进一步确定发生BUG的代码位置.测试效果取决于测试者设计测试用例的覆盖面和针对性. 正确性论证是根据规格化设计原则,逐个检查每个类的属性.方法代码是否有违设计规格和数据保护原则,从而确定程序的正确性和错误发生的位置.这种方法相对测试,其随机性会小一些,效果主要取决于规格是否真实反映了客户端需求以及论证者的逻辑…
(1)从多线程的协同和同步控制方面,分析和总结自己三次作业来的设计策略及其变化. 第5次作业:多线程电梯 基本照搬了课件上“生产者-消费者”模型的设计策略,将InputHandler设计为生产者线程,将Scheduler设计为消费者线程,将RequestQueue设计为托盘.生产者与消费者的工作并发,提高效率.同时,每部电梯设计为一个线程,因为每部电梯的运行彼此不干扰.InputHandler, Scheduler由主线程创建,三部电梯由Scheduler负责创建,这样使得调度器可以获取电梯的状…
这次的系列作业是写一个电梯调度,主要目的是让我们熟悉多线程. 第一次作业是一个傻瓜电梯的调度问题,要求也很简单,即每次接一个人就行了.我只用了两个线程,一个是输入线程,一个是电梯线程,输入线程负责从标准输入中读入请求并加入到请求队列中,电梯线程负责从请求队列中取出请求并执行,思路非常简单,每次取一个请求,把人送到后,再取下一个,直到取完并且输入停止. 第二次作业没有什么本质区别,只不过修改了调度算法,在电梯运行时进行捎带,我这里的思路是,先找到一个主请求,然后在去接主请求和送主请求去目的地的路上…
(1)说实话我这部分真的不知道写些什么,因为我只有第三次作业写了两个类,前两次都是一个类,一个类的好处可能也就是写起来比较方便(不用抽象什么共性了,直接c语言莽过去),缺点很多,架构不清晰,可读性不高,可扩展性不强,还学不到什么东西.因此在这里立一个flag,下次作业必好好构造.由于都是一个类,UML就不上丢人现眼了. (2)第二次作业的bug点在于我的优化,我对我的表达式的优化方法是求导后在String类中将^1,1*,0等替换掉,0是好办的,但是^1,和1*有些麻烦,我一开始想用String…
第一次多项式的作业感觉还行,同时用c和java写的话也算是一个从c到java的过渡,也算是有了对 java的初步认识,之后的电梯作业出血了一些小BUG,比如有些情况考虑不完善之类的,也算是对面向对象有了进一步的认识,写代码也更有结构和条理了,总之学习到了新的知识,也希望之后的作业可以完成的更愉快.…