需求分析-類圖建模
?
類圖中一共包含了以下幾種模型元素,分別是:類(Class)、接口(Interface)以及類之間的關(guān)系。
?
類(Class)
在面向?qū)ο螅∣O) 編程中,類是對現(xiàn)實(shí)世界中一組具有相同特征的物體的抽象。
接口(Interface)
接口是一種特殊的類,具有類的結(jié)構(gòu)但不可被實(shí)例化,只可以被實(shí)現(xiàn)(繼承)。在UML中,接口使用一個(gè)帶有名稱的小圓圈來進(jìn)行表示。
類圖中關(guān)系(relation)
在UML類圖中,常見的有以下幾種關(guān)系:泛化(Generalization), 實(shí)現(xiàn)(Realization),關(guān)聯(lián)(Association),聚合(Aggregation),組合(Composition),依賴(Dependency)
各種關(guān)系的強(qiáng)弱順序:泛化 = 實(shí)現(xiàn)> 組合 > 聚合 > 關(guān)聯(lián) > 依賴
?
類圖繪制要點(diǎn)
類的操作是針對類自身的操作,而不是它去操作人家。比如書這個(gè)類有上架下架的操作,是書自己被上架下架,不能因?yàn)樯霞芟录苁枪芾韱T的動(dòng)作而把它放在管理員的操作里。
兩個(gè)相關(guān)聯(lián)的類,需要在關(guān)聯(lián)的類中加上被關(guān)聯(lián)類的ID,并且箭頭指向被關(guān)聯(lián)類??梢岳斫鉃閿?shù)據(jù)表中的外鍵。比如借書和書,借書需要用到書的信息,因此借書類需包含書的ID,箭頭指向書。
由于業(yè)務(wù)復(fù)雜性,一個(gè)顯示中的實(shí)體可能會(huì)被分為多個(gè)類,這是很正常的,類不是越少越好。類的設(shè)計(jì)取決于怎樣讓后臺程序的操作更加簡單。比如單看邏輯,借書類可以不存在,它的信息可以放在書這個(gè)類里。然而借還書和書的上架下架完全不是一回事,借書類對借書的操作更加方便,不需要去重復(fù)改動(dòng)書這個(gè)類中的內(nèi)容。此外,如果書和借書是1對多的關(guān)系,那就必須分為兩個(gè)類。
類圖中的規(guī)范問題,比如不同關(guān)系需要不同的箭頭,可見性符號等。
?
案例:
人脈管理項(xiàng)目的主要業(yè)務(wù)是用戶通過人脈系統(tǒng)管理名片。用戶可以通過電腦瀏覽器添加名片,添加的名片存儲(chǔ)到數(shù)據(jù)庫,也可以編輯和刪除名片,當(dāng)用戶需要時(shí)可以隨時(shí)查詢和瀏覽名片?!?/p>
人脈管理項(xiàng)目的主要業(yè)務(wù)并不復(fù)雜,我們可以很容易發(fā)現(xiàn)業(yè)務(wù)的關(guān)鍵概念,其中用戶、名片和數(shù)據(jù)庫都是業(yè)務(wù)的關(guān)鍵概念。用戶是業(yè)務(wù)的執(zhí)行者,名片是業(yè)務(wù)的材料,數(shù)據(jù)庫是業(yè)務(wù)的數(shù)據(jù)源。
找出業(yè)務(wù)的關(guān)鍵概念后,我們還需要弄清業(yè)務(wù)概念之間的關(guān)系。如下圖:
業(yè)務(wù)概念關(guān)系圖,可以清晰說明人脈系統(tǒng)的業(yè)務(wù)內(nèi)容:用戶通過人脈系統(tǒng)管理名片信息,名片信息通過數(shù)據(jù)庫進(jìn)行存取。
?
從定義的系統(tǒng)事件中找出系統(tǒng)角色,而找出的系統(tǒng)角色就是業(yè)務(wù)的關(guān)鍵概念,
類圖模型描述了角色內(nèi)容以及角色之間關(guān)系的模型。類圖是一個(gè)矩形的方框,方框分為三部分,最上面的部分是類的名稱,中間部分是類的屬性,下面的部分是類的行為。下圖是一個(gè)簡單的類圖。
類就是我們前面分析得到角色,角色有屬性和行為,因此在類圖中也有屬性和行為。
?
建立類關(guān)系
依賴關(guān)系:指在類的行為中使用到另一個(gè)類。
例如用戶類的注冊行為,就會(huì)使用到數(shù)據(jù)庫類來存儲(chǔ)用戶信息。下圖是依賴關(guān)系的類圖模型。
繼承關(guān)系:指一個(gè)類繼承另一個(gè)類的屬性和行為,被繼承的類稱為父類,繼承的類稱為子類。
例如,假如人脈管理系統(tǒng)要支持多種類型的名片,我們就可以把名片的共同屬性和行為抽取出來形成基類,然后在基類的基礎(chǔ)上,通過繼承關(guān)系創(chuàng)建視頻名片、動(dòng)畫名片、文字名片等不同媒體的名片。
?
關(guān)聯(lián)關(guān)系:指兩個(gè)類之間有相關(guān)性,如果一個(gè)類的屬性是另外一個(gè)類,就說這兩個(gè)類之間有關(guān)聯(lián)關(guān)系。
例如在人脈系統(tǒng)中,假如用戶類的一個(gè)屬性是名片類,則可以說用戶類和名片類有關(guān)聯(lián)關(guān)系。
?
?