在面向對象的計算機編程和設計中,類不變量是一組規則,可以用來定義一個對象實例是否存在于有效狀態。從設計的角度來看,它是一組邊界,在這兩個邊界之間,對象中的數據必須落在一個適當的功能狀態中。它可以在設計中定義文檔...
在面向對象的計算機編程和設計中,類不變量是一組規則,可以用來定義一個對象實例是否存在于有效狀態。從設計的角度來看,它是一組邊界,在這兩個邊界之間,對象中的數據必須落在一個適當的功能狀態中。它可以在設計中定義文檔或源代碼注釋,或者在某些編程語言中,可以直接用可操作的計算機代碼實現。使用編碼的不變量和斷言的程序可能導致程序停止執行,或者在不滿足不變條件時拋出各種錯誤。與標準錯誤檢查不同,類不變量通常只用于確保類的內部實現正常工作,它們通常不在公共文檔或編程接口中列出從一個非常基本的層次來看,類不變量本質上是一個類的斷言集合,是一個語句,它檢查類的某些狀態,并且必須求值為true才能繼續執行程序。斷言的一個示例是確保給定整數始終介于1和10之間的語句。當使用類不變量時,將針對對象所持數據的所有相關部分計算斷言,本質上驗證對象中的所有數據是否在定義的范圍內在許多情況下,使用類不變量與標準錯誤檢查非常相似,在標準錯誤檢查中,對變量進行測量以確保它們在可用邊界內或不為空,不變量和斷言主要用于捕獲不應該發生的錯誤,除非代碼中存在固有缺陷。另一個區別是標準錯誤檢查往往涉及程序控制流的恢復和更改,而不變失敗的結果應該是程序終止,當類不變檢查失敗時,大多數程序終止的原因是對象處于妥協狀態,從設計的角度來看,無法滿足遵守其設計契約所必需的先決條件和后置條件在面向對象編程語言中,隱式定義類不變量的一個屬性是,該不變量是由任何子類繼承的一種機制。這可以防止子類重寫在中執行的任何不變檢查最終,這意味著子類無法破壞由父類建立的設計契約,這可能會導致不可預知的結果或很難找到程序錯誤
-
發表于 2020-07-29 20:54
- 閱讀 ( 1362 )
- 分類:電腦網絡