亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JML起步--使用JML 改進你的Java程序(2)

2019-11-18 14:02:49
字體:
來源:轉載
供稿:網友

  來自:http://www-106.ibm.com/ 作者:Joe Verzulli


量詞(Quantification)(譯者注:這里量詞的意思與邏輯學上的量詞意思相近,而不是普通意義上理解的量詞。)


在上面pop()方法的行為規范中,我們說它的返回值要等于peek()方法的返回值,不過我們并沒有看到關于peek()方法的規范。PRiorityQueue中peek()方法的行為規范請看下面的代碼:



代碼段3 PriorityQueue 中peek()方法的行為規范





/*@

@ public normal_behavior

@ requires ! isEmpty();

@ ensures elementsInQueue.has(esult);

@*/

/*@ pure @*/ Object peek() throws NoSUChElementException;



JML標記要求只有當隊列中至少含有一個元素的時候,才能調用peek()方法,同時他還要求方法的返回值必須在elementsInQueue之內,也就是說,這個返回值一定是這個隊列中的一個元素。



注釋/*@ pure @*/ 表明peek()方法是一個純方法(pure method),純方法是指沒有副作用的方法。JML中只答應使用純方法進行斷言確認,所以我們把peek()聲明為純方法,這樣我們就可以在pop()方法的后置條件中使用peek()方法。大家肯定想知道,為什么JML只答應使用純方法進行斷言確認?問題是這樣的,假如JML答應使用非純方法進行斷言確認的話,我們稍不注重就會寫出有副作用的行為規范。比如說可能會有這么一種情況,開啟了斷言確認以后,我們的代碼正確無誤,可是假如禁止了斷言確認后,我們的代碼卻不能運行了,或運行出錯了。這樣當然不行!后面,我們還會進一步討論副作用的問題。

關于繼續



JML行為規范可以被子類(含子接口)或者是實現接口的類所繼續,這一點與J2SE1.4中斷言有所不同。JML要害字 also表示當前定義的行為規范與祖先類或被實現的接口中所定義的行為規范一起作用。因而,在 PriorityQueue接口定義的 peek()方法的行為規范同樣適用于 BinaryHeap類中的 peek()方法。這個就意味著,雖然在 BinaryHeap.peek()的行為規范中沒有明確定義, BinaryHeap.peek()的返回值也必須在 elementsInQueue當中。




大頂堆和小頂堆(譯者注:大頂堆和小頂堆是數據結構里面的概念,分別表示堆排序方法的不同實現方式。堆排序是一種通過調整二叉樹進行排序的方法。)


上面我們給peek()定義的行為規范明顯缺少了一塊,那就是我們根本沒有要求它返回的那個元素具有最大的優先級。顯然,JCCC的PriorityQueue接口既可以用于大頂堆,也可以用于小頂堆。大頂堆和小頂堆的表現是有些差別的,在小頂堆中優先級最高的元素值最小,而大頂堆中優先級最高的元素值最大。因為PriorityQueue并不知道自己被用來進行大頂堆排序還是小頂堆排序,所以指定返回哪個元素的規范必須在實現PriorityQueue接口的類中進行定義。



在JCCC 中,類 BinaryHeap實現了PriorityQueue接口。BinaryHeap答應使用它的客戶代碼在構造函數中通過一個參數來指定排序方案,也就是通過參數來指定是通過大頂堆方式排序還是通過小頂堆方式排序。我們使用一個boolean模型變量isMinimumHeap來判定BinaryHeap的排序方式是大頂堆還是小頂堆。下面的例子是BinaryHeap使用isMinimumHeap給peek()方法定義的行為規范:





代碼段4 BinaryHeap 類中peek()方法的行為規范





/*@

@ also

@ public normal_behavior

@ requires ! isEmpty();

@ ensures

@ (isMinimumHeap ==>

@ (forall Object obj;

@ elementsInQueue.has(obj);

@ compareObjects(esult, obj)

@ <= 0)) &&

@ ((! isMinimumHeap) ==>

@ (forall Object obj;

@ elementsInQueue.has(obj);

@ compareObjects(esult, obj)

@ >= 0));

@*/

public Object peek() throws NoSuchElementException



使用量詞


上面代碼段4中的后置條件包含兩個部分,分別用于大頂堆和小頂堆的情況?!?=>”符號的意思是包含(譯者注:這個包含與邏輯學中包含的意思一致)。x ==> y 當且僅當y為真或x為假時取真值。對于小頂堆排序來說,適用下面所列的代碼:



