## UML類圖與對象圖
### 基本概述
類圖(Class?Diagram)應該是使用的最多的一種UML圖。其語法并不復雜,可能只需要幾天時間就能掌握,但是其背后的面向對象(OO)思想卻是需要日積月累才能深刻理解。
?
### 面向對象的四種常見思想
1、OOA(Object-Oriented?Analysis?面向對象分析)
2、OOD(Object-Oriented?Design?面向對象設計)
3、OOP(Object-Oriented?Programming?面向對象編程)
4、OOT(Object-Oriented?Technology?面向對象技術)
?
PS:無論是開發人員還是分析人員,這幾種思想是必須要掌握的,作為開發人員來說,OO的思想,其深度和延伸內容可謂博大精深,值得花時間去學習。
?
### 類的概念
類可以視作一現實事物抽象出的統一的、相似的模型。
?
### 對象的概念
對象可以看做是類的具體化,就像模具導出的產品一樣。
?
### 類圖
類圖就是描述類與類之間關系的圖。
案例:

### 類圖的建模步驟
1、識別出類。
2、識別出類的主要屬性。
3、畫出類之間的關系。
4、對各類進行分析、抽象、整理。
### 關聯關系
兩個類之間有關系,但又不確定是什么關系,可以用關聯關系表達。


PS:關聯關系如果出現數量上的對應可以寫上數字表示數量,可以用角色關系表示兩類分別處于什么角色,單向關聯關系表示關聯是單向的,只能由關聯方找到被關聯方。在寫代碼時,可以將其視作關聯類包含了被關聯類的一個引用。
### 包含關系
包含關系表示一個類包含另一個類。

PS:包含關系分為兩種,一種是弱包含關系,叫做聚合,為空心菱形,一種是強包含關系,叫做組合,為實心菱形。一開始可以將所有包含關系視作弱包含,當發現某些關系可以用強包含表示時,才轉為強包含關系。
### 泛化關系
當一個類是另一個類的子類時,可以使用泛化關系。

PS:泛化關系通常也被稱作繼承關系,根據類的發現先后關系,如果是由父類導出子類,這樣就可以說子類繼承父類,如果是由子類導出父類,這樣就可以說父類泛化子類。
?
### 實現關系
當一個類可以實現某個抽象類時,可以使用實現關系。

PS:標識接口與類之間的關系用的比較多。
?
### 依賴關系
當一個類需要另一個類協助時,可以用依賴關系表示。

### 遞歸關系
當某類使用或者包含自己時,可以使用遞歸關系。

### 三角關系
當發現兩個類之間的關系不能用一般關系來表示,這時候可以用關聯類來表示關系,這也就是三角關系。

PS:可以通過思考屬性是否恰當來識別出關聯類關系,列出兩類的關鍵屬性之后,思考這些屬性的屬性值是不是由該類本身就可以確定,如果不能兩類之間就可能有關聯類關系。
?
### 小結

### 對象圖
如果說類圖代表了一類事物,那么對象圖就代表著某個具體的事物。
