復合資料型別(類)
當我們當向集合中插入物件時,就可以使用hashcode,先呼叫這個物件的hashcode方法,得到對應的hashcode值,實際上在hashmap的具體實現中會用乙個table儲存已經存進去的物件的hashcode值,如果table中沒有該hashcode值,它就可以直接存進去,不用再進行任何比較了;如果存在該hashcode值, 就呼叫它的equals方法與新元素進行比較,相同的話就不存了,不相同就雜湊其它的位址,所以這裡存在乙個衝突解決的問題,這樣一來實際呼叫equals方法的次數就大大降低了。
宣告式規約更有價值 ; 內部實現的細節不在規約裡呈現,而放在**實現體內部注釋裡呈現,例:
static更強的規約包括更輕鬆的前置條件和更嚴格的後置條件;string join(string delimiter, string elements)
effects: returns concatenation of elements in order, with delimiter inserted between each pair of adjacent elements
//declarative specs
方法前的注釋也是一種規約,但需人工判定其是否滿足。
producers(生產器):
observers(觀察器):
mutators(變值器):
在研究抽象型別的時候,先思考一下兩個值域之間的關係:
r->a的對映特點:
在描述抽象函式和表示不變數的時候,注意要清晰明確:
【白盒框架】
【黑盒框架】
【兩者對比】
黑盒框架使用委派中的組合composition:
陣列是協變的,向上轉型是成立的
型別擦除的結果: 被擦除 t變成了object
mark-sweep(標記-清除)演算法
這四個條件是死鎖的必要條件,只要系統發生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發生死鎖。
**覆蓋度:已有的測試用例有多大程度覆蓋了被測程式
**覆蓋度越低,測試越不充分但要做到很高的**覆蓋度,需要更多的測試用例,測試代價高
分類:函式覆蓋 + 語句覆蓋 +分支覆蓋 + 條件覆蓋 + 路徑覆蓋
測試效果:路徑覆分支覆語句覆蓋
測試難度:路徑覆分支覆語句覆蓋
路徑數量巨大,難以全覆蓋
設計模式前五個原則,恰恰是告訴我們用抽象構建框架,用實現擴充套件細節的注意事項而已:
單一職責原則告訴我們實現類要職責單一;黎克特制替換原則告訴我們不要破壞繼承體系;依賴倒置原則告訴我們要面向介面程式設計;介面隔離原則告訴我們在設計介面的時候要精簡單一;迪公尺特法則告訴我們要降低耦合。而開閉原則是總綱(實現效果),它告訴我們要對擴充套件開放,對修改關閉。
軟體構造複習知識點1
多維檢視 1 biuld time moment code level source code,ast,inte ce class attribute method介面類屬性方法 class diagram 2 biuld time period code level code churn 改動 3...
c 期末考試知識點 C 知識點提煉期末複習專用
根據內部訊息稱 有三類題型 簡答題 2題 主要是對概念的考查 程式設計題 暫定2 3題 複習要點 net framework 通用語言開發環境 net基礎類庫 net開發語言 visual studio.net整合開發環境 c 的特點 1.語法簡介 2.徹底的物件導向 3.與web應用緊密結合 4....
建構函式知識點
1 建構函式必須與類名相同,並且不能有返回值 返回值也不能為void 若在建構函式前面加上void,編譯器會把它認為是方法,而不是建構函式 當然在new的時候,也不能自動呼叫 2 每個類可以有多個建構函式,如果人為定義了建構函式,編譯器不會建立預設的建構函式。3 建構函式在物件例項化的時候被自動呼叫...