萬用字元:只能在使用**現,不能定義
不能用instance of檢驗泛型
不能構建泛型陣列
lsp原則:子型別的規約不能弱於父型別的規約
靜態分派:編譯階段確定執行操作
動態分派:編譯階段可能繫結到多型操作,執行階段確定具體執行哪乙個
推遲繫結:編譯階段不知道型別,一定是動態分派
(override是推遲繫結,overload是early 繫結)
tostring
equals()
& **hashcode()**必須同時override
三種判斷等價的方式:
af:af對映到同樣的結果,則等價
relation:等價關係:自反,對稱,傳遞
利用observation:站在外部觀察著的角度判斷等價性
引用等價性:對基本資料型別(==)
物件等價性:對於物件使用equals
equals的規約:
自反性;對稱性;傳遞性;一致性;非空性
hashcode的規約:(物件相等的必要條件)
如果重寫equals(),必須重寫hashcode()
不同的物件hash code值應該不相同,
但是由於hashcode()衝突問題,unequal的值也能有相同的hash值
除非object發生改變,否則hashcode()保持不變
觀察等價性:在不改變的情況下,兩個mutable物件是否看起來一致
行為等價性:呼叫物件的任何方法都展示一致結果
collections→觀察等價性→mutation改變hashcode
stringbuilder→行為等價性→引用等價
可變資料型別實現為行為等價性即可
如果需判斷兩個可變物件看起來是否一致,需要定義新的方法,例如similar()。
軟體構造 複習筆記一
軟體構造 複習筆記一 內部質量指標 開發者 外部質量指標 使用者 其中,使用者高於開發者,外部指標高於內部指標 正確性 spec 健壯性 處理spec中沒有包含的情況,可以認作是對正確性的補充 健壯性是軟體系統對異常情況做出適當反應的能力,確保如果出現此類情況,系統不會導致災難性事件 它應生成適當的...
軟體構造複習
1.3.1 瀑布式開發過程 基本活動 制定計畫 需求分析 軟體設計 程式編寫 軟體測試 執行維護 問題 階段劃分僵硬,每個階段不能預設,而且產生大量文件,增加了工作量 開發是線性的,只有等到整個過程的末期才能見到開發成果 可執行軟體,不利於快速響應變化的需求 早期的錯誤要等到開發後期的測試階段才能發...
軟體構造期末複習 第五章
軟體的可維護性 錯誤修復 改善效能 度量方法。原則方法 目標 設計方法 耦合與內聚 模組之間聯絡越多,耦合度越高 應高內聚,低耦合 著重符號 單一責任原則 每個模組 類 不應因為超過乙個原因而發生改變 乙個類應只完成一種需求 一類操作 開放封閉原則 著重中著重符號 liskov替換原則 保證子類能夠...