uml的九種圖例分析_uml

來源:互聯網
上載者:User
UML圖中類之間的關係:依賴,泛化,關聯,彙總,組合,實現
類與類圖 1) 類(Class)封裝了資料和行為,是物件導向的重要組成部分,它是具有相同屬性、操作、關係的對象集合的總稱。 2) 在系統中,每個類具有一定的職責,職責指的是類所擔任的任務,即類要完成什麼樣的功能,要承擔什麼樣的義務。一個類可以有多種職責,設計得好的類一般只有一種職責,在定義類的時候,將類的職責分解成為類的屬性和操作(即方法)。 3) 類的屬性即類的資料職責,類的操作即類的行為職責


 一、依賴關係(Dependence)

依賴關係(Dependence):假設A類的變化引起了B類的變化,則說名B類依賴於A類。

•  依賴關係(Dependency) 是一種使用關係,特定事物的改變有可能會影響到使用該事物的其他事物,在需要表示一個事物使用另一個事物時使用依賴關係。 大多數情況下,依       賴關係體現在某個類的方法使用另一個類的對象作為參數。 •   在UML中,依賴關係用帶箭頭的虛線表示,由依賴的一方指向被依賴的一方。
public class Driver   {       public void drive(Car car)       {           car.move();       }       ……   }   public class Car   {       public void move()       {           ......       }       ……   }  

依賴關係有如下三種情況:

1、A類是B類中的(某中方法的)局部變數;

2、A類是B類方法當中的一個參數;

3、A類向B類發送訊息,從而影響B類發生變化;


 二、泛化關係(Generalization)

泛化關係(Generalization):A是B和C的父類,B,C具有公用類(父類)A,說明A是B,C的一般化(概括,也稱泛化)

•  泛化關係(Generalization)也就是繼承關係,也稱為“is-a-kind-of”關係,泛化關係用於描述父類與子類之間的關係,父類又稱作基類或超類,子類又稱作衍生類別。 在UML中,泛      化關係用帶空心三角形的直線來表示。 •   在代碼實現時,使用物件導向的繼承機制來實現泛化關係,如在 Java 語言中使用 extends 關鍵字、在 C++/C# 中使用冒號“:”來實現。 


public class Person    {       protected String name;       protected int age;       public void move()        {           ……       }       public void say()       {           ……       }   }   public class Student extends Person    {       private String studentNo;       public void study()        {           ……       }   }  

在UML當中,對泛化關係有三個要求:

1、子類與父類應該完全一致,父類所具有的屬性、操作,子類應該都有;

2、子類中除了與父類一致的資訊以外,還包括額外的資訊;

3、可以使用父類的執行個體的地方,也可以使用子類的執行個體;

 三、關聯關係(Association)

關聯關係(Association):類之間的聯絡,如客戶和訂單,每個訂單對應特定的客戶,每個客戶對應一些特定的訂單,再如籃球隊員與球隊之間的關聯(下圖所示)。


其中,關聯兩邊的"employee"和“employer”標示了兩者之間的關係,而數字表示兩者的關係的限制,是關聯兩者之間的多重性。通常有“*”(表示所有,不限),“1”(表示有且僅有一個),“0...”(表示0個或者多個),“0,1”(表示0個或者一個),“n...m”(表示n到m個都可以),“m...*”(表示至少m個)。

•  關聯關係(Association) 是類與類之間最常用的一種關係,它是一種結構化關係, 用於表示一類對象與另一類對象之間有聯絡。 •   在 UML 類圖中, 用實線串連有關聯的對象所對應的類 ,在使用 Java 、 C# 和 C++ 等程式設計語言實現關聯關係時, 通常將一個類的對象作為另一個類的屬性 。 •   在使用類圖表示關聯關係時可以 在關聯線上標註角色名稱 。
1)  雙向關聯: 預設情況下,關聯是雙向的。

public class Customer   {       private Product[] products;       ……   }   public class Product   {       private Customer customer;       ……   }  

2 )  單向關聯: 類的關聯關係也可以是 單向的 ,單向關聯用 帶箭頭的實線 表示.
public class Customer   {       private Address address;       ……   }      public class Address   {       ……   }     3) 自關聯: 在系統中可能會存在 一些類的屬性物件類型為該類本身,這種特殊的關聯關係稱為自關聯。
public class Node   {       private Node subNode;       ……   }     
4)  重數性關聯: 重數性關聯關係又稱為 多重性關聯關係 (Multiplicity),表示一個類的對象與另一個類的對象串連的個數。在UML中多重性關係可以直接在關聯直線上增加一個數字表示與之對應的另一個類的對象的個數。

