深入淺出UML類圖(一)

來源:互聯網
上載者:User

       在UML 2.0的13種圖形中,類圖是使用頻率最高的UML圖之一。Martin Fowler在其著作《UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition》(《UML精粹:標準對象建模語言簡明指南(第3版)》)中有這麼一段:“If someone were to come up to you in a dark alley and say, 'Psst, wanna see a UML diagram?' that diagram would probably be a class diagram. The majority of UML diagrams I see are class diagrams.”(“如果有人在黑暗的小巷中向你走來並對你說:‘嘿,想不想看一張UML圖。’那麼這張圖很有可能就是一張類圖,我所見過的大部分的UML圖都是類圖”),由此可見類圖的重要性。     

       類圖用於描述系統中所包含的類以及它們之間的相互關係,協助人們簡化對系統的理解,它是系統分析和設計階段的重要產物,也是系統編碼和測試的重要模型依據。

      1. 類

      類(Class)封裝了資料和行為,是物件導向的重要組成部分,它是具有相同屬性、操作、關係的對象集合的總稱。在系統中,每個類都具有一定的職責,職責指的是類要完成什麼樣的功能,要承擔什麼樣的義務。一個類可以有多種職責,設計得好的類一般只有一種職責。在定義類的時候,將類的職責分解成為類的屬性和操作(即方法)。類的屬性即類的資料職責,類的操作即類的行為職責。設計類是物件導向設計中最重要的組成部分,也是最複雜和最耗時的部分。

      在軟體系統運行時,類將被執行個體化成對象(Object),對象對應於某個具體的事物,是類的執行個體(Instance)。

      類圖(Class Diagram)使用出現在系統中的不同類來描述系統的靜態結構,它用來描述不同的類以及它們之間的關係。

      在系統分析與設計階段,類通常可以分為三種,分別是實體類(Entity Class)、控制類(Control Class)和邊界類(Boundary Class),下面對這三種類加以簡要說明:

      (1) 實體類:實體類對應系統需求中的每個實體,它們通常需要儲存在永久儲存體中,一般使用資料庫表或檔案來記錄,實體類既包括儲存和傳遞資料的類,還包括操作資料的類。實體類來源於需求說明中的名詞,如學生、商品等。

      (2) 控制類:控制類用於體現應用程式的執行邏輯,提供相應的業務操作,將控制類抽象出來可以降低介面和資料庫之間的耦合度。控制類一般是由動賓結構的短語(動詞+名詞)轉化來的名詞,如增加商品對應有一個商品增加類,註冊對應有一個使用者註冊類等。

      (3) 邊界類:邊界類用於對外部使用者與系統之間的互動對象進行抽象,主要包括介面類,如對話方塊、視窗、菜單等。

      在物件導向分析和設計的初級階段,通常首先識別出實體類,繪製初始類圖,此時的類圖也可稱為領域模型,包括實體類及其它們之間的相互關係。

      2. 類的UML圖示

      在UML中,類使用包含類名、屬性和操作且帶有分隔線的長方形來表示,如定義一個Employee類,它包含屬性name、age和email,以及操作modifyInfo(),在UML類圖中該類如圖1所示:

圖1 類的UML圖示

      圖1對應的Java程式碼片段如下:

public class Employee {private String name;private int age;private String email;public void modifyInfo() {......}}

      在UML類圖中,類一般由三部分組成:

      (1) 第一部分是類名:每個類都必須有一個名字,類名是一個字串。

      (2) 第二部分是類的屬性(Attributes):屬性是指類的性質,即類的成員變數。一個類可以有任意多個屬性,也可以沒有屬性。

      UML規定屬性的表示方式為:

可見度  名稱:類型 [ = 預設值 ]

      其中:       “可見度”表示該屬性對於類外的元素而言是否可見,包括公有(public)、私人(private)和受保護(protected)三種,在類圖中分別用符號+、-和#表示。       “名稱”表示屬性名稱,用一個字串表示。       “類型”表示屬性的資料類型,可以是基礎資料型別 (Elementary Data Type),也可以是使用者自訂類型。       “預設值”是一個可選項,即屬性的初始值。

      (3) 第三部分是類的操作(Operations):操作是類的任意一個執行個體對象都可以使用的行為,是類的成員方法。

      UML規定操作的表示方式為:

可見度  名稱(參數列表) [ : 傳回型別]

      其中:       “可見度”的定義與屬性的可見度定義相同。       “名稱”即方法名,用一個字串表示。       “參數列表”表示方法的參數,其文法與屬性的定義相似,參數個數是任意的,多個參數之間用逗號“,”隔開。       “傳回型別”是一個可選項,表示方法的傳回值類型,依賴於具體的程式設計語言,可以是基礎資料型別 (Elementary Data Type),也可以是使用者自訂類型,還可以是空類型(void),如果是構造方法,則無傳回型別。

      在類圖2中,操作method1的可見度為public(+),帶入了一個Object類型的參數par,傳回值為空白(void);操作method2的可見度為protected(#),無參數,傳回值為String類型;操作method3的可見度為private(-),包含兩個參數,其中一個參數為int類型,另一個為int[]類型,傳回值為int類型。

圖2 類圖操作說明示意圖

      由於在Java語言中允許出現內部類,因此可能會出現包含四個部分的類圖,如圖3所示:

圖3 包含內部類的類圖

【作者:劉偉  http://blog.csdn.net/lovelion】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.