產(chǎn)品經(jīng)理必學(xué)UML:類圖

20 評(píng)論 26871 瀏覽 303 收藏 11 分鐘

本篇文章主要介紹了UML靜態(tài)視圖中的類圖,包括類圖的概念、用途及相關(guān)元素,供大家一起參考和學(xué)習(xí)。

UML(Unified Modeling Language)又稱統(tǒng)一建模語(yǔ)言或標(biāo)準(zhǔn)建模語(yǔ)言,可以看做用于系統(tǒng)設(shè)計(jì)階段給開(kāi)發(fā)做參考的一種方式,其中很多圖需要用到面向?qū)ο蟪绦虻乃季S。

上圖為產(chǎn)品經(jīng)理經(jīng)常用到的UML圖,包括靜態(tài)視圖(類圖)和動(dòng)態(tài)視圖(用例圖、狀態(tài)圖、順序圖、活動(dòng)圖),其中靜態(tài)視圖主要用來(lái)分析業(yè)務(wù)概念,描述靜態(tài)場(chǎng)景;動(dòng)態(tài)視圖描述業(yè)務(wù)行為,分析動(dòng)態(tài)場(chǎng)景。

本文主要介紹類圖。

一、概念

類圖(Class Diagrame)是描述類、接口、協(xié)作以及它們之間關(guān)系的圖,用來(lái)顯示系統(tǒng)中各個(gè)類的靜態(tài)結(jié)構(gòu)。

類圖包含7個(gè)元素:類、接口、協(xié)作、依賴關(guān)系、泛化關(guān)系、實(shí)現(xiàn)關(guān)系以及關(guān)聯(lián)關(guān)系。

二、用途

  • 對(duì)系統(tǒng)的詞匯建模(建立抽象系統(tǒng)詞匯,如班級(jí)、學(xué)生);
  • 對(duì)簡(jiǎn)單協(xié)作建模(將系統(tǒng)詞匯中是事物協(xié)同工作的方式可視化和詳述,如班級(jí)和學(xué)生的關(guān)系表示);
  • 對(duì)邏輯數(shù)據(jù)庫(kù)模式建模。

三、類圖元素

在類圖中,類用矩形來(lái)表示,分為3個(gè)部分:名稱部分(Name)、屬性部分(Attribute)和操作部分(Operation,也可稱作方法)。

1. 類名稱(ClassName)

類的名稱是一個(gè)文本串,分為簡(jiǎn)單名稱和路徑名稱。簡(jiǎn)單名(single name)即單獨(dú)的名稱不含冒號(hào);路徑名(path name)即用類所在的包的名稱作為前綴。

簡(jiǎn)單名、路徑名

2. 屬性(Attribute)

描述類在軟件系統(tǒng)中代表的事物所具備的特性。UML中類屬性的語(yǔ)法: [可見(jiàn)性]?屬性名 [:類型] [=初始值] [{屬性字符串}],
如【-姓名: string】,其中[]中的部分是可選的。

(1) 可見(jiàn)性

包括共有(Public)、私有(Private)和受保護(hù)(Protected)3種。

共有類型可以被外部查看和使用,用“+”表示;私有類型即不可以從其他類中訪問(wèn)該屬性,用“-”表示;

受保護(hù)類型常與泛化和特化一起使用,用“#”表示。如果沒(méi)有符號(hào),表示沒(méi)有定義該屬性的可見(jiàn)性

(2) 屬性名

由描述所屬類的特性的名詞或名詞短語(yǔ)組成。按約定,單字屬性名小寫(xiě),多個(gè)單詞的話需要合并,且除第一個(gè)單詞之外的其余單詞首字母大寫(xiě),比如className。當(dāng)然,若為中文就不必如此。

(3) 類型

典型的屬性類型有:整數(shù)(int)、布爾型、實(shí)型和枚舉類型。當(dāng)一個(gè)類的屬性被完整定義后,任何一個(gè)對(duì)象的狀態(tài)都由這些屬性的特定值所決定。

(4) 初始值

保證系統(tǒng)的完整性;為用戶提供易用性。

(5) 屬性字符串

關(guān)于屬性的其他信息。

3. 操作(Operation)

類的操作是對(duì)類的對(duì)象所能做的事務(wù)的抽象,相當(dāng)于服務(wù)的實(shí)現(xiàn)。UML中類操作的語(yǔ)法:[可見(jiàn)性]?操作名 [ (參數(shù)表)] [: 返回類型] [{屬性字符串}],如【+查詢( ): 歌曲】,其中[]中的部分是可選的。

