Learn UML with JUDE(中文版)

 原文地址:http://jude.change-vision.com/jude-web/download/try_uml.html

   我希望你能夠使用 JUDE去學習和體驗 UML JUDE是一個建模工具,你可以用它去畫 UML。下面我會指導你通過一些實例去學習使用 JUDE來畫 UML

一、 Overview

  l     UML and UML tools
 l     Description of JUDE
 l     Installation of JUDE
 l     Fundamental Components and Basic Operation of JUDE
 l     UML about Bowling
 l     Draw UseCase Diagram
 l     Draw Activity Diagram
 l     Draw Class Diagram
 l    Draw Sequence Diagram
 l     Other Diagrams
 l     Features of JUDE

二、 UML and UML tools

當你畫UML的時候,是直接手畫還是使用工具呢?使用工具的話我們可以利用工具本身的一些有利條件,比如:

   1、  可以讓你畫一個乾淨的diagram;
2、  元素的尺寸可以畫的比較合適;
3、  方便和其它人分享、交流你的UML模型;
4、  在需要的時候你可以重複的執行undo或redo操作;
5、  當你的 diagram 不符合 UML 規範時,會給你一個警告提示;
6、  數據可以通過多種方式輸入(圖表,樹形結構圖等等);
7、  數據可以很容易的被重用;
8、  你可以管理所有的數據和它們之間的關係;

如 果你是初學UML,你會發現第四和第五條對你非常有用。因爲出現的錯誤可以很容易的被“undo”,所以你能畫出比較完善的UML。同樣,當你創建了一個 抽象類時,抽象類的類名將會根據規範的要求自動以斜體的方式進行顯示。使用JUDE繪畫UML將會使你從中得到很多有利的條件,JUDE將會成爲你學習 UML的導師,去嘗試一下吧。記住,如果你畫錯了,你總是可以使用“Undo”來重新畫的。

三、 Description of JUDE