(forall Object obj;

elementsInQueue.has(obj);

compareObjects(

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国精品久久99热一| 91免费的视频在线播放| 国产精品久久久久aaaa九色| 8050国产精品久久久久久| 欧美一级大片在线观看| 国产亚洲视频中文字幕视频| 亚洲国产精品成人va在线观看| 国产精品极品美女在线观看免费| 亚洲视频一区二区| 国产精品羞羞答答| 91久久在线观看| 精品久久久久久电影| 久久久亚洲精选| 国产亚洲精品久久久久久牛牛| 欧美野外wwwxxx| 97在线观看视频国产| 欧美大片免费看| 日韩av免费在线观看| 中文字幕日韩在线观看| 欧美日本黄视频| 国产成人精品国内自产拍免费看| 精品亚洲一区二区三区在线播放| 欧美激情亚洲另类| 欧美日韩国产精品一区| 91国内揄拍国内精品对白| 国产色综合天天综合网| 亚洲大胆人体在线| 97人人模人人爽人人喊中文字| 国产69精品久久久久9999| 亚洲精品自拍第一页| 欧美午夜精品在线| 欧美老少做受xxxx高潮| 夜夜嗨av色一区二区不卡| 亚洲女人被黑人巨大进入| 91丨九色丨国产在线| 色综合亚洲精品激情狠狠| www.亚洲一二| 亚洲色图35p| 精品日韩视频在线观看| 在线观看日韩欧美| 中文字幕不卡av| 国产91免费观看| 国产91在线播放九色快色| 精品人伦一区二区三区蜜桃网站| 精品少妇一区二区30p| 国产精品69av| 美女视频久久黄| 国产精品丝袜白浆摸在线| 日韩亚洲精品电影| 欧美中文在线字幕| 青青草国产精品一区二区| 黑人狂躁日本妞一区二区三区| 欧美日韩性生活视频| 久久夜色精品国产| 久久精品视频在线播放| 国产精品直播网红| 一区二区三区黄色| 亚洲人成网站免费播放| 奇门遁甲1982国语版免费观看高清| 国产主播欧美精品| 日韩欧美视频一区二区三区| 亚洲欧美中文在线视频| 国产精品美腿一区在线看| 91av视频在线观看| 久久亚洲精品一区二区| 亚洲伦理中文字幕| 川上优av一区二区线观看| 久国内精品在线| 欧美极品少妇全裸体| 欧美国产视频日韩| 亚洲精品动漫久久久久| 亚洲最大中文字幕| 日韩高清欧美高清| 亚洲精品自产拍| 亚洲欧美日韩精品久久亚洲区| 日韩一区二区三区xxxx| 久久亚洲精品中文字幕冲田杏梨| 色综合久久中文字幕综合网小说| 亚洲视频免费一区| 国产a∨精品一区二区三区不卡| 精品高清一区二区三区| 亚洲精品网址在线观看| 日韩精品极品在线观看播放免费视频| 亚洲国产精品va在线观看黑人| 国产精品999999| 大荫蒂欧美视频另类xxxx| 国产精品福利久久久| 精品欧美一区二区三区| 亚洲欧美精品suv| 日日噜噜噜夜夜爽亚洲精品| 成人福利在线视频| 色婷婷av一区二区三区久久| 欧美精品videossex性护士| 久久久久久久久91| 欧美猛交ⅹxxx乱大交视频| 色系列之999| 欧美特级www| 中文国产成人精品久久一| 亚洲a级在线播放观看| 欧美在线一级va免费观看| 成人国产精品日本在线| 日韩在线观看精品| 美女精品久久久| 欧美性20hd另类| 色偷偷噜噜噜亚洲男人的天堂| 国产精品久久久久久av福利| 久久99国产精品自在自在app| 亚洲精品久久久久久下一站| 狠狠躁夜夜躁人人爽超碰91| 国产美女久久久| 亚洲老头同性xxxxx| 欧美黄色成人网| 中文字幕最新精品| 38少妇精品导航| 久久91亚洲人成电影网站| 亚洲性无码av在线| 亚洲人成在线免费观看| 少妇高潮久久久久久潘金莲| 国产91精品高潮白浆喷水| 日韩黄在线观看| 欧美极品少妇与黑人| 国产精品三级美女白浆呻吟| 亚洲精品久久视频| 日韩中文字幕在线播放| 国内精品久久久久久中文字幕| 日韩av影片在线观看| 欧美成人精品一区二区三区| 中文字幕精品久久久久| 亚洲色图13p| 国产性猛交xxxx免费看久久| 日韩成人中文字幕| 久久精品久久精品亚洲人| 国产精品v片在线观看不卡| 欧美精品一本久久男人的天堂| 亚洲综合日韩中文字幕v在线| 91精品国产高清久久久久久| 国产精品视频一区国模私拍| 欧美成人激情视频免费观看| 成人福利免费观看| 亚洲精品网址在线观看| 国产精品久久久久一区二区| 国产美女扒开尿口久久久| 国产精品美女www爽爽爽视频| 欧洲成人免费aa| 亚洲成av人片在线观看香蕉| 欧美xxxwww| 91在线国产电影| 2023亚洲男人天堂| 国产一区视频在线播放| 欧美精品免费播放| 欧美日韩国产黄| 精品久久久国产精品999| 91久久久在线| 成人福利网站在线观看11| 亚洲成人av资源网| 亚洲影院在线看| 国产精品黄色影片导航在线观看| 最近2019年好看中文字幕视频| 久久亚洲精品网站| 亚洲国产精品久久久久秋霞蜜臀| 日本道色综合久久影院| 8090理伦午夜在线电影| 亚洲国产日韩欧美在线图片| 国产91精品不卡视频|