(1) 可見(jiàn)性

包括共有(Public)、私有(Private)、受保護(hù)(Proteted)和包內(nèi)公有(Package)4種。

其中公有類型即只要調(diào)用對(duì)象能訪問(wèn)操作所在的包,就可調(diào)用該操作,用“+”表示;私有類型即只有屬于同一個(gè)類的對(duì)象才可以調(diào)用,用“-”表示;

受保護(hù)類型即只有子類的對(duì)象才可以調(diào)動(dòng)父類,用“#”表示;

包內(nèi)公有類型即只有在同一個(gè)包里的對(duì)象才可以調(diào)用,用“~”表示。

(2) 操作名

描述所屬類的行為的動(dòng)詞或動(dòng)詞短語(yǔ)。約定同屬性名。

(3) 參數(shù)表

指一些按順序排列的屬性定義了操作的輸入。定義方式采取“名稱:類型”,多個(gè)參數(shù)用逗號(hào)隔開(kāi)。

(4) 返回類型

絕大部分編程語(yǔ)言只支持一個(gè)返回值,即返回類型至多一個(gè)。

4. 接口(Interface)

接口是指類或組件所提供的、可以完成特定功能的一組操作的集合。接口描述了類或組件的對(duì)外的、可見(jiàn)的動(dòng)作,通常一個(gè)類實(shí)現(xiàn)一個(gè)或多個(gè)接口。

定義看起來(lái)比較枯燥,通俗點(diǎn)說(shuō)接口就像螺絲和螺帽的關(guān)系,是為類制定了一種規(guī)范,是類與類之間的一種約束和協(xié)定。

對(duì)于一些小程序,一般不需要接口,因?yàn)楣δ艿母膭?dòng)對(duì)整體的影響不大;但對(duì)于大的程序,一旦用戶需求對(duì)功能進(jìn)行變動(dòng),而功能之間的耦合度高的話就會(huì)對(duì)整個(gè)程序造成影響,而如果使用接口的話,就能在使用之前就想好它要實(shí)現(xiàn)的全部功能,即功能的封裝。之后需求變化只需要重新寫(xiě)實(shí)現(xiàn)類,同樣其他人只需要調(diào)用接口,不需要知道類的消息。

5. 關(guān)系(Ralationship)

(1) 依賴(Dependency)關(guān)系

表示某一類元以某種形式依賴于其他類元,它表現(xiàn)了這樣一種場(chǎng)景,如下圖,對(duì)于一個(gè)元素(提供者)的某些更改會(huì)影響或提供消息給其他元素(客戶),即客戶以某種形式依賴于提供者。

(2) 泛化(Generalization)關(guān)系

表示一種存在于一般元素和特殊元素之間的分級(jí)關(guān)系,描述了“is a kind of”(是……的一種)的關(guān)系,如汽車是交通工具的一種。在類中一般元素稱為超類或父類,特殊元素稱為子類。

(3) 關(guān)聯(lián)(Association)關(guān)系

表示一組具有共同結(jié)構(gòu)特征、行為特征、關(guān)系和語(yǔ)義的鏈接,是一種結(jié)構(gòu)關(guān)系,指明一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象間的關(guān)系。如學(xué)生和大學(xué)的關(guān)系,學(xué)生在大學(xué)里學(xué)習(xí),大學(xué)又包括了很多學(xué)生,所以可以在學(xué)生和大學(xué)之間建立關(guān)聯(lián)關(guān)系。

(4) 聚合(Aggregation)關(guān)系

是一種特殊形式的關(guān)聯(lián)關(guān)系。表示整體與部分關(guān)系的關(guān)聯(lián),簡(jiǎn)單來(lái)說(shuō),就是關(guān)聯(lián)關(guān)系中的一組元素組成了一個(gè)更大、更復(fù)雜的單元。描述了“has? a”的關(guān)系。如大學(xué)和學(xué)院,大學(xué)是由很多個(gè)學(xué)院組成的,因此兩者之間是聚合關(guān)系。

(5) 實(shí)現(xiàn)(Realization)關(guān)系

表示規(guī)格說(shuō)明和其實(shí)現(xiàn)之間的關(guān)系,將一種模型元素和另一種模型元素連接起來(lái),比如類和接口。?如打字員和鍵盤(pán),鍵盤(pán)保證自己的部分行為可以實(shí)現(xiàn)打字員的行為。

