oo第三单元学习总结】的更多相关文章

OO第三单元小结 一.JML语言理论基础及工具链梳理 在本单元我们学习了JML语言的一些基础知识,能够让我们看懂简单的JML规格并写出对应代码, 主要用到的知识点有:   1.requires 该子句定义了方法的前置条件   2.\old(exp),表示执行相应方法前表达式exp的取值   3.assignable子句,列出方法修改的类成员属性.   4.ensure子句,定义了后置条件,如返回的结果或者该方法运行后的逻辑结果等等   5.\result表达式,表示方法返回的逻辑上的正确的结果…
[OO学习]OO第三单元作业总结 第三单元,我们学习了JML语言,用来进行形式化设计.本单元包括三次作业,通过给定的JML来实行了一个对路径的管理系统,最后完成了一个地铁系统,来管理不同的线路,求得关于价格.换乘.不满意度等最短路信息. 本文将介绍:JML语言理论基础.应用工具链和工具的使用方法:SMT Solver:JMLUnitNG自动生成测试用例:三次作业的架构设计:Bug查找策略:个人心得. JML JML(Java Modeling Language)是用于对Java程序进行规格化设计…
目录 写在前面 JML理论基础 JML工具链 JMLUnitNG的使用 架构设计 Bug分析 心得体会 写在前面 OO的第三单元学习结束了,本单元我们学习了如何使用JML语言来对我们的程序进行规格化设计.并对openjml以及JMLUnitNG.JUnit等工具的使用有了初步的了解. JML理论基础 注释结构 JML以javadoc注释的方式来表示规格,每行都以@起头. JML表达式 JML表达式有一下几种: 原子表达式:如\result,\old等. 量化表达式:如\forall,\exist…
OO第三单元作业总结--JML 第三单元的主题是JML规格的学习,其中的三次作业也是围绕JML规格的实现所展开的(虽然感觉作业中最难的还是如何正确适用数据结构以及如何正确地对于时间复杂度进行优化). 关于JML语言 JML语言概述 JML是Java Modeling Language的缩写,意思是Java建模语言,是一种进行详细设计的符号语言. 使用JML语言的好处主要有以下几点: 能够描述类和方法的运行方式,从而使代码的编写过程更加契合面向对象思想: 可以更加高效地发现和修正程序中的bug 在…
规格化设计--OO第三单元总结 一.JML语言理论基础.应用工具链 1.1 JML语言 ​ JML(java modeling language)是一种描述代码行为的语言,包括前置条件.副作用等等.JML是一种行为接口规格语言 (Behavior Interface Specification Language,BISL),基于Larch方法构建. ​ 通过使用JML,我们可以忽略一个类.一个方法内部的具体实现,专注于描述方法的预期功能,从而把过程性的思考延迟到方法设计中,扩展了面向对象设计的原则…
OO第三单元--基于JML的社交网络总结 一.JML知识梳理 1)JML的语言基础以及基本语法 JML是用于java程序进行规格化设计的一种表示语言,是一种行为接口规格语言.其为严格的程序设计提供了一套行之有效的方法.通过JML以及其支持工具,不仅可以基于规格自动构造测试用例,并整合了SMT Solver等工具以静态方式来检查代码实现对规格满足情况.一般来说,其运用于以下两种情况:①开展规格化设计②针对已有的代码,书写其对应的规格,从而提高代码的可维护性. 基本语法: 关键词 含义 pure 纯…
OO第三单元作业--魔教规格 JML的理论基础和相关工具   JML(Java Modeling Language,Java建模语言),在Java代码种增加了一些符号,这些符号用来标志一个方法是干什么的,但是不关心它的具体实现.通过使用JML,在实现代码前,我们可以描述一个方法的预期功能,而尽可能地忽略实现,从而把过程性思考一直延迟到方法设计的层面. 如果仅仅是描述方法的功能,那么自然语言一样可以做到,但是,使用JML语言的好处是,相比于容易产生歧义的自然语言,以前置条件.副作用.异常行为.作用…
OO第三单元个人总结 JML理论与基础与应用工具链 JML是什么? Java建模语言(JML)是一种行为接口规范语言,可用于指定Java模块的行为 .它结合了Eiffel的契约设计方法 和Larch 系列接口规范语言的基于模型的规范方法 ,以及细化演算的一些元素 .草稿 <Design by Contract with JML>(由Gary T.Leavens和Yoonsik Cheon撰写)解释了JML作为Java的契约式设计(DBC)语言的最基本用法. JML基础语法 原子表达式 \res…
title: 2020 OO 第三单元总结 date: 2020-05-21 10:10:06 tags: OO categories: 学习 第三单元终于结束了,这是我目前为止最惨的一单元,第十次作业强测20分,互测杀成狗--虽然都知道只关注分数没有什么意义,我更应该去体会的是通过JML学习对于程序设计理念的认知,但是--心真的很痛.下面就进入单元总结: 1. JML语言理论基础与工具链 1.1 JML语言是什么 参考课程组下发的<JML(Level 0)使用手册>,JML语言的定义如下:…
2020北航OO第三单元总结 本单元要求是根据JML规格完善代码,初看是一个简单的代码照搬实现的东西,但最后才发现由于CPU时间的限制,还考察了大量优化策略及数据结构中关于图的知识,是一次非常注重细节构思的一单元,我借此机会学习并巩固了好几个图的算法,并了解了java各类容器的查插删改的效率. 一.JML理论基础 JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种表示语言,它相当于一种接口,正确的JML可以给实现人员清楚的代码要求,并且针对已有代码书写…
OO第三单元(地铁,JML)单元总结 这是我们OO课程的第二个单元,这个单元的主要目的是让我们熟悉并了解JML来是我们具有规格化编程架构的思想.这个单元的主题一开始并不明了,从第一次作业的路径到第二次作业的图再到第三次作业的地铁系统,需求一步步提升,整个架构也变得复杂.这三次作业为我们模拟了一个需求不断进化的过程,也考验了我们在规格之下的架构能力. 一.JML语言的理论基础及应用工具链 1. 理论基础 JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种…
OO第三单元作业(JML)总结 目录 OO第三单元作业(JML)总结 JML语言知识梳理 使用jml的目的 jml注释结构 jml表达式 方法规格 类型规格 SMT Solver 部署JMLUnitNG与使用 三次作业架构设计梳理 第一次作业 第二次作业 第三次作业 三次作业中代码的bug及修复 规格撰写与理解的心得体会 JML语言知识梳理 使用jml的目的 开展规格化设计 针对已有的代码实现,书写其对应的规格,从而提高代码的可维护性 jml注释结构 在我目前看来,jml其实就是一门被规定好格式…
OO第三单元 JML语言理论基础,应用工具链 JML语言基础 JML简介 定义: JML 是一种形式化的. 面向 JAVA 的行为接口规格语言 作用: 开展规格化设计.这样交给代码实现人员的将不是可能带有内在模糊性的自然语言描述,而是逻辑严格的规格. 针对已有的代码实现,书写其对应的规格,从而提高代码的可维护性.这在遗留代码的维护方面具有特别重要的意义. JML语言语法相关 表达式 \result :方法执行后的返回值 \old(expr): 表示一个表达式expr 在相应方法执行前的取值 \n…
OO第三单元--JML规格化设计 JML语言的理论基础以及应用工具链情况 理论基础 JML是对JAVA程序进行规格化设计的一种表示语言,是一种行为接口规格语言.JML整合了Java和JAVAdoc,并且引入了并要的形式化表达手段. 其方法规格核心包括:前置条件.后置条件和副作用约定.通过对方法的出入参数.执行结果以及可以修改的对象的属性/类的静态成员变量的限制,来保证方法的执行.书写规格时无需关系具体怎么做,只需关心调用方法后的结果.类型规格包括不变式约束和约束限制. JML语言的两个主要用法是…
主要针对第三单元的三次作业 JML语言的理论基础.应用工具链情况 JML指的是Java建模语言,全称是Java modeling language,是一种行为接口规范语言,可用于指定Java模块的行为.它结合了Eiffel的契约方法设计和Larch系列接口规范语言的基于模型的规范方法,以及细化演算的一些元素 Design by Contract with JML(由Gary T. Leavens和Yoonsik Cheon撰写)的草案解释了JML作为Java合同设计(DBC)语言的最基本用法,这…
前言 第三单元是我们学习oo以来第一次接触JML.这一单元的三次作业和以前一样,采用了难度递进的方式,而且前一次作业的设计思路在下一次作业都多多少少有些体现(或者说是在其基础上做出的改进).而且本单元作业在理解了JML的基础上来做,实现起来并不困难,难点在于如何提高自己代码的性能.本文分为四个部分:首先是JML语法基础:我的设计架构以及性能优化:debug以及测试样例的自动生成:心得体会. JML语法基础 首先简要介绍一下JML语法基础. JML以javadoc注释的方式来表示规格,每行都以@起…
简介 本单元借助JML(Java Modeling Language),训练了我们关于的"规格(specification)"的意识和思想 本单元代码难度较低,简单来讲就是给你规定好明确要求来实现函数,因此自己不需要动脑子设计很多东西 在阅读本文时,我假设你已经了解了第三单元作业的内容 JML简介 Java Modeling Language是一种对java程序的形式化描述. 形式化描述就是不借助自然语言,而是借助严谨的程序化语言,对方法的输入输出.对象的取值范围等等做出规定.相较于自…
第三单元OO总结博客 1 梳理JML语言的理论基础.应用工具链情况 由于篇幅原因,这里只梳理几个在本单元常用的 注释结构 行注释://@annotation 块注释:/* @ annotation @*/ 例如:纯粹查询方法/*@ pure @ */,即方法的执行不会有任何副作用 JML表达式 原子表达式 \result:表示一个非 void 类型的方法执行所获得的结果,即方法执行后的返回值 \old(expr): 用来表示一个表达式 expr 在相应方法执行前的取值.作为一般规则,任何情况下,…
一.Jml总结及应用工具链 总的来说,jml就是对java程序进行规格化设计的一种表示语言,其中最核心的就是规格化,将代码要实现的功能和各项要求与约束不是通过自然语言,而是通过严密的逻辑语言来表达,这样让代码实现人员看的更加简洁明了,更极大地提高了代码的可维护性. Jml这一大内容主要分为4个板块,分别是注释结构,JML表达式,方法规格和类型规格. 注释结构方面有着固定的格式,包括前置条件(requires),副作用限定范围(assignable),以及后置条件(ensures).还有规格变量的…
JML简介及相关工具链使用 1.JML规格描述语言介绍 本单元学习的内容是JML规格描述语言.我们知道,面向对象方法是一个抽象过程,需求者仅需关注方法的规格.规格是对一个方法/类/程序的外部可感知行为(语义)的抽象表示,内部细节无需在规格中表示 , 同时需保证规格实现的无二义性.JML规格描述语言使用javadoc注释的方式,为严格的程序设计提供了一套行之有效的方法. JML每行都以@起头.有两种注释方式,行注释和块注释.其中行注释的表示方式为 //@annotation ,块注释的方式为 /*…
目录 JML理论基础 JML工具链 openjml使用 openjml总结 jmlunitng使用 代码分析 第一次作业 第二次作业 第三次作业 测试&bug分析 黑盒测试 白盒测试(Junit) 总结 JML理论基础 jml是基于一阶谓词逻辑来对类进行形式化描述的语言,jml语言通过表达式.方法规格.类规格三个部分来进行描述.其中表达式是在java语言的基础上扩展了非修改类型的表达式:方法规格中包括了前置条件.后置条件.副作用作用范围三个部分:类规格包含不变式和状态变化约束两个部分.jml相较…
第三单元的作业背景是实现一个社交观关系模拟系统,主要训练了JML的阅读和理解能力,和图的一些数据结构和算法. JML语言的理论基础 JML相对于实现代码是比较抽象的,规定了方法的前提副作用结果.数据的约束等,相当于搭建了一个框架,我们这个单元做的就是根据规格补充代码,实现规格定义的功能. 方法规格主要是看懂前置条件.后置条件和副作用,将前置条件和后置条件对应起来,有时还需要抛出异常,注意if-else的包含关系可能在写代码的过程中出错,特别注意副作用,副作用中没有提到的变量是不能改变,即使不影响…
一.前言 本单元作业都是关于JML(Java Modeling Language),JML是一种契约式设计(Design by Contract)的语言,契约式设计的主要目的是希望程序员能够在设计程序时明确地规定一个模块单元(具体到面向对象,就是一个类的实例)在调用某个操作前后应当属于何种状态,它强调三个概念:前置条件,后置条件和不变式,要求输入的参数满足前置条件,要求函数完成时的状态满足后置条件,要求函数开始运行和结束运行时满足不变式,即对调用者来说不变式总是为真,而对函数内部来说不变式可以为…
目录 目录一.JML语言的理论基础二.应用工具链三.部署SMT Solver四.部署JMLUnitNG/JMLUnit五.三次作业分析第一次作业第二次作业第三次作业六.总结与心得体会 一.JML语言的理论基础 JML(Java Modeling Language)是一种形式化的.面向Java的行为接口规格语言(Behavior Interface Specification Language,BISL),基于Larch方法构建.BLSL提供了对方法和类型的规格定义手段.它允许在规格中混合使用Ja…
• 1.JML语言的理论基础.应用工具链情况 JML(Java Modeling Language)—— java建模语言,是一种行为接口规范语言( behavioral interface specification language, BISL).同时,JML也是一种进行详细设计的符号语言,它鼓励你用一种全新的方式来看待Java的类和方法,既规定了方法或抽象数据类型的接口,也规定了它们的行为. 面向对象的分析和设计(OOAD)的一个重要原则就是过程性的思考应该尽可能地推迟,先以一定的规范建立…
一.JML简介 1.1 JML与契约式设计 说起JML,就不得不提到契约式设计(Design by Contract).这种设计模式的始祖是1986年的Eiffel语言.它是一种限定了软件中每个元素所必需的责任与义务的开发模式,程序设计中的每个元素都需要用规范的语言精准地限定其前置条件(Preconditions).后置条件(Postconditions)和不变式(Invariants).通过这三项限定,我们可以清晰地获得对一个函数功能的刻画,从而达成设计与实现的分离,便于优化.测试和生成文档.…
一.JML理论基础及应用工具链情况 理论基础 1.JML表达式 \result:表示方法执行后的返回值. \old(expr):表示一个表达式expr在相应方法执行前的取值. \foall:全称量词修饰的表达式. \exists:存在量词修饰的表达式. <==>:等价关系操作符. ==>:推理操作符. \nothing:变量引用操作符,指示一个空集. \everything:变量引用操作符,指示一个全集. 2.方法规格 requires:表示前置条件(pre-condition). en…
JML语言理论基础 Java建模语言(Java Modeling Language,JML)是一种进行详细设计的符号语言,他鼓励你用一种全新的方式来看待Java的类和方法.JML是一种行为接口规格语言 (Behavior Interface Specification Language,BISL),基于Larch方法构建.BISL提供了对方法和类型的规格定义手段.所谓接口即一个方法或类型外部可见的内容.通过在Java代码中增加了一些符号,这些符号用来标识一个方法是干什么的,却并不关心它的实现.使用…
1.梳理JML语言的理论基础.应用工具链情况 JML基础理论: JML(Java Modeling Language)是用于对Java程序进行规格化设计的一种表示语言.JML是一种行为接口规格语言,基于Larch方法构建.JML可以为严格地程序设计提供一套行之有效的方法.通过JML及其支持工具,不仅可以基于规格自动构造测试用例,并整合了SMT Solver等工具以静态方法来检查代码实现对规格的满足情况. 从我个人的理解上,JML语言以简洁严谨的形式描述了代码规格要求,有利于代码的规格化设计,实现…
目录 JML知识梳理 部署JMLUnitNG/JMLUnit 按照作业梳理自己的架构设计,并特别分析迭代中对架构的重构 按照作业分析代码实现的bug和修复情况 阐述对规格撰写和理解上的心得体会 JML知识梳理 JML理论基础 关于JML的相关介绍其实课程给出的指导书就已经足够使用了,由于指导书上都有相关知识的梳理,所以这里不花费大量篇幅去书写这部分内容,只是简单提及一些东西.首先是什么是JML,课程进行,其实阅读简单的JML已经没有多大障碍了,但是对于JML的定义这种概念已经忘记的差不多了.JM…