表示方式

多重性說明

1..1

表示另一個類的一個對象只與一個該類對象有關係

0..*

表示另一個類的一個對象與零個或多個該類對象有關係

1..*

表示另一個類的一個對象與一個或多個該類對象有關係

0..1

表示另一個類的一個對象沒有或只與一個該類對象有關係

m..n

表示另一個類的一個對象與最少m、最多n個該類對象有關係 (m<=n)

public class Form   {       private Button buttons[];       ……   }    public class Button   {       …   }  


 四、彙總關係(Aggregation)

彙總關係(Aggregation):表示的是整體和部分的關係,整體與部分 可以分開.

•  彙總關係(Aggregation) 表示一個 整體與部分的關係。通常在定義一個整體類後,再去分析這個整體類的組成結構,從而找出一些成員類,該整體類和成員類之間就形成了彙總   關係。 •   在彙總關係中, 成員類是整體類的一部分 ,即成員對象是整體對象的一部分,但是成員對象可以脫離整體對象獨立存在。 在 UML 中,彙總關係用帶空心菱形的直線表示。 

public class Car   {       private Engine engine;       public Car(Engine engine)      {           this.engine = engine;       }              public void setEngine(Engine engine)       {           this.engine = engine;       }       ……   }   public class Engine   {       ……   }  

如:電話機包括一個話筒

       電腦包括鍵盤、顯示器,一台電腦可以和多個鍵盤、多個顯示器搭配,確定鍵盤和顯示器是可以和主機分開的,主機可以選擇其他的鍵盤、顯示器組成電腦;


 五、組合關係(Composition)

組合關係(Composition):也是整體與部分的關係,但是整體與部分不可以分開.

•   組合關係 (Composition)也表示類之間整體和部分的關係,但是組合關係中 部分和整體具有統一的生存期。一旦整體對象不存在,部分對象也將不存在,部分對象與整體對象之    間具有 同生共死的關係。 •  在組合關係中,成員類是整體類的一部分,而且整體類可以控製成員類的生命週期,即成員類的存在依賴於整體類。 在 UML 中,組合關係用帶實心菱形的直線表示。

public class Head   {       private Mouth mouth;       public Head()       {       mouth = new Mouth();       }       ……   }      public class Mouth   {       ……   }  

如:公司和部門,部門是部分,公司是整體,公司A的財務部不可能和公司B的財務部對換,就是說,公司A不能和自己的財務部分開; 人與人的心臟.


 六、實現關係(Implementation)

實現關係(Implementation):是用來規定介面和實線介面的類或者構建結構的關係,介面是操作的集合,而這些操作就用於規定類或者構建的一種服務。

• 介面之間也可以有與類之間關係類似的繼承關係和依賴關係,但是介面和類之間還存在一種實現關係(Realization),在這種關係中,類實現了介面,類中的操作實現了介面中所     聲明的操作。 在 UML 中,類與介面之間的實現關係用帶空心三角形的虛線來表示。

public interface Vehicle    {       public void move();   }   public class Ship implements Vehicle   {       public void move()        {       ……       }   }   public class Car implements Vehicle   {       public void move()        {       ……       }   }  

UML的9中圖例概述

作為一種建模語言,UML的定義包括UML語義和UML標記法兩個部分。

l UML語義:描述基於UML的精確元模型定義。

l UML標記法:定義UML符號的標記法,為開發人員或開發工具使用這些圖形符號和文本文法為系統建模提供了標準。這些圖形符號和文字所表達的是應用級的模型,在語義上它是UML元模型的執行個體。

標準建模語言UML可以由下列5類圖來定義。

l 使用案例圖:從使用者角度描述系統功能,並指出各功能的操作者。

l 靜態圖:包括類圖和對象圖。類圖描述系統中類的靜態結構,不僅定義系統中的類,表示類之間的聯絡,如關聯、依賴、彙總等,也包括類的屬性和操作,類圖描述的是一種靜態關係,在系統的整個生命週期都是有效。對象圖是類圖的執行個體,幾乎使用與類圖完全相同的標識。一個對象圖是類圖的一個執行個體。由於對象存在生命週期,因此對象圖只能在系統某一時間段存在。

l 行為圖:描述系統的動態模型和組成對象間的互動關係,包括狀態圖和活動圖表。狀態圖描述類的對象所有可能的狀態以及事件發生時狀態的轉移條件,狀態圖是對類圖的補充,活動圖表描述滿足用例要求所要進行的活動以及活動間的約束關係,有利於識別並進行活動。