四、連接關(guān)系圖形小結(jié)

由于連接關(guān)系之間使用的圖形較為相似,基本由箭頭和直線組成,容易混淆,在此進(jìn)行總結(jié),以便查看。

五、小練習(xí)——簡(jiǎn)易聽(tīng)歌系統(tǒng)類圖

  • 用戶與歌手:關(guān)聯(lián)關(guān)系,1個(gè)用戶可能關(guān)注0到n個(gè)歌手;
  • 用戶與歌曲:關(guān)聯(lián)關(guān)系,1個(gè)用戶可能播放或者收藏0到n首歌曲;
  • 歌曲與歌手:關(guān)聯(lián)關(guān)系,1首歌曲對(duì)應(yīng)至少1位歌手;
  • 歌曲與歌曲列表:聚合關(guān)系,1到n首歌組成了1個(gè)歌曲列表;
  • 用戶實(shí)現(xiàn)接口注冊(cè)和登錄。

第一次寫(xiě),若有錯(cuò)誤的地方,歡迎批評(píng)指正。后續(xù)會(huì)更新用例圖、活動(dòng)圖等,可關(guān)注等待哦。

 

本文由 @AugTalk 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來(lái)自Unsplash,基于CC0協(xié)議。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 為什么沒(méi)有繼承關(guān)系和復(fù)合關(guān)系?

    來(lái)自北京 回復(fù)
    1. 泛化就可以理解為繼承

      來(lái)自天津 回復(fù)
  2. 問(wèn)題:歌手和歌曲的關(guān)系應(yīng)該更復(fù)雜,一個(gè)歌曲對(duì)應(yīng)至少一位歌手,一位歌手也會(huì)對(duì)應(yīng)多個(gè)歌曲啊

    回復(fù)
    1. 是的,用戶與合區(qū)的關(guān)系應(yīng)該是多對(duì)多,即N-N

      來(lái)自上海 回復(fù)
    2. 是的,用戶與歌曲的關(guān)系應(yīng)該是多對(duì)多,即N-N

      來(lái)自上海 回復(fù)
  3. 給你點(diǎn)贊,沒(méi)有系統(tǒng)學(xué)習(xí)過(guò)UML,在你這邊看到滿滿的干貨,很受用

    回復(fù)
  4. 例子里面的符號(hào)沒(méi)有懂,+ ()

    來(lái)自廣東 回復(fù)
    1. + 是公有屬性;
      – 是私有屬性;
      ()是方法

      來(lái)自江蘇 回復(fù)
  5. 數(shù)據(jù)庫(kù)要不你也一起寫(xiě)了吧

    來(lái)自四川 回復(fù)
  6. 你的這些類都是用什么軟件做的,powerdesigner?

    來(lái)自廣東 回復(fù)
    1. visio

      來(lái)自廣東 回復(fù)
  7. 這個(gè)內(nèi)容可以放在人人都是技術(shù)經(jīng)理里面

    回復(fù)
    1. B端產(chǎn)品經(jīng)理就是要會(huì)業(yè)務(wù)建模的

      來(lái)自上海 回復(fù)
  8. 有沒(méi)有人進(jìn)來(lái)說(shuō)句實(shí)話,這圖畫(huà)出來(lái)到底有什么實(shí)質(zhì)性作用?直接列到Excel中不是更快更方便嗎?花這么多時(shí)間不如好好打磨產(chǎn)品方案!

    回復(fù)
    1. visio畫(huà)很快的

      來(lái)自北京 回復(fù)
    2. 如果你要做數(shù)據(jù)中心的產(chǎn)品,這東西太有用了

      回復(fù)
    3. 有些B端偏底層的產(chǎn)品,技術(shù)不懂業(yè)務(wù)或者業(yè)務(wù)不懂技術(shù),單純一個(gè)版本一個(gè)版本的堆功能,走著走著就走死了

      來(lái)自北京 回復(fù)
    4. 畫(huà)了這個(gè)整個(gè)架構(gòu)會(huì)清晰很多

      來(lái)自廣東 回復(fù)
    5. 應(yīng)該說(shuō)后端最喜歡看到這個(gè)了,字段類型,接口都弄好了

      來(lái)自江蘇 回復(fù)
  9. 很受用 ??

    來(lái)自北京 回復(fù)