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

20 評論 27168 瀏覽 303 收藏 11 分鐘

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

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

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

本文主要介紹類圖。

一、概念

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

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

二、用途

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

三、類圖元素

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

1. 類名稱(ClassName)

類的名稱是一個文本串,分為簡單名稱和路徑名稱。簡單名(single name)即單獨的名稱不含冒號;路徑名(path name)即用類所在的包的名稱作為前綴。

簡單名、路徑名

2. 屬性(Attribute)

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

(1) 可見性

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

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

受保護類型常與泛化和特化一起使用,用“#”表示。如果沒有符號,表示沒有定義該屬性的可見性

(2) 屬性名

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

(3) 類型

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

(4) 初始值

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

(5) 屬性字符串

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

3. 操作(Operation)

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

(1) 可見性

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

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

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

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

(2) 操作名

描述所屬類的行為的動詞或動詞短語。約定同屬性名。

(3) 參數(shù)表

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

(4) 返回類型

絕大部分編程語言只支持一個返回值,即返回類型至多一個。

4. 接口(Interface)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

五、小練習——簡易聽歌系統(tǒng)類圖

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

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

 

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

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

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

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

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

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

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

      來自上海 回復(fù)
  3. 給你點贊,沒有系統(tǒng)學習過UML,在你這邊看到滿滿的干貨,很受用

    回復(fù)
  4. 例子里面的符號沒有懂,+ ()

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

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

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

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

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

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

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

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

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

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

      來自北京 回復(fù)
    4. 畫了這個整個架構(gòu)會清晰很多

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

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

    來自北京 回復(fù)