現 在有很多UML工具可以供你使用,我比較喜歡的是“JUDE/Community”(JUDE代表Java and UML Developer's Environment)。我是有點偏心的,因爲我是JUDE開發團隊的成員,開發和完善JUDE已經多年了。我想讓更多的人使用JUDE,並像我一樣去 喜歡上它。
      
   
    JUDE 有兩個版本 :JUDE/Community(免費版)和JUDE/Professional(商業版)。JUDE具有以下的特性:

  l         JUDE/Community 支持所有基於UML1.4的diagram;

  l         JUDE/Professional 支持所有基於UML1.4的diagram,一些UML2.0的規範和E-R圖(E-R圖從JUDE/Professional version3.2開始支持);

  l         無限的UNDO/REDO操作;

  l         拖拽操作,自由切換使用“Map View”以方便編輯較大的diagram;

  l         自動生成類圖和model的信息;

 

   更多的關於JUDE的特性,請參考:JUDE/Community page

四、 Installation of JUDE

現在讓我們來安裝JUDE。要運行JUDE首先需要安裝Java環境。

   1 、系統要求
  

OS:

Windows 2000, XP, Vista

CPU:

Pentium III 600MHz or higher

Memory:

256MB or more

Java Environment
(Required):

Sun Microsystems
J2SE 1.4.1_07 or JDK5.0
(JDK 5.0 is supported since JUDE/Community 3.1)


JUDE 可以運行在windows,Linux和Mac的J2SE環境中,但是我們沒有測試過所有的發行版環境,因此,我們推薦你在windows中安裝JUDE。如 果你需要安裝在windows之外的系統的相關信息,請參考FAQ

   2 、安裝Java環境

如果你的機器上已經安裝了Java環境,那麼你可以跳過這部分內容;如果沒有,那請到SUN的網站上下載並安裝Java環境。注意以下事項:

l         確保安裝的java版本滿足要求。JUDE可能不能在未支持的Java版本中工作;

l         確保安裝的J2SE中包含了JRE(JUDE默認使用JRE)。

   3 、下載JUDE

Download page 上選擇最新版本的jude-community-x_x-setup.exe(大約5M)進行下載。(順便說一下,在這篇文章中我使用的是JUDE/Community 3.2)。

   4 、安裝JUDE

下載完成後,雙擊安裝JUDE,安裝嚮導會讓你指定需要安裝在的位置。

        

   如果你使用的是Win98或ME,你需要使用文本編輯器打開jude.bat文件,設置JUDE/HOME變量的絕對路徑。jude.bat在JUDE的安裝目錄中。

   5 、運行JUDE

從windows的開始菜單中運行JUDE。當啓動JUDE的時候會顯示下面這個圖標。
         
     

五、 Fundamental Components and Basic Operation of JUDE

下面我會通過截屏來指導你進行一些基本的操作。

              

   1
、基礎組件

  l         管理視圖
    
管理視圖包括整個project相關的功能按鈕,比如:文件操作、編輯和一些經常使用的工具條。

  l         Diagram 編輯器
   
Diagram 編輯器用於編輯diagram和model。你可以同時打開多個diagram。

  l         結構樹視圖
   
以樹型結構的方式顯示model。你能夠通過model元素的彈出菜單來執行各種不同的操作。

  l         繼承樹視圖
   
以樹型結構的方式顯示model中類之間的繼承關係。

  l         Map 視圖
   
Map 視圖對在Diagram編輯器中已經打開的diagram提供了概覽。可以在這個區域進行拖拽以在Diagram編輯器進行顯示。這個功能對較大的diagram是非常有用的。

  l         Property 視圖
   
Property 視圖用於顯示和編輯model元素的properties。

   2 、創建一個新的project

在 JUDE中,UML數據以.jude的後綴進行保存。這些文件被稱作project文件。第一次運行JUDE時是沒有project打開的。現在就讓我們 創建一個新的project。從主菜單中選擇[File] - [New],當你創建了一個新的文件時,結構樹視圖和Property視圖就會顯示出來了。
         

新 的project在名爲“no_title”的package中創建了用例圖和類圖。“no_title”的package對應java中的默認 package。在這個指南中我們將不使用輸出java的特性。名稱爲java的package關聯java的API,並且持有一些基本的類,比 如:String和Vector等。這些類s

   3 、創建package和Diagram

通常在結構樹視圖中通過彈出菜單來創建一個新的package。要創建一個新的diagram的話,從結構樹視圖的彈出菜單中選擇[Create Diagram]或者從主菜單中選擇[Diagram]。

   在JUDE/Community(3.2)中你可以創建以下這些diagram:

  l         Class diagram

  l         UseCase diagram

  l         Statechart diagram

  l         Activity diagram

  l         Sequence diagram

  l         Collaboration diagram

  l         Component diagram

  l         Deployment diagram

 也支持Object diagram,Package diagram和Robustness diagram。

    4 、如何創建和編輯

 使用JUDE畫diagram的操作和其它的畫圖工具基本一樣,如果你沒有使用過畫圖工具,那我們現在就開始學習使用吧。

六、 UML about Bowling

現在都準備好了,我們可以開始畫diagram了。我們畫什麼diagram呢?你最近有去打過保齡球嗎?我非常享受我們公司前幾天舉辦的保齡球賽,我猜很多人都打過保齡球,所以我們就用保齡球來作爲這個UML的主題吧。讓我們來畫一個保齡球的計分系統的UML。
      

   這裏有一些要求:

  l         一旦比賽開始就顯示保齡球分數的跟蹤記錄;

  l         選手每次扔出保齡球后就更新分數;

  l         選手在比賽時能改變分數;

  l         當有人發起攻擊時顯示一個動畫;

我們的目的是體驗使用UML建模工具去畫UML,diagram畫的是否完美並不重要。那麼就讓我們開始吧。

七、 Draw a UseCase diagram

現在讓我們開始畫圖吧。我們以一個用例圖作爲開始,我們畫一個下圖這樣的diagram。
          

打開一個用例圖將會伴隨打開一些默認的project文件。在結構樹視圖的Usecase Diagram上點右鍵,選擇[Open Diagram],或者雙擊在Diagram編輯器中打開。
          

在Diagram編輯器中,這裏有一個工具按鈕面板可以編輯diagram。
      

如 果你想知道每個按鈕的作用,你可以把鼠標放在這個按鈕上,懸浮的提示信息將會顯示對這個按鈕的描述。在Diagram編輯器中,你可以用這些按鈕切換畫圖 的模式,比如:當你想在Diagram編輯器中移動一個元素,打開[select mode]你就可以選擇你想移動的元素執行移動操作了;如果你想連續的創建某個確定的元素,你可以切換模式到[Lock Selected Mode]等等。
 

Button

Description

Select Mode. 當這個模式打開時,你就可以對某個元素執行選擇、編輯、移動和改變大小的操作了。

Lock Selected Mode. 使你能夠連續的創建所選擇的元素。比如:你在打開Lock Selected Mode時創建一個Actor,一旦你在Diagram編輯器中添加了一個Actor,你就可以連續的創建更多的Actor。

Set Relation End to the center of the item. It places the ends of lines. (e.g. Associations, Generalizations, or Dependencies) at the center of Model Elements.

在工具面板上選擇Actor,然後在Diagram編輯器中的任何地方點擊後將創建一個Actor,輸入“Player”作爲這個Actor的name。現在讓我們像創建Actor一樣再創建三個用例。 你可以拖拽他們移動元素所在的位置,當你想重命名他們的時候,雙擊這個元素的名稱即可。

 

   現在我們來畫Actor和三個用例之間的連線。每條線都有它們自己的意義,我們在這裏需要一條稱作Association的線。在工具面板上選擇 Association按鈕去創建一個Association,你有兩次點擊操作,分別是點擊開始目標和結束目標。首先,點擊“Player”這個 Actor,然後在“Start the Game”這個用例上點擊,現在一條association線就畫在了“Player”和“Start the Game”之間了,然後再按這種方式創建兩條association線。現在再添加一個長方形,並寫上“Bowling Score System”就完成了這個diagram了!

小提示:取消association操作

當你在畫association線時點擊在了錯誤的目標上,按下[ESC]或者右鍵就可以重做,該方法適用於兩個元素之間的任何連線,比如:Generalizations、Generalizations和Dependencies。

你 可能注意到當你在Diagram編輯器創建用例和Actor時也添加在了結構樹視圖中,同樣在Diagram編輯器或者結構樹視圖中選擇元素時,它們的 property也顯示在了左下角的Property視圖中,你可以在這幾個地方修改數據:Diagram編輯器,結構樹視圖,Property視圖,選 擇 使用對你來說最方便的一個。

讓我們使用Property視圖來更改用例圖的名稱,在結構樹視圖中選擇“UseCase Diagram”,它的property將會顯示在Property視圖中,將它的名稱改爲“Bowling UseCase Diagram”再按下[Enter]就完成了。

小提示:刪除元素

要刪除Actor或者用例,從它們的彈出菜單中選擇[Delete from Model]或者[Delete from Diagram],提供兩種方式刪除元素是因爲像Actor和用例這樣的元素可以和其它的diagram共享,也可被用於其它的diagram。

[Delete from Diagram]
Ctrl+D

僅從當前的diagram中刪除元素,在model中依然保留。

[Delete from Model]
Delete

從所有的diagram中完全刪除。


小提示:縮放和滾動

我 將會給你介紹JUDE中用於查看操作的特性。如果我們只是畫較小比例的用例圖,那麼在視圖中不需要用這個特性。當在處理較大比例的diagram時,特別 是你需要在diagram的某些部分進行修改,JUDE的這個特性可以非常容易的進行該操作。希望顯示的區域可以在JUDE的Diagram編輯器中用右 鍵拖拽,使你可以對角的移動它們,在主菜單中選擇[View]或者使用工具條可以進行放大或縮小,也可以使用Map視圖指定顯示你想看到的區域。

小提示:撤銷和重做

JUDE 的撤銷和重做的特性可以讓你重複執行100次!如果你到現在爲止都沒有用過撤銷,去嘗試一下看看它是怎麼工作的!在你畫圖的時候不用擔心畫錯了,這是件多麼舒心的事!

八、 Draw an Activity Diagram

現 在讓我們着重在“Display the Score”用例,在活動圖中畫出它的流程。首先,你需要在你的project文件中添加一個活動圖,選擇“Display the Score”用例,然後在彈出菜單中選擇[Create Diagram] - [Add Activity Diagram],一個新的活動圖將會被添加,並且在Diagram編輯器中打開。
     

把活動圖命名爲“Behavior of displaying Scores”。活動圖在工具條中有下面這些按鈕:
      

現在讓我們來畫一個下面這樣的活動圖。
         

活動圖和流程圖非常相似,它描述了事件如何流動和連接到下個動作。在這個活動圖中,描述了在選手扔出保齡球后執行的事件,以及計算將要顯示的分數。從這個活動圖中,你將會得知在選手全中後會顯示一個動畫。

讓我們開始創建除箭頭外的所有元素,你可以像之前創建Actor和用例一樣去創建它們,從工具面板選擇元素,然後在Diagram編輯器中點擊創建它們。你可以在Diagram編輯器或者Property視圖中將EntryAction設置爲ActionState。

調整大小

“Calculate numbers of knocked out pins”在ActionState中以一行顯示的話過長,所以讓我們調整一下這個ActionState的大小,讓它的名稱換行顯示。調整元素的大小只需要選擇元素的一個角進行拖拽。
      

現 在讓我們添加元素之間的箭頭以顯示這些動作之間的流程,這個箭頭稱作Transition。要畫一條Transition,你可以像在用例圖中畫 Association一樣點擊兩個目標進行連接,但是你需要小心創建時點擊的順序,我馬上會告訴你如何連續的創建T ansition。

小提示:連續的創建

l         方法1:在工具面板上打開[Selected Mode];

l         當創建元素的時候按住[Shift];

你能連續創建它們了嗎,這對你來說非常有用,也非常容易。[Strike]是Transition的guard的值,點擊Transition箭頭,然後在Property 視圖的Guard列中輸入“Strike”。
    

下面我將會介紹如何畫出清晰的diagram的三個技巧。

小提示:多選

這裏有三種方式在Diagram編輯器中進行多選。

l         方法1:在多個元素上拖拽出一個長方形的選擇域,長方形中的所有元素都將被選中;

l         方法2:在diagram的彈出菜單中選擇[Select All];

l         方法3:在選擇多個元素時按住[Shif];

小提示:線性對齊

在 JUDE中元素可以縱向和橫向對齊,使用[Align vertical center]讓左邊的元素垂直對齊(除了“Show an animation”),讓diagram看起來整齊一點,可以用鼠標拖出一個長方形包圍所有目標元素以選中它們,然後從主菜單選擇 [Alignment] - [Align Vertically] - [Align Vertical Center]或者選擇主菜單下的工具條中的按鈕。

小提示:線條樣式

在JUDE中有兩種類型的線條。

Normal Line Style (Default):

用直線或多角折線連接diagram 中的元素

Right Angle Line Style:

使用直角線連接diagram中的元素

線 條樣式默認設置爲[Normal Line Stile],然而[Right Angle Line Style]有時看起來比較好,那麼我們爲什麼在這個活動圖中不用[Right Angle Line Style]呢,選擇所有的線條,然後在它的彈出菜單中選擇[Line Style] - [Normal]或者在工具條中選擇按鈕。
     

九、 Draw a Class Diagram

    現在我們來畫一個類圖。類圖和序列圖是UML中最常用的兩種diagram,所以我們要比之前的學習多花點時間。

               

    這個類圖着重在分析保齡球比賽和它的分數上,描述了一個保齡球比賽由10個Frame構成,除了最後一個Frame有三次擲球外,其它的每個Frame都只有兩次擲球。首先,我們把類圖的名字更改爲“Analysis Class diagram”。

    類圖的工具條中有下面這些按鈕。

     

     現在讓我們先畫出輪廓,然後再添加詳細的信息。首先需要創建六個類,你可以像創建Actor和用例一樣去創建它們。從關聯的兩個類中下面那個類開始的箭頭 稱作“Generalization”,當創建Generalizations的時候,需要先在開始目標上點擊一下。

    上面這個類圖中的關聯除了Generations外,還有一種虛線被稱作“Associations”,現在讓我們開始畫這些Associations。 在Game類和Frame類之間這種線被稱作“Composition”,表明是Game是由Frame組成的,如果沒有Frame,那也就不存在 Game。

如何設置Association的Property

     Association有很多property可以設置,比如:Aggregation、Composition、Multiplicity等等。在這個case中,你需要設置Game類的Composition。

  • 方法1:拖拽工具面板上的Association按鈕;
  • 方法2:在Association的彈出菜單中設置;
  • 方法3:在Association的Property視圖中設置;

    現在我們採用第二種方法,從彈出菜單中設置Association。

          

    選擇不同的association顯示的彈出菜單也是不同的,點擊結束於Game類的association連線,你就可以設置Game類的property了。

    現在讓我們在Property視圖中設置Multiplicity,當在Diagram編輯器中選擇Association時,這個 Association的property就會顯示在Property視圖中(看下面的圖例),然後你就可以修改Multiplicity了。

          

    當你設置multiplicity時要注意這裏針對association的不同目標顯示了兩個role選項卡,請確保你選擇的是正確的。在這個case中,選擇Target爲“Frame”的選項卡,然後設置multiplicity爲10。

    現在讓我們來給這些類添加屬性和方法吧。

添加類屬性

    現在讓我們給Frame類添加三個屬性,我們可以通過三種方法執行該操作。

  • 方法1:在Diagram編輯器中使用彈出菜單;
  • 方法2:在project視圖中使用彈出菜單;
  • 方法3:使用這個類的Property視圖;

    在Diagram編輯器中選擇Frame類,並且在它的彈出菜單中選擇[Add Attribute],然後輸入“Pin numbers on 1st throw”作爲屬性的名稱,你可以使用同樣方式添加更多的屬性,也可以嘗試使用另外兩種方法作爲練習。如果你想刪除一個屬性,你可以從Property 視圖或者結構樹視圖中去刪除它們。屬性的可見性默認爲private,類型默認爲void,你可以使用Property視圖去改變他們。你還可以使用快捷 鍵“Ctrl+F”添加屬性(添加操作的快捷鍵是“Ctrl+M”)。

添加類方法

    你可以像操作屬性一樣去添加或者編輯類的方法,也可以在Property視圖中添加類的方法。

         

    在Property視圖中按下[Add]按鈕即可添加方法,要編輯所添加方法的信息,可以使用Property視圖或者選中所添加的方法點擊[Edit] 按鈕,你就會看到非常詳細的Property視圖,可以編輯其中所有的信息,比如這個方法的參數。當選中某個方法時,按下[Delete]按鈕就可以執行 刪除操作,按下[Edit]按鈕就會打開一個編輯該方法所有Propety的對話框。使用[Up]和[Down]按鈕可以調整方法顯示的順序。

    當你添加完“Calculate knocked down pins”方法和“Pin numbers : int”屬性後,該類圖就完成了。到目前爲止感覺如何?我們主要的目的是學習使用JUDE去畫UML的diagram,所以不要擔心技術細節,繼續下個章 節吧。

十、 Draw a Sequence diagram

    現在讓我們畫一個序列圖,顯示組成Game類的“Calculate knocked down pin numbers”對象的操作時序。序列圖可以在結構樹視圖中添加在用例或者操作的下面,選擇“Calculate knocked down pin numbers”方法,然後在彈出菜單中選擇[Add Sequence diagram]。

           

    這個diagram描述了當“Player”擲出保齡球后一系列操作的時序。“Ball Throw Checker”對象首先計算擊中了多少個保齡球,然後去“Game”對象進行登記,如果全部被擊中的話,“Display the Score”對象就會顯示一個動畫。如果是畫一個類似的活動圖會有一些不同,在序列圖中,是按時間順序進行顯示的,以豎座標表示時間,橫座標表示不同的對 象。

    序列圖的工具面板如下圖:

       

    序列圖的工具面板中的按鈕和我們之前看過的其它圖的有一些不同,所以操作的元素也會和之前的圖有所不同。

    首先,按上圖創建五個對象,先不要急於完成,我還想告訴你一些事情:我們可以像之前一樣選擇工具面板上的按鈕去創建對象,但是在序列圖中創建這些對象有更簡便的方法,使用結構樹視圖!在結構樹視圖中選擇基類,然後拖入Diagram編輯器中的序列圖。

        

    你也可以在結構樹視圖中選擇多個類一次全部拖入Diagram編輯器中。

    現在我們開始創建消息,從“Player”到“Ball Throw Checker”的消息是個異步消息,在工具面板上選擇從左數第四個按鈕,然後在“Player”的生命線上點擊一下,再點擊一下“Ball Checker”,消息就畫出來了!雙擊名稱“message0”將其更改爲“Throw”,接下來創建消息“1.1 Count number of knocked down pins”,和創建“Throw”類似,我們選擇工具面板上左數第三個按鈕創建一個從“Ball Throw Checker”發往自己的同步消息(稱作SelfMessage)。當你創建異步消息的時候,是點擊在生命線上,但是創建同步消息時是點擊在 Activation上。

         

關聯消息和操作

    操作可以關聯消息,例如,當一個操作的名稱在類圖中被更改時,如果該操作有被關聯的消息,則消息也將自動被更改。要在消息和操作之間進行關聯,選擇消息 後,在Property視圖中設置操作。我們現在創建一個“Calculate numbers of knocked out pins”消息和操作之間的關聯。

         

    如果有些操作已經被關聯到了發送消息的基類“Ball Throw Checker”,這些操作將會顯示在Operation欄中,如果消息沒有可關聯的操作,你可以用Property視圖中的[New]按鈕添加一個目標 操作,按下[Property]按鈕將會顯示出你所選擇的操作的所有property,你可以修改它的名稱和參數。你不需要總是對操作和消息進行關聯,只 要遵照其它圖去確定操作和消息間的關聯就可以了。現在讓我們去創建其它的消息。

小提示: Activation 的尺寸

    你可能注意到每次添加或移動一個新消息時,Activation都變長了,這是因爲在UML規範中要求原始Activation需要比接受消息的目標 Activation要長,所以你每次添加了新消息時,JUDE都會自動進行調整。JUDE建議增長Activation而不讓他們變短,你可以自己將它 們變得短一點,你可以像在活動圖中調整ActionState那樣去改變Activation的大小,選擇Activation,然後拖住它的一個角進行 調整,這個方法適用於除異步外所有消息的Activation。

十一、 Other Diagrams

    這裏有關於保齡球的協作圖和狀態圖。

                                                協作圖

      

     這個協作圖表達了你之前畫的序列圖中的相互動作。

                               協作圖工具面板

         

                                                             狀態圖

         

    這個狀態圖顯示了比賽是如何進行的。

                                                       狀態圖工具面板

        

十二、 Features of JUDE

    JUDE有很多在這裏沒有介紹的特性,去嘗試下面的這些特性:

  • 導出Java骨架代碼
  • 導入Java源文件
  • Java源文件生成模板
  • 在結構樹視圖中拖拽替換Model
  • Boundary、Control和Entity Classes的符號標記
  • 設置元素的默認顏色
  • 設置模式的默認顏色,可能在JUDE的系統屬性中。
  • 通過拖拽Association線的角改變Association的目標。
  • 向Microsoft Office中貼圖
  • 導入JUDE的model。

    《Learn UML with JUDE》系列文章到此就結束了,由於時間關係,有些地方翻譯的還不夠準確,有空的時候再來潤色一下。JUDE當前最新的版本是5.5B1,但本文中所使 用的版本是3.2,所以有些按鈕或操作會和文中的描述有些出入,但也很容易對號入座。在翻譯這篇文章的同時,也讓我瞭解了JUDE的使用,確實是款出色的 建模工具,推薦大家使用。

發佈了55 篇原創文章 · 獲贊 10 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章