背景
一方面隨著項(xiàng)目組件化的進(jìn)行活尊,越來(lái)越多的模塊需要輸出更為詳細(xì)與易理解文檔吠撮,而在描述文檔的時(shí)候或多或少會(huì)加入類與類之間關(guān)系的描述博脑。另一方面是如果在需求預(yù)言的時(shí)候饲嗽,在涉及到較大的模塊的情況,
如果能首先輸出類圖的話卵凑,會(huì)更好的體現(xiàn)出模塊的代碼結(jié)構(gòu)是否合理庆聘,所以為了更好的統(tǒng)一大家在使用UML的描述方式胜臊,本文在此對(duì)使用UML繪制 iOS 下的類圖做簡(jiǎn)要介紹
推薦工具:點(diǎn)擊下載StarUML
基本概念
類圖是面向?qū)ο缶幊讨凶畛S煤妥钪匾膱D。類圖主要是用來(lái)描述項(xiàng)目中的類伙判,接口象对,以及它們之間的結(jié)構(gòu)和關(guān)系。類圖的3個(gè)基本組件:類名澳腹,屬性织盼,方法。在描述方法時(shí)可以通過(guò)在方法下面添加一個(gè)橫線來(lái)區(qū)分類方法和實(shí)例方法,以及在后面添加 readOnly 來(lái)表明只讀屬性
接口(協(xié)議):
在UML類圖中酱塔,常見的有以下幾種關(guān)系:繼承(Generalization)沥邻,實(shí)現(xiàn)(Realization),關(guān)聯(lián)(Association)羊娃,聚合(Aggregation)唐全,組合(Composition),依賴(Dependency)
- 1.繼承(Generalization)
【定義】:表示的是子類和父類的關(guān)系蕊玷,例如貓和動(dòng)物的關(guān)系一樣
【描述方式】:帶三角箭頭的實(shí)現(xiàn)邮利,箭頭指向父類
- 2.實(shí)現(xiàn)(Realization)
【定義】:描述的是一種類與接口(協(xié)議)的關(guān)系
【描述方式】:用帶三角箭頭的虛線表示,箭頭指向接口垃帅。
-
3.關(guān)聯(lián)(Association)
【定義】:是一種擁有關(guān)系延届,它使得一個(gè)類知道另一個(gè)類的屬性或方法;分為雙向關(guān)聯(lián)和單向關(guān)聯(lián)贸诚。例如老師和學(xué)生是雙向關(guān)聯(lián)方庭,老師可以有多名學(xué)生,學(xué)生也可以有多名老師酱固;但學(xué)生和課程之間就是單向關(guān)聯(lián)的械念,一個(gè)學(xué)生可以有多門課程上,但是課程不擁有學(xué)生运悲。
【描述方式】:雙向關(guān)聯(lián)的關(guān)系用一條直線連接兩個(gè)類龄减,并在兩頭標(biāo)注數(shù)量對(duì)應(yīng)關(guān)系(1:n或者n:n);單向關(guān)聯(lián)關(guān)系用一個(gè)普通的箭頭連接兩個(gè)類班眯,箭頭指向被擁有者希停。
【備注】:這種普通的關(guān)聯(lián)關(guān)系感覺在 iOS 中用的比較少,基本都是用下面三種更為特殊的關(guān)聯(lián)關(guān)系署隘,聚合脖苏,組合,依賴
-
4.聚合(Aggregation)
【定義】:是一種整體與部分的關(guān)系定踱,并且部分可以離開整體而單獨(dú)存在,好比汽車和輪胎是整體和部分的關(guān)系恃鞋,但輪胎離開車任然可以存在崖媚。聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種亦歉,是一種強(qiáng)關(guān)聯(lián)關(guān)系
【描述方式】:帶空心菱形的實(shí)心線表示,菱形指向整體
【備注】:聚合的方式還可以用來(lái)表示 iOS 中某個(gè)聲明在 VC 或者 view 中的協(xié)議(反正不是單獨(dú)創(chuàng)建一個(gè)protocol文件那種)以 MPINewUserCell
類來(lái)介紹畅哑,該類中定義了一個(gè) MPINewUserCellDelegate
給外界使用表示方式可以:
-
5.組合(Composition)
【定義】:是整體與部分的關(guān)系肴楷,但部分不能離開整體而單獨(dú)存在。如公司和部門是整體和部分的關(guān)系荠呐,沒有公司就不存在部門赛蔫。組合關(guān)系也是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強(qiáng)的關(guān)聯(lián)關(guān)系泥张。
【描述方式】:帶實(shí)心菱形的實(shí)線呵恢,菱形指向整體
-
6.依賴(Dependency)
【定義】:依賴關(guān)系是一種使用關(guān)系,即一個(gè)類做某件事情需要另一個(gè)類的協(xié)助媚创,但不是把另一個(gè)類作為自己的屬性渗钉;例如下載素材的 manager 類和下載的素材material之間的關(guān)系就是依賴關(guān)系,manager僅僅是使用material钞钙,并沒有把它定義為自己的一個(gè)屬性
【描述方式】:帶箭頭的虛線指向被使用者
示例
下面以隨便一個(gè)素材模塊為示例畫出其類圖: