測試與正確性論證:
測試的目的是將程式的**做到全覆蓋,從而確保每個分支都執行一遍,進而分析**中是否有錯誤,錯誤出在**。這個方法是實用的,但不是完備的。而正確性論證則通過大量的窮舉,基於repok和jsf來論證正確性,是邏輯層次的,可以說絕對正確,但相對複雜。私以為,二者的區別在於,測試可以說明沒找到錯,論證說明是對的。
物件約束語言:
ocl(object constraint language)物件約束語言,一種用來進行約束定義的,形式化的無二義的語言。包含四種基本語言要素:
型別(基本型別,高階型別)
操作表示式(由運算元和運算子構成)
語句它是uml可選的附加內容,可以用來更好地定義物件的行為,並為任何類元指定約束。在物件約束語言中,物件代表了系統的元件,它定義了完善的專案,約束代表限制。
ocl是一種形式語言,可以應用於任何實現方式的非正規語言。它對uml中圖形或其他元件都沒有控制權,它只是在使用時返回值。ocl並不能修改物件的狀態,而是用來指示對狀態的修改何時發生。ocl表示式以附加在模型元素上的條件和限制來表現對該物件的約束,其中包括附加在模型元素上的不變數或約束的表示式、附加在操作和方法上的前置條件和後置條件等。
相比jsf,ocl中涉及到上下文,不變數等一系列規範,相比我們所使用的jsf更加複雜和精細化,ocl中本身定義了基本資料型別和一些高階資料型別,還有運算子和表示式中的一些書寫規範,幾乎算得上是一種程式語言。(然而並不是)
ocl和jsf中都有對前置條件和後置條件的說明,都是不具有二義性的,可以說jsf是一種簡化以及自由化了的ocl。
學期總結
知識點聯絡
第一單元主要是一些設計思想,類,介面,繼承等,第二單元是多執行緒的共享資料管理和衝突解決,第一章是必要的基礎,只有封裝好每個類,才能實現更好多執行緒的程式。第三單元是規格化設計。第四單元是單元測試和正確性論證,根據規格對每個方法進行測試和覆蓋率檢查,對每個類進行正確性論證。
設計的程式
多項式加減
傻瓜單電梯
可捎帶單電梯
可捎帶多執行緒電梯
計程車排程
可開關道路的計程車排程
可開關道路和帶有紅綠燈的計程車排程
可開關道路和帶有可追蹤計程車和紅綠燈的計程車排程
寫多項式作業時,初次接觸物件導向,寫得很面向過程。在之後的系列作業中,由於本身功能實現具有難度,雖然對一些類進行了封裝,但是仍然沒有實現功能的劃分,於是每次作業都在對之前的作業進行大改(直到計程車才有所改善)。從電梯到計程車的系列作業,從簡單的兩三個類到十幾個類,在設計上已經能夠嘗試去遵循solid設計原則。
在測試上沒什麼太大進步。。。大概是是從胡亂測試到了根據測試樹構造資料?
而程式的質量是仍然有很大的進步空間的,人懶寫的又少,還是要多練才行(下週一定又開始努力)。
工程化開發
了解不深,也無法實現工程化。過短的作業週期,過大的作業壓力,過迷的指導要求,光是活下來都已經舉步維艱,還指望什麼舞姿優雅。
期望和建議
望越辦越好。
第四次部落格
撲克牌的物件導向建模 建立兩個列舉型別suit 花色 rank 等級 建立兩個類card 牌 cardsset 五張牌的集合 要求cardsset實現comparable介面,按照德州撲克規則比較不同牌型的大小。列舉型別表示一副撲克牌 console.log 列舉型別表示一副撲克牌 定義個已個表示 ...
OO第四次部落格
一.測試與正確性論證 測試 爭對程式構造樣例去驗證程式的正確性。正確性論證根據程式的邏輯去判斷程式的有效性和正確性。測試的難度較正確性論證容易,但測試並不能說明測試已經全部覆蓋程式。二.ocl語言和jsf的異同 ocl物件約束語言,用來約束定義,形式化的無二義的語言,說明建模元素的有關細節。相同的 ...
OO第四次部落格
body body first child body last child p,blockquote,ul,ol,dl,table,pre h1,h2,h3,h4,h5,h6 h1 tt,h1 code,h2 tt,h2 code,h3 tt,h3 code,h4 tt,h4 code,h5 tt,...