天天看點

UML使用者指南(二)----類、關系、圖、接口、包、執行個體

     UML為類提供了圖形表示,強調抽象的最重要的部分。在用UML對類模組化時,要記住: 對最終使用者或實作者來說,各個類都應該映射到某個有形的或者概念性的抽象。一個結構良好的類,應符合如下條件:

     ① 為取自問題或者解域的詞彙中的事物提供明确的抽象

     ② 嵌入一個小的,明确定義的責任集,并且能很好實作它們

     ③ 把抽象的規約和它的實作清楚地分開

     ④ 簡單而且可以了解,并具有可适應性和可擴充性。

概念

1. 可見性:公用的(public)、受保護的(protected)、私有的(private)、包(package)

2. 執行個體範圍和靜态範圍:前者表示每一個執行個體均有它自己的值,後者表示對于類目的所有執行個體,特征的值是唯一的,也稱為類範圍,通過對特性串加下劃線來表示它。

3. 多重性

4. 抽象元素、葉子元素和多态性元素

把一個類名寫為斜體表示是抽象的;指派leaf,表示它是葉子操作,意味着該操作不是多态的,不可以被覆寫(這類似于java中的final操作)。除了leaf之外,還有:查詢(query),操作不會改變系統的狀态;順序(sequential),調用者必須在對象外部進行協調;監護(guarded),通過将所有對象監護操作的所有調用順序化;并發(concurrent),靜态(static);

5. 屬性

[可見性] 屬性名 [':' 類型] ['['多重性']'] ['=' 初始值] [特性串 {',特性串}]

6. 操作

[可見性] 操作名 ['('參數表')'] [':' 傳回類型] [特性串 {',特性串}]

模闆類

模闆是一個被參數化的元素,最常見的用法是詳述可以被執行個體化為特殊元素的容器,并保證它們的類型是正确的。在UML中,模闆類的畫法與普通類一樣,隻是在類的圖示的右上角帶有一個附加的虛框。

在UML中繪制類目時,要遵循如下政策:

僅顯示語境中對了解抽象來說重要的類目特征

選擇類目的意圖提供最佳可視化提示的衍型化的版本。

關系

 1.依賴(dependency)

是UML中的語義關系,其中一個元素(獨立元素)發生變化會影響到另一個元素(依賴元素)的語義。

 2.關聯(association):

是類之間的結構關系。兩個類之間的簡單關聯表示了兩個同等地位類之間的結構關系,這意味着這兩個類在概念上是同個級别,一個類并不比另一個類重要。

有時候要對"整體/部分"關系模組化,其中一個類描述了一個較大的事物       ("整體"),它由較小的事物("部分")組成。這就是組合和聚合。

A.聚合:它描述了"has-a"關系,意思是整體對象擁有部分。它被表示為一個整體的一端有一個空心菱形修飾的簡單關聯。

B.組合:是聚合的一種形式,它具有強的擁有關系,而且整體與部分的生命周期是一緻的。一旦建立,它們就是同生共死。

    3.泛化(generalization):是一種特殊/一般關系。

 4.實作(realization):是類目之間的語義關系,其中一個類目指定了由另一個鈴木保證執行的合約。

下面給出一個學校的資訊系統中的一組類:

在用UML繪制關系時,要遵循如下政策:

僅顯示對了解特定的成組事物必不可少的關系。避免使用多餘的關系。

在軟體方面,有5種互補視圖對于軟體體系結構的可視化、詳述、構造、和文檔化是最重要的,分别是:用例圖、設計圖、互動圖、實作圖和部署圖。

結構圖:可以把系統的靜态方面看做是對系統的相對穩定的骨架的表示。UML的結構圖大緻上是圍繞着對系統模組化時發現的幾組主要事物來組織的。

① 類圖

展示了一組類、接口、協作以及它們之間的關系。

② 構件圖

展示了實作構件的内部部件。、連接配接件和端口

③ 組合結構圖

展示了類或者協作的内部結構。

④ 對象圖

展示了一組對象已經它們之間的關系。用對象圖說明在類圖中所發現的事物的執行個體的資料結構和靜态快照。

⑤ 制品圖

展示了一組制品以及它們與其他制品、與它們所實作的類之間的關系。

⑥ 部署圖

展示了一組結點以及它們之間的關系。

行為圖:把系統的動态方面看作是對系統變化部分的表示。

① 用例圖(use case diagram)

描述了一組用例和參與者以及它們之間關系。可以用用例圖表述系統的靜态用例視圖。

② 順序圖(sequence diagram)

強調消息的時間次序的互動圖。

③ 通信圖(communication diagram)

強調收發消息的對象的結構組織的互動圖。

④ 狀态圖(state diagram)

展示了一個由狀态、轉換、事件和活動組成的狀态機。

⑤ 活動圖

展示了計算機中一步步的活動六。

一個結構良好的圖,應該滿足如下要求:1.僅包含對于了解這個方面所必須的元素。2.不過分簡化,以免讀者誤解重要的語義。

對複雜的視圖模組化,要遵循一下政策:

① 确信無法在更高的抽象層次上表達這些資訊

② 如果已經盡可能地隐藏了能夠隐藏的細節,但圖仍然很複雜,就考了把一些元素組織到一些包或者較高層次的協作中,然後僅把這些包或者協作畫在圖中。

③ 如果仍然複雜,就用注解和色彩作為可視化提示。

④ 如果圖還是很複雜,就列印出來挂在牆上。

接口

接口詳述了類或構件的合約而不指定其實作。一個類或構件可以實作多個接口。提供服務的成為供接口(provided interface)。類似地,一個類所需要的來自其他類的服務集合是它的需接口(required interface)。

這個構件提供了3個接口:IUnkown、Component3、Component4。IUnkown接口是展開形式,另外兩個以簡單形式。還需要兩個接口,即ITransaction、Component2。ITransaction為展開形式。

在UML中,把組織模型的組塊稱之為包。它不能執行。包可以擁有其他元素,這些元素可以是類、接口、構件、結點、協作、用例和圖,甚至是其他包。

在包Vision中有一個名為Camera的類,而包Vision又在包Person中。類Camera的全名為Person::Vision::Camera。

應該記住,包隻是為了幫助組織模型的元素。如果在實際系統中有些抽象表明它們本身就是對象,就不要使用包。

執行個體

執行個體(instance)是抽象的具體表現,可以對它施加一組操作,而且它可能由一組狀态,用以存儲操作的結果。

繼續閱讀