交流qq群:26651479
day01:
物件導向
通過封裝、繼承、多型,把程式的耦合度降低,使程式靈活、容易修改、容易復用。
物件導向=物件 + 類 + 訊息 + 繼承 + 多型
物件導向方法是一種把物件導向的思想運用於軟體開發過程,指導開發活動的系統方法,包括分析、設計和實現等活動
軟體開發組越大,組中每個成員的生產率就越低
--philippe kahn, borland
ln = 15000/(n^-3)( loc / year )
構造大型軟體不能靠堆人
敏捷開發:
1. 思路先行 //先用注釋把思路記錄下來
2. 實現隨後
可維護性:預見需求(預見多年後的事)
可重用:
**可重用(最低級別):粒度:方法(常用**塊),類,包,元件(類庫)
設計的可重用:框架(半成品,如hibernate);產品(開發軟體);演算法、設計模式
分析的可重用(最高端別,見不到**):文件、規範、標準(iso:cmm,cmmi)
可擴充套件性:
uml圖
類(class) 用矩形框表示,分三層
第一層:類名,抽象類用斜體字
第二層:類的特性:欄位和屬性
第三層:類的操作:方法或行為
方法前的符號:「+」表示public,「-」表示private,「#」表示protected
介面:右邊的「飛翔」
頂端有<>,第一層是介面名字,第二層是方法
介面的另一種表示法:俗稱棒棒糖表示法,就是類上面的一根棒棒糖(圓圈+實線)
圓圈旁為介面名稱,介面方法在實現類中出現
繼承:用空心三角+實線
實現介面:空心三角+虛線
類與物件之間的關係(6種):
關聯 association:乙個類受另乙個類影響(實線)
聚合關聯 aggregation:弱'擁有'關係,a物件可以包含b物件,但b不是a的一部分(空心菱形+實線箭頭)[dpe]
(dpe 表示這句話來自《設計模式》)
組合關聯 composition:(也叫合成,組成)是一種強的『擁有』關係,體現嚴格的部分和整體的關係,
部分和整體的生命週期一樣[dpe](實心菱形+實線箭頭)
組合圖形的基數:表明這一端的類可以有幾個例項,(乙隻鳥有兩個翅膀)如果有無數個例項,則用n表示
關聯關係、聚合關係也可以有基數
依賴 dependency :乙個類需要另外乙個類(x需要y,則x的修改y也要跟著修改) (虛線箭頭)
泛化(繼承) (實心菱形+實線)
實現 (實心菱形+虛線)
uml 4+1 圖
1:用例圖 描述系統中有哪些使用者可用的功能
4:邏輯圖 將問題中的一些名詞提取出來,形成系統中對應的類,表示之間的關係。
過程圖 表示系統物件間的互動
實現圖 系統中元件與元件之間互動
部署圖 軟體系統真實執行過程的物理描述
靜態(系統結構):
類圖物件圖
構建圖部署圖
動態(系統行為):
順序圖 (時序圖)
協作圖狀態圖
活**用例圖
day02:
物件導向的7大基本設計原則
程式設計:沒有最好,只有最適合。尋找平衡點。
1. lsp(the liskov substitution principle ,替換原則)
父類出現的地方,子類都可出現。
子類或實現類與父類都是可以互換的。
子類不能新增任何父類沒有的附加約束
子類物件必須可以替換父類物件
2. ocp (the open-close principle,開閉原則)
要關聯抽象,不要關聯具體,抽象可擴充套件。
擴充套件是開放的,更改是封閉的
3. srp(the single responsibility principle,單一職責原則)
依賴不同的具體類,不要將不相關的方法放到乙個具體類中,然後具體類再關聯。
乙個類,應該僅有乙個引起它變化的原因
當需求變化時,該變化會反映為類的職責的變化(如果有多個職責,引起變化的原因就會有多個)
4. isp(the inte***ce segregation principle,介面隔離原則)
具體類不要實現無關介面中的方法,應使用具體類實現多個介面。
避免肥介面,以乙個類實現多個介面,而各客戶僅僅獲知必須的介面
本質:使用多個專門的介面比使用單一的介面好
乙個類對另乙個類的依賴性應當最小化
避免介面汙染(inte***ce pollution)(使用不必要的功能)
5. dip(the dependency inversion principle,依賴倒置原則)
高層依賴於抽象,底層繼承/實現於抽象。
高層模組不應該依賴於低層模組,二者都應該依賴於抽象
細節應該依賴於抽象,而抽象不應該依賴於細節
針對介面程式設計,不是針對實現程式設計
6. carp(composite/aggregate reuse principle,組合/聚合復用原則)
盡量使用組合/聚合,而不是使用繼承來達到復用目的
繼承的缺點:會帶來不必要的方法
組合/聚合的解決方案
組合:部分的更改會影響整體的生命
聚合:部分的更改對整體的影響不大
7. lod(law of demeter,迪公尺特法則)
類間最少通訊原則,採用中間類。
也稱最少知識原則。乙個物件或模組應該和其它物件和模組盡量少的通訊
gof(gang of fout) 23種經典設計模式
建立型 結構型 行為型
類 factory method 工廠方法 adapter_class interpreter
template method
物件 abstract factory 抽象工廠 adapter_object chain of responsibility
builder bridge command
prototype 原型 composite iterator
singleton 單例 decorator 裝飾 mediator
facade memento
flyweight observer
proxy state 狀態
strategy
visitor
單例模式:
當多個物件需要共享同乙個物件時;
原型模式:
對擴充套件開發,對修改關閉;
工廠模式:
客戶需要某個產品,能夠根據客戶要求取得產品給客戶;
狀態模式:
當需要對某個物件內部狀態改變時,使用;
裝飾模式:
當需要對某個物件動態新增新功能時,可以用;
介面卡模式:
只需要對介面中的一小部分方法重新定義,又不希望將介面中的所有方法實現,
這時可以使用;
觀察者模式:
當主題物件改變時,需要通知所有的觀察者,這時可以使用;
命令模式:
將使用者發出命令以物件形式傳遞,通過引數可改變命令物件的狀態;
OOAD 和UML經典總結
day01 物件導向 通過封裝 繼承 多型,把程式的耦合度降低,使程式靈活 容易修改 容易復用。物件導向 物件 類 訊息 繼承 多型 物件導向方法是一種把物件導向的思想運用於軟體開發過程,指導開發活動的系統方法,包括分析 設計和實現等活動 軟體開發組越大,組中每個成員的生產率就越低 philippe...
OOAD 學習筆記 二
物件導向分析面臨的主要問題 問題域和系統責任的確定,交流問題,不斷變化的需求,軟體復用的要求。軟體的複雜性源於問題域和系統責任的複雜性 問題域 被開發系統的應用領域,即在現實世界同這個系統所涉及的業務範圍。系統責任 被開發的系統應該具備的職能。物件導向分析 強調用物件的概念對問題域中的事物進行完整的...
OOAD 學習筆記 五
本節主要講解順序圖,通訊圖,活 狀態機圖,包圖。順序圖,通訊圖,活 狀態機圖用於描述系統的行為,包圖用於組織系統的模型。順序圖 順序圖和通訊圖都是用於詳細描述物件間的互動 通訊圖根據順序圖生成,反之亦然 順序圖示例 76頁,圖5 1 順序圖是二維的,垂直方向表示時間,水平方向放置不同的物件。物件生命...