背景
一方面隨著項目組件化的進(jìn)行,越來越多的模塊需要輸出更為詳細(xì)與易理解文檔,而在描述文檔的時候或多或少會加入類與類之間關(guān)系的描述。另一方面是如果在需求預(yù)言的時候,在涉及到較大的模塊的情況,
如果能首先輸出類圖的話,會更好的體現(xiàn)出模塊的代碼結(jié)構(gòu)是否合理,所以為了更好的統(tǒng)一大家在使用UML的描述方式,本文在此對使用UML繪制 iOS 下的類圖做簡要介紹
推薦工具:點擊下載StarUML
基本概念
類圖是面向?qū)ο缶幊讨凶畛S煤妥钪匾膱D。類圖主要是用來描述項目中的類,接口,以及它們之間的結(jié)構(gòu)和關(guān)系。類圖的3個基本組件:類名,屬性,方法。在描述方法時可以通過在方法下面添加一個橫線來區(qū)分類方法和實例方法,以及在后面添加 readOnly 來表明只讀屬性

接口(協(xié)議):

在UML類圖中,常見的有以下幾種關(guān)系:繼承(Generalization),實現(xiàn)(Realization),關(guān)聯(lián)(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)
- 1.繼承(Generalization)
【定義】:表示的是子類和父類的關(guān)系,例如貓和動物的關(guān)系一樣
【描述方式】:帶三角箭頭的實現(xiàn),箭頭指向父類

- 2.實現(xiàn)(Realization)
【定義】:描述的是一種類與接口(協(xié)議)的關(guān)系
【描述方式】:用帶三角箭頭的虛線表示,箭頭指向接口。

-
3.關(guān)聯(lián)(Association)
【定義】:是一種擁有關(guān)系,它使得一個類知道另一個類的屬性或方法;分為雙向關(guān)聯(lián)和單向關(guān)聯(lián)。例如老師和學(xué)生是雙向關(guān)聯(lián),老師可以有多名學(xué)生,學(xué)生也可以有多名老師;但學(xué)生和課程之間就是單向關(guān)聯(lián)的,一個學(xué)生可以有多門課程上,但是課程不擁有學(xué)生。
【描述方式】:雙向關(guān)聯(lián)的關(guān)系用一條直線連接兩個類,并在兩頭標(biāo)注數(shù)量對應(yīng)關(guān)系(1:n或者n:n);單向關(guān)聯(lián)關(guān)系用一個普通的箭頭連接兩個類,箭頭指向被擁有者。
【備注】:這種普通的關(guān)聯(lián)關(guān)系感覺在 iOS 中用的比較少,基本都是用下面三種更為特殊的關(guān)聯(lián)關(guān)系,聚合,組合,依賴

-
4.聚合(Aggregation)
【定義】:是一種整體與部分的關(guān)系,并且部分可以離開整體而單獨存在,好比汽車和輪胎是整體和部分的關(guān)系,但輪胎離開車任然可以存在。聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是一種強關(guān)聯(lián)關(guān)系
【描述方式】:帶空心菱形的實心線表示,菱形指向整體

【備注】:聚合的方式還可以用來表示 iOS 中某個聲明在 VC 或者 view 中的協(xié)議(反正不是單獨創(chuàng)建一個protocol文件那種)以 MPINewUserCell類來介紹,該類中定義了一個 MPINewUserCellDelegate給外界使用表示方式可以:

-
5.組合(Composition)
【定義】:是整體與部分的關(guān)系,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關(guān)系,沒有公司就不存在部門。組合關(guān)系也是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強的關(guān)聯(lián)關(guān)系。
【描述方式】:帶實心菱形的實線,菱形指向整體

-
6.依賴(Dependency)
【定義】:依賴關(guān)系是一種使用關(guān)系,即一個類做某件事情需要另一個類的協(xié)助,但不是把另一個類作為自己的屬性;例如下載素材的 manager 類和下載的素材material之間的關(guān)系就是依賴關(guān)系,manager僅僅是使用material,并沒有把它定義為自己的一個屬性
【描述方式】:帶箭頭的虛線指向被使用者

示例
下面以隨便一個素材模塊為示例畫出其類圖:
