OO第三次作业总结(JML)】的更多相关文章

OO第三单元作业总结--JML 第三单元的主题是JML规格的学习,其中的三次作业也是围绕JML规格的实现所展开的(虽然感觉作业中最难的还是如何正确适用数据结构以及如何正确地对于时间复杂度进行优化). 关于JML语言 JML语言概述 JML是Java Modeling Language的缩写,意思是Java建模语言,是一种进行详细设计的符号语言. 使用JML语言的好处主要有以下几点: 能够描述类和方法的运行方式,从而使代码的编写过程更加契合面向对象思想: 可以更加高效地发现和修正程序中的bug 在…
OO第三单元作业(JML)总结 目录 OO第三单元作业(JML)总结 JML语言知识梳理 使用jml的目的 jml注释结构 jml表达式 方法规格 类型规格 SMT Solver 部署JMLUnitNG与使用 三次作业架构设计梳理 第一次作业 第二次作业 第三次作业 三次作业中代码的bug及修复 规格撰写与理解的心得体会 JML语言知识梳理 使用jml的目的 开展规格化设计 针对已有的代码实现,书写其对应的规格,从而提高代码的可维护性 jml注释结构 在我目前看来,jml其实就是一门被规定好格式…
[OO学习]OO第三单元作业总结 第三单元,我们学习了JML语言,用来进行形式化设计.本单元包括三次作业,通过给定的JML来实行了一个对路径的管理系统,最后完成了一个地铁系统,来管理不同的线路,求得关于价格.换乘.不满意度等最短路信息. 本文将介绍:JML语言理论基础.应用工具链和工具的使用方法:SMT Solver:JMLUnitNG自动生成测试用例:三次作业的架构设计:Bug查找策略:个人心得. JML JML(Java Modeling Language)是用于对Java程序进行规格化设计…
OO第三单元(地铁,JML)单元总结 这是我们OO课程的第二个单元,这个单元的主要目的是让我们熟悉并了解JML来是我们具有规格化编程架构的思想.这个单元的主题一开始并不明了,从第一次作业的路径到第二次作业的图再到第三次作业的地铁系统,需求一步步提升,整个架构也变得复杂.这三次作业为我们模拟了一个需求不断进化的过程,也考验了我们在规格之下的架构能力. 一.JML语言的理论基础及应用工具链 1. 理论基础 JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种…
OO第三单元作业--魔教规格 JML的理论基础和相关工具   JML(Java Modeling Language,Java建模语言),在Java代码种增加了一些符号,这些符号用来标志一个方法是干什么的,但是不关心它的具体实现.通过使用JML,在实现代码前,我们可以描述一个方法的预期功能,而尽可能地忽略实现,从而把过程性思考一直延迟到方法设计的层面. 如果仅仅是描述方法的功能,那么自然语言一样可以做到,但是,使用JML语言的好处是,相比于容易产生歧义的自然语言,以前置条件.副作用.异常行为.作用…
OO前三次作业总结 基于度量分析程序结构 由于三次作业较多,决定分析内容.功能最为复杂的第三次作业. 上图为第三次作业的类图.我使用了一个抽象类Factor,写了五个因子继承Factor,然后又单独开了一个Term类,还有表达式类,其中Expression因子包含一个表达式类,其他就是常见的Main类,InputHandle类,求导和输出都在Main类中完成.个人认为本次的架构还可以,较为清晰,具有延展性,若是加入其他因子只需要继续继承Factor类,而在其他类中改动无需太多就可继续使用,而在递…
1.首先我们应该了解什么是jml,jml是java modeling language的缩写,是一种为java规格化设计的标识语言,简单来说,就是描述“干什么”的标准语言(跟注释差不多,但是是标准化注释).jml基于Larch方法构建.BISL提供了对方法和类型的规格定义手段.所谓接口即一个方法或类型外部可见的内容.JML主要由Leavens教授在Larch上的工作,并融入了Betrand Meyer, John Guttag等人关于Design by Contract的研究成果.近年来,JML…
第三单元的课题是JML, 即java建模语言.JML是一种描述接的语言.通过前置条件和后置条件,描述一个模块的行为.本单元我们扮演一个项目中的一员,完成自己的一小部分工作,最终实现整个项目.而限制我们这一小部分工作应该如何进行的正是JML. 一.什么是JML JML是一种java建模语言,有自己独特的语法,通过这套语法对前置条件,后置条件,变量不变式的控制,来描述一个模块的功能和行为.由于JML的语法更像是编程语言和算式,所以相比自然语言,JML虽然稍显复杂,却可以明确无二意的描述出模块的功能行…
一,第一次作业分析 度量分析: 第一次的oo作业按照常理来说是不应该有这么多的圈复杂度,但是由于第一次写的时候,完全不了解java的相关知识,按照c语言的方式来写,完全的根据指导书的逻辑,先写好了正确的方式然后又一步步的判断所有错误的方式,由于没有采用正则表达式,导致代码冗长,写了很多的if else循环导致嵌套过多.执行的次数大大的增加,使得程序的维护十分的困难. 类图分析: 第一次作业所创建的类很少,一个储存多项式的类和一个多项式集合的类.所有关于输入的判断全部都放入了一个类里面这就导致了前…
随着几周的进行,OO课堂已经经历过三次课下作业.在这三次作业中,我被扣了一些分数,也发现了自己几次作业中一些存在的共同的问题. 首先以第三次作业为例分析,我程序的类图如下 一共九个类,其中Als_scheduler是Scheduler的子类,二者分别在第二次和第三次作业中进行总调度.Request类是请求类 Requestqueue类是请求队列类,负责将输入的若干请求作为队列处理.Lift是电梯类,负责电梯的处理.FLoor类是楼层类,负责生成楼层类请求.具体流程如下: 1.程序以Main方法作…
一.JML理论基础及应用工具链情况 理论基础 1.JML表达式 \result:表示方法执行后的返回值. \old(expr):表示一个表达式expr在相应方法执行前的取值. \foall:全称量词修饰的表达式. \exists:存在量词修饰的表达式. <==>:等价关系操作符. ==>:推理操作符. \nothing:变量引用操作符,指示一个空集. \everything:变量引用操作符,指示一个全集. 2.方法规格 requires:表示前置条件(pre-condition). en…
一. JML语言 1. 理论基础 首先,JML不是JAVA的一部分,它是一群研究者为JAVA设计的扩展部分,但还没有得到官方的支持.因此,JAVA编译器并不支持JML,所以要想JML起作用,只能采用类似openJML这样的第三方来编译,将JML 规格编译为运行时检查的语句,即RAC code(runtime assertion checking).如果代码实现与其JML规格不一致,将引发运行时JML exception. JML遵从契约式设计范式(DBC),Design by contract是…
1.梳理JML语言的理论基础.应用工具链情况 JML基础理论: JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种表示语言.JML是一种行为接口规格语言,基于Larch方法构建.JML可以为严格地程序设计提供一套行之有效的方法.通过JML及其支持工具,不仅可以基于规格自动构造测试用例,并整合了SMT Solver等工具以静态方法来检查代码实现对规格的满足情况. 从我个人的理解上,JML语言以简洁严谨的形式描述了代码规格要求,有利于代码的规格化设计,实现…
一.JML的理论基础应用工具链 JML是用于对Java程序进行规格化设计的一种表示语言.基于Larch方法构建. (1)注释 JML以javadoc注释的方式来表示规格,每行都以@起头.有两种注释方式,行注释和块注释.其中行注释的表示方式为//@annotation ,块注释的方式为/* @ annotation @*/ . (2)原子表达式 \result表达式:表示一个非void 类型的方法执行所获得的结果,即方法执行后的返回值.\result表达式的类型就是方法声明中定义的返回值类型.如针…
JML简介及相关工具链使用 1.JML规格描述语言介绍 本单元学习的内容是JML规格描述语言.我们知道,面向对象方法是一个抽象过程,需求者仅需关注方法的规格.规格是对一个方法/类/程序的外部可感知行为(语义)的抽象表示,内部细节无需在规格中表示 , 同时需保证规格实现的无二义性.JML规格描述语言使用javadoc注释的方式,为严格的程序设计提供了一套行之有效的方法. JML每行都以@起头.有两种注释方式,行注释和块注释.其中行注释的表示方式为 //@annotation ,块注释的方式为 /*…
这三周的作业主要是围绕以JML来约束代码开发,以确保程序的正确性与鲁棒性. Part 1:三次作业的实现与bug 第一次作业没有任何算法和数据结构上的难度,对于Path和PathContainer的各个方法的实现按照给出的规格复读即可.唯一的难点(大约也不算难点)便是将NodeId进行映射,用hashmap就好,不过注意不要做一个调包侠,hashmap中有的方法譬如遍历很慢,虽然看上去只差常数,但是这个常数巨大,如果在第一次作业中不加处理就会在第二次作业中TLE. 第一次作业也让我们了解了抛异常…
一.第一次作业 1.程序设计分析 ![img](s1.ax1x.com/2018/04/02/CSgoSU.png) 图1 第一次作业类图 ![name](https://images2018.cnblogs.com/blog/1346258/201804/1346258-20180402222354189-1523550375.png) ![](https://images2018.cnblogs.com/blog/1346258/201804/1346258-2018040222000442…
第一次作业 实现多项式的加减运算,主要问题是解决输入格式的判断问题. 输入实例: {(3,0), (2,2), (12,3)} + {(3,1), (-5,3)} – {(-199,2), (29,3),(10,7)} {}表示多项式,其中的小括号第一个参数是系数,第二个是指数.同一个多项式指数要求不同. 程序实现的重点总结 1.去除空白字符 s = s.replaceAll("\\s*", ""); 2.初步判断合法性(有有效输入字符且没有中文) Pattern…
调研:        最早的程序设计是直接采用机器语言来编写的,或者使用二进制码来表示机器能够识别和执行的指令和数据.机器语言的优点在于速度快,缺点在于写起来实在是太困难了,编程效率低,可读性差,并且编写规模大的程序.之后逐渐产生了面向过程和面向对象的编程思想,来满足不同条件下的编程方式.1968年<GOTO有害论>这篇著名的论文发表后,引起了许多人的广泛关注,结构化思想逐渐进入人们的视野.之后在编程过程中,程序员越来越对已经产生的抽象水平不满,不足以满足他们对规模大的程序编写的需求,因此出现…
OO第三单元小结 一.JML语言理论基础以及应用工具链情况梳理 一句话来说,JML就是用于对JAVA程序设计逻辑的预先约定的一种语言,以便正确严格高效地完成程序以及展开测试,这在不能容忍细微错误的工程领域如航空航天领域有广泛应用. 1.1 JML语言理论基础 本单元我们学习了一些语言理论基础,梳理如下: 1.requires 该子句定义了方法的前置条件 2.assignable子句,列出方法修改的类成员属性.\nothing则表示方法不改变任何成员属性,是一个pure的方法 3.ensure子句…
OO第三单元个人总结 JML理论与基础与应用工具链 JML是什么? Java建模语言(JML)是一种行为接口规范语言,可用于指定Java模块的行为 .它结合了Eiffel的契约设计方法 和Larch 系列接口规范语言的基于模型的规范方法 ,以及细化演算的一些元素 .草稿 <Design by Contract with JML>(由Gary T.Leavens和Yoonsik Cheon撰写)解释了JML作为Java的契约式设计(DBC)语言的最基本用法. JML基础语法 原子表达式 \res…
OO第三单元小结 一.JML语言理论基础及工具链梳理 在本单元我们学习了JML语言的一些基础知识,能够让我们看懂简单的JML规格并写出对应代码, 主要用到的知识点有:   1.requires 该子句定义了方法的前置条件   2.\old(exp),表示执行相应方法前表达式exp的取值   3.assignable子句,列出方法修改的类成员属性.   4.ensure子句,定义了后置条件,如返回的结果或者该方法运行后的逻辑结果等等   5.\result表达式,表示方法返回的逻辑上的正确的结果…
目录 总 JML规格化设计 理论基础 工具链 规格验证 验证代码 代码静态检查 自动生成测试样例 生成结果 错误分析 作业设计 第九次作业 架构 代码实现 第十次作业 架构 代码实现 第十一次作业 架构 代码实现 心得体会 参考 总 本博文是2019年北航面向对象(OO)课程第三单元作业(规格化设计)的总结.三次作业的要求大致如下: 第一次作业:实现一个路径管理系统,可以通过各类输入指令来进行数据的增删查改等交互. 第二次作业:实现一个无向图系统,可以进行基于无向图的一些查询操作. 第三次作业:…
一.Jml总结及应用工具链 总的来说,jml就是对java程序进行规格化设计的一种表示语言,其中最核心的就是规格化,将代码要实现的功能和各项要求与约束不是通过自然语言,而是通过严密的逻辑语言来表达,这样让代码实现人员看的更加简洁明了,更极大地提高了代码的可维护性. Jml这一大内容主要分为4个板块,分别是注释结构,JML表达式,方法规格和类型规格. 注释结构方面有着固定的格式,包括前置条件(requires),副作用限定范围(assignable),以及后置条件(ensures).还有规格变量的…
OO第三单元--基于JML的社交网络总结 一.JML知识梳理 1)JML的语言基础以及基本语法 JML是用于java程序进行规格化设计的一种表示语言,是一种行为接口规格语言.其为严格的程序设计提供了一套行之有效的方法.通过JML以及其支持工具,不仅可以基于规格自动构造测试用例,并整合了SMT Solver等工具以静态方式来检查代码实现对规格满足情况.一般来说,其运用于以下两种情况:①开展规格化设计②针对已有的代码,书写其对应的规格,从而提高代码的可维护性. 基本语法: 关键词 含义 pure 纯…
title: 2020 OO 第三单元总结 date: 2020-05-21 10:10:06 tags: OO categories: 学习 第三单元终于结束了,这是我目前为止最惨的一单元,第十次作业强测20分,互测杀成狗--虽然都知道只关注分数没有什么意义,我更应该去体会的是通过JML学习对于程序设计理念的认知,但是--心真的很痛.下面就进入单元总结: 1. JML语言理论基础与工具链 1.1 JML语言是什么 参考课程组下发的<JML(Level 0)使用手册>,JML语言的定义如下:…
简介 本单元借助JML(Java Modeling Language),训练了我们关于的"规格(specification)"的意识和思想 本单元代码难度较低,简单来讲就是给你规定好明确要求来实现函数,因此自己不需要动脑子设计很多东西 在阅读本文时,我假设你已经了解了第三单元作业的内容 JML简介 Java Modeling Language是一种对java程序的形式化描述. 形式化描述就是不借助自然语言,而是借助严谨的程序化语言,对方法的输入输出.对象的取值范围等等做出规定.相较于自…
目录 目录一.JML语言的理论基础二.应用工具链三.部署SMT Solver四.部署JMLUnitNG/JMLUnit五.三次作业分析第一次作业第二次作业第三次作业六.总结与心得体会 一.JML语言的理论基础 JML(Java Modeling Language)是一种形式化的.面向Java的行为接口规格语言(Behavior Interface Specification Language,BISL),基于Larch方法构建.BLSL提供了对方法和类型的规格定义手段.它允许在规格中混合使用Ja…
OO第三单元--JML规格化设计 JML语言的理论基础以及应用工具链情况 理论基础 JML是对JAVA程序进行规格化设计的一种表示语言,是一种行为接口规格语言.JML整合了Java和JAVAdoc,并且引入了并要的形式化表达手段. 其方法规格核心包括:前置条件.后置条件和副作用约定.通过对方法的出入参数.执行结果以及可以修改的对象的属性/类的静态成员变量的限制,来保证方法的执行.书写规格时无需关系具体怎么做,只需关心调用方法后的结果.类型规格包括不变式约束和约束限制. JML语言的两个主要用法是…
不得不说的JSF 经过前几次作业的煎熬.出租车的代码量不断地增多.而出租车问题在不断的完善,这也就牵涉到一个问题,那就是最初出租车程序的设计问题,如果一开始设计的就有问题的话,那么在后来的过程中就会遇到更多的麻烦.就像微软不断的给自己的系统打补丁一样.但是如果某一天他发现系统有一个关键性的设计错误.虽然这种几率较小,但是一旦发生,将会带来巨大的灾难,https://baike.baidu.com/item/%E5%8D%83%E5%B9%B4%E8%99%AB/2954?fr=aladdin.2…