OOAD & UML note
day01:
面向對象
通過封裝、繼承、多態,把程序的耦合度降低,使程序靈活、容易修改、容易複用。
面向對象=對象 + 類 + 消息 + 繼承 + 多態
面向對象方法是一種把面向對象的思想運用於軟件開發過程,指導開發活動的系統方法,包括分析、設計和實現等活動
軟件開發組越大,組中每個成員的生產率就越低
--Philippe Kahn, Borland
Ln = 15000/(n^-3)( LOC / year )
構造大型軟件不能靠堆人
敏捷開發:
1. 思路先行 //先用註釋把思路記錄下來
2. 實現隨後
可維護性:預見需求(預見多年後的事)
可重用:
代碼可重用(最低級別):粒度:方法(常用代碼塊),類,包,組件(類庫)
設計的可重用:框架(半成品,如Hibernate);產品(開發軟件);算法、設計模式
分析的可重用(最高級別,見不到代碼):文檔、規範、標準(ISO:CMM,CMMI)
可擴展性:
UML圖
類(class) 用矩形框表示,分三層
第一層:類名,抽象類用斜體字
第二層:類的特性:字段和屬性
第三層:類的操作:方法或行爲
方法前的符號:“+”表示public,“-”表示private,“#”表示protected
接口:右邊的“飛翔”
頂端有<<interface>>,第一層是接口名字,第二層是方法
接口的另一種表示法:俗稱棒棒糖表示法,就是類上面的一根棒棒糖(圓圈+實線)
圓圈旁爲接口名稱,接口方法在實現類中出現
繼承:用空心三角+實線
實現接口:空心三角+虛線
類與對象之間的關係(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 Interface Segregation Principle,接口隔離原則)
具體類不要實現無關接口中的方法,應使用具體類實現多個接口。
避免肥接口,以一個類實現多個接口,而各客戶僅僅獲知必須的接口
本質:
使用多個專門的接口比使用單一的接口好
一個類對另一個類的依賴性應當最小化
避免接口污染(Interface 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
單例模式:
當多個對象需要共享同一個對象時;
原型模式:
對擴展開發,對修改關閉;
工廠模式:
客戶需要某個產品,能夠根據客戶要求取得產品給客戶;
狀態模式:
當需要對某個對象內部狀態改變時,使用;
裝飾模式:
當需要對某個對象動態添加新功能時,可以用;
適配器模式:
只需要對接口中的一小部分方法重新定義,又不希望將接口中的所有方法實現,
這時可以使用;
觀察者模式:
當主題對象改變時,需要通知所有的觀察者,這時可以使用;
命令模式:
將用戶發出命令以對象形式傳遞,通過參數可改變命令對象的狀態;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.