博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oo第三次博客作业
阅读量:5880 次
发布时间:2019-06-19

本文共 1457 字,大约阅读时间需要 4 分钟。

一.什么是JML

  JML即java建模语言(Java Modeling Language),是一种进行详细设计的符号语言,它鼓励你用一种拳心的方式来看待java类和方法。面向对象的一个重要原则ijushi过程性的思考应该尽可能地推迟,不过遵循了这个原则的大多数人也不过是把这个原则适用到方法实现这个级别上。它有一套自己的语法,有前置条件、后置结果等等。其实就是准确描述一个方法的作用而不是直接的代码实现。好处就是对使用代码的人来讲更加清楚快捷的读懂代码。

  jml的相关语法:

  1.jml表达式:

    a.原子表达式:\result,\old(expr)

    b.量化表达式:\forall,\exists,\sum,\max,\min

    c.操作符:\nothing,\everthing

  2.方法规格

    a.前置条件:\requires

    b.后置条件:\ensures

    c.副作用:assignable 或 modifiable

  3.其他

    a.不会对对象的状态进行改变:/*@pure@*/

    b.对容器中所有的变量进行约束:\forall,\exists

    c.相应的规格所在包范围内所有其他规格都可见:/*@public

  工具链:根据jml生成jar文件,然后检测代码。

二.架构梳理及重构

  1.第一次作业

  第一次写的时候有点不知所错,因为是第一次接触这样形式的作业。但通过对jml的学习之后,就明白了。在实现上大部分用了Vector来存储,应为Vector在查找添加删除的时候提供了很便利的方法,本以为代码应该没有什么问题了,结果发现强测竟然一个都没过,但由于时间关系,实在没空去处理了。

  2.第二次作业

  第二次写的时候就实现了图的存储,但是由于第一次的作业是有问题的,到第二次的时候就显现了出来。通过代码的调试发现是路径的删除有了问题,就是在删除路径的时候,虽然路径队列和路径名队列删掉了,但是在图里的删除却是不正确的,通过调试找到这个问题之后改掉之后就通过了中测。本次作业涉及到了最短路径问题,我的算法一直很差劲,所以用了最笨的dij,解决了问题。

  3.第三次作业

  很遗憾第三次作业无效了,原因有两个,第一个对jml语言理解不到位,不知道如何通过jml来实现自己代码的写法,第二个算法对于最小换乘和最小不满意度尝试了几个算法但都失败了,一来是编程能力差,二来是对算法不擅长。

三.bug

  第一次的代码中removePath和removePathById部分写错了,但侥幸通过中测,但没能通过强测,同时cpu时间也超了。

  第二次把第一代码中的两个方法改正之后,但还是没能解决cpu的问题。

  第三次没能写出来。

四.心得体会

  本单元主要内容是规格化设计,学习了jml的相关知识语法等,并且在作业中利用它进行了规格抽象,有了JML语言,就回事先帮我们设计好思路,我们只要实现功能就好了,而不去关心具体的实现细节。本单元作业中,题目已经事先给我们写好了规格,我们只需要通过规格进行代码事先就可以了,这样写代码的思路就很清楚了,本以为是让我们自己写规格,没想到是这样!不过,我读规格的时候还是比较困哪,首先是时间投入少,然后就是练习不够,接下来就要好好努力继续迎接接下来的工作了。

转载于:https://www.cnblogs.com/15061005zxc/p/10902959.html

你可能感兴趣的文章
linux中awk工具的使用
查看>>
我在51CTO微职位学软考——我是mata宇我为自己代言
查看>>
POJ 1852 Ants
查看>>
python
查看>>
SIEM在PCI DSS和安全等级保护合规性中的作用
查看>>
MySQL技术综合
查看>>
Linux就该这么学-第五课
查看>>
好程序员前端分享使用JS开发简单的音乐播放器
查看>>
奥马冰箱:用设计创新突破行业“天花板”
查看>>
Oracle Database 11g SQL开发指南
查看>>
ACM一些小的注意事项 持续更新ing
查看>>
Go语言之单元测试
查看>>
查找字符串里出现次数最多的字符。(map的遍历方法)
查看>>
python对象和类
查看>>
Linux Virtualiztion—概述
查看>>
ssh 免密码登录
查看>>
教学笔记-方法的重载与重写
查看>>
Target runtime Apache Tomcat 6.0 is not defined 解决方法
查看>>
【浙大网新图灵通讯】无废话简单高效C#编码规范20100612
查看>>
实现基于组织机构的数据集权限系统的设计思路讲解【提供完整数据库设计下载】...
查看>>