OOAD —> OOA OOD
OOA 面向對象分析
OO :軟件工程技術,應用在軟件開發的調研,分析,設計,編碼,升級,擴展,測試等各個環節,並使用到大量的方 法,理論,原則,模式,工具,語言志在提高軟件質量的綜合技術。
OO:繼承,封裝,多態
繼承
優點:
1: 複用
2: 依賴於父類而又不侷限於父類的表現— 子類可以對父類進行擴展
3:可以從某種意義上增加代碼的靈活度《相對性》
缺點:
1: 高耦合(當父類的敞亮,變量,方法被修改時,必需要考慮子類的修改)
2:繼承是入侵性的(只要繼承,就必須擁有父類的所有屬性和方法)
3: 降低了代碼的靈活性(子類擁有了父類的屬性方法,會增多約束)《相對性》
多態:同一類域的不同對象在處理同一行爲的操作時,有不同的表現方式
類與類的關係:
繼承
實現
依賴:(組合,聚合)
具有偶然性,臨時性,非常弱的。(短暫性的使用)稱爲弱依賴;
與類共生共滅,稱爲強依賴
class A{
B b;
public A(){
b = new B(); // 組合關係
}
public void setB(B b){ //聚合關係
this.b = b;
}
}
class B{}
Abstract class && interface
設計角度:
1:避免多繼承
2:interface <——功能 abstract:屬性更像是一個模板
怎麼選擇?
1 :思想
2:根據問題域選擇
————————————————————————————————————
OOA:面向對象分析 (需求與初始分析,建模)
背景調研:特性分析
需求確認:列出需求
風險規避:1:規避重複 2:概念模糊 3:技術實現
靜態分析: UML 原型(axure工具) ———> (前面屬於分析,後面是設計)效果圖 ——>切圖———>編碼
OOD 面向對象設計:(OO設計原則與模式,建模,系統設計)設計原則 , 設計模式
設計原則:
單一職責:類的職責要單一,不能將太多的職責放在一個類中。
里氏替換:在軟件系統中,一個可以接受基類對象的地方必然可以接受一個子類對象。
開閉原則:軟件實體對擴展是開放的,但對修改是關閉,即在不修改一個軟件實體的基礎上去擴展其功能。
依賴反轉原則:要針對抽象層編程,而不要針對具體類編程。
接口隔離原則:使用多個專門的接口來取代一個統一的接口。
合成複用原則:在系統中應該儘量多使用組合和聚合關聯關係,儘量少使用甚至不使用繼承關係。
迪米特法則: 一個軟件實體對其他實體的引用越少越好,或者說如果兩個類不必彼此直接通信,那麼這兩個 類就不應當發生直接的相互作用,而是通過引入一個第三者發生間接交互
維護性低的軟件設計通常由於下面4個原因造成:
1:過於僵硬
2:過於脆弱
3:複用率低
4:黏度過高
好的系統設計應該具備以下三個性質
1: 可擴展性
2 :靈活性
3 :可插入性
定義OOA階段
分析階段主要解決以下問題
1: 建立針對業務問題域的清晰視圖。
2:列出系統必須要完成的核心人物。
3:針對問題域建立公共詞彙表。
4:列出針對此問題域的最佳解決方案。
此階段要解決的核心問題是“將要做什麼”?
定義OOD階段
1:如何解決具體業務問題。
2:引入系統工作所需要的支持元素。
3:定義系統的實現策略。
此階段要解決的核心問題是"怎麼做"?
OOP的主要特徵
1:抽象
2:封裝
3:繼承
4:多態
5:關聯
6:聚合
7:組合
8:內聚和耦合
開發過程概念
1:傳統開發過程----->瀑布模型
需求 分析 設計 實現 測試~
2:統一軟件開發過程(usdp)
3:Universal Process(通用流程)
OOAD的開發過程
1:大項目分解爲一些子項目。
2:使用UML工具。
3:統一軟件開發過程是一個迭代,遞增的開發過程。