跳至內容

草稿:JML

維基百科,自由的百科全書

Java建模語言(英語:Java Modeling Language,縮寫JML)是一種用於Java程式碼的規約語言,使用 Hoare風格的前置條件、後置條件和不變式,並遵循契約式設計範式。

語法

[編輯]

JML規範以注釋的形式添加到Java代碼中。

關鍵字

[編輯]
requires
定義緊隨其後方法的前置條件。
ensures
定義緊隨其後方法的後置條件。
signals
定義當指定異常被方法拋出時的後置條件。
signals_only
定義在滿足給定前置條件時允許拋出的異常。
assignable
定義方法可以修改的欄位。
pure
聲明方法無副作用(等同於 assignable \nothing,但也可拋出異常)。此外,純方法應始終正常終止或拋出異常。
invariant
定義類的不變量屬性。
loop_invariant
為循環定義循環不變量。
also
組合規範案例,也可聲明方法繼承自其超類型的規範。
assert
定義 JML 斷言。
spec_public
將受保護或私有變量對規範公開。

表達式

[編輯]
\result
表示緊隨其後方法的返回值標識符。
\old(<expression>)
引用方法開始時 <expression> 的舊值。
(\forall <decl>; <range-exp>; <body-exp>)
全稱量詞。
(\exists <decl>; <range-exp>; <body-exp>)
存在量詞。
a ==> b
表示 a 蘊含 b。
a <== b
表示 b 蘊含 a。
a <==> b
若且唯若 a 與 b 等價。