l 互動圖:描述對象間的互動關係,包括時序圖和共同作業圖表。時序圖顯示對象之間的動態合作關係,它強調對象之間訊息發送的順序,同時顯示對象之間的互動;共同作業圖表描述對象間的協作關係,共同作業圖表跟時序圖相似,顯示對象間的動態合作關係。除顯示資訊交換外,共同作業圖表還顯示對象以及它們之間的關係。如果強調時間和順序,則使用時序圖;如果強調上下級關係,則選擇共同作業圖表。

l 實現圖:包括元件圖表和部署圖。元件圖表描述代碼組件的物理結構及各組件之間的依賴關係,元件圖表有助於分析和理解組件之間的相互影響程度;部署圖定義系統中軟硬體的物理體繫結構。

採用UML來設計系統時,第一步是描述需求;第二步根據需求建立系統的靜態模型,以構造系統的結構;第三步是描述系統的行為。其中在第一步與第二步中所建立的模型都是靜態,包括使用案例圖、類圖、對象圖、元件圖表和部署圖等5種圖形,是標準建模語言UML的靜態建模機制。其中第三步中所建立的模型或者可以執行,或者表示執行時的時序狀態或互動關係。它包括狀態圖、活動圖表、時序圖和共同作業圖表等4種圖形,是標準建模語言UML的動態建模機制。

 

首先對UML中的各個圖的功用做一個簡單介紹: 1、使用案例圖     描述角色以及角色與用例之間的串連關係。說明的是誰要使用系統,以及他們使用該系統可以做些什麼。一個使用案例圖包含了多個模型元素,如系統、參與者和用例,並且顯示了這些元素之間的各種關係,如泛化、關聯和依賴。 2、類圖     類圖是描述系統中的類,以及各個類之間的關係的靜態視圖。能夠讓我們在正確編寫代碼以前對系統有一個全面的認識。類圖是一種模型類型,確切的說,是一種靜態模型類型。 3、對象圖     與類圖極為相似,它是類圖的執行個體,對象圖顯示類的多個對象執行個體,而不是實際的類。它描述的不是類之間的關係,而是對象之間的關係。 4、活動圖表     描述用例要求所要進行的活動,以及活動間的約束關係,有利於識別並行活動。能夠示範出系統中哪些地方存在功能,以及這些功能和系統中其他組件的功能如何共同滿足前面使用使用案例圖建模的商務需求。 5、狀態圖     描述類的對象所有可能的狀態,以及事件發生時狀態的轉移條件。可以捕獲對象、子系統和系統的生命週期。他們可以告知一個對象可以擁有的狀態,並且事件(如訊息的接收、時間的流逝、錯誤、條件變為真等)會怎麼隨著時間的推移來影響這些狀態。一個狀態圖應該串連到所有具有清晰的可標識狀態和複雜行為的類;該圖可以確定類的行為,以及該行為如何根據當前的狀態變化,也可以展示哪些事件將會改變類的對象的狀態。狀態圖是對類圖的補充。 6、順序圖表(順序圖)     順序圖表是用來顯示你的參與者如何以一系列順序的步驟與系統的對象互動的模型。順序圖可以用來展示對象之間是如何進行互動的。順序圖將顯示的重點放在訊息序列上,即強調訊息是如何在對象之間被發送和接收的。 7、共同作業圖表

    和順序圖表相似,顯示對象間的動態合作關係。可以看成是類圖和順序圖的交集,共同作業圖表建模對象或者角色,以及它們彼此之間是如何通訊的。如果強調時間和順序,則使用順序圖表;如果強調上下級關係,則選擇共同作業圖表;這兩種圖合稱為互動圖。 8、構件圖 (元件圖表)     描述代碼構件的物理結構以及各種構建之間的依賴關係。用來建模軟體的組件及其相互之間的關係,這些圖由構件標記符和構件之間的關係構成。在元件圖表中,構件時軟體單個組成部分,它可以是一個檔案,產品、可執行檔和指令碼等。 9、部署圖 (配置圖)     是用來建模系統的物理部署。例如電腦和裝置,以及它們之間是如何串連的。部署圖的使用者是開發人員、系統整合人員和測試人員。 幾種圖的區別:

一:這九種模型圖各有側重,

1:使用案例圖側重描述使用者需求,

2:類圖側重描述系統具體實現;

二:描述的方面都不相同,

1:類圖描述的是系統的結構,

2:順序圖表描述的是系統的行為;

三:抽象的層次也不同,

1:構件圖描述系統的模組結構,抽象層次較高,

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.