目錄
什么是后置條件
編輯在計算機編程中,后置條件是一個條件或謂詞,它必須在代碼的某些部分執行后或在正式規范的操作后始終為真。后置條件有時在代碼本身中使用斷言進行測試。通常情況下,后置條件被簡單地包含在受影響的代碼部分的文檔中。比如說。階乘的結果總是一個整數,并且大于或等于1。所以一個計算輸入數字的階乘的程序將有后置條件,即計算后的結果是一個整數,并且大于或等于1。另一個例子:一個計算輸入數的平方根的程序可能有后置條件,即結果是一個數字,其平方等于輸入數。
面向對象編程中的后置條件
編輯在一些軟件設計方法中,后置條件與前置條件和類不變式一起,是軟件構造方法中契約設計的組成部分。任何例程的后置條件都是在例程執行完成后被保證的屬性聲明。由于它與例程的契約有關,后置條件向潛在的調用者提供保證,即在例程被調用的狀態下,其前提條件成立,后置條件所聲明的屬性得到保證。
Eiffel例子
編輯下面這個用Eiffel編寫的例子根據調用者提供的參數a_hour來設置類屬性hour的值。后置條件在關鍵字ensure之后。在這個例子中,后置條件保證在前提條件成立的情況下(即當a_hour代表一天中的一個有效小時),在執行set_hour后,類屬性hour的值與a_hour相同。標簽hour_set:描述了這個后置條件子句,并在運行時違反后置條件的情況下用來識別它。set_hour(a_hour:INTEGER)--設置"hour"為"a_hour",要求valid_argument。0<=a_houranda_hour<=23dohour:=a_hourensurehour_set:hour=a_hourend
后置條件和繼承
編輯在存在繼承的情況下,被子類(子類)繼承的例程在其契約,也就是其前置條件和后置條件生效的情況下進行繼承。這意味著任何繼承的例程的實現或重新定義也必須按照其繼承的契約來編寫。后置條件可以在重新定義的例程中被修改,但它們只能被加強。也就是說,重新定義的例程可以增加它提供給客戶的好處,但不能減少這些好處。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/164314/