JUDE 的使用指南 (UML建模工具)

之一 OVERVIEW/UML

這篇文章是在經過了 整理網絡上大量資料的整理以後完成的,首先要先註明的是必須要感謝美麗的爪哇島博客的這篇文章http://www.blogjava.net/askcuix/archive/2009/02/22/256109.html,也正是因爲有了這篇文章纔有了我現在的想法,而我這篇文章也是對該博主的支持,轉載和盜用之處,不甚感激。

該文檔將分五個部分寫出來,因爲寫一篇很長的資料怕大家不方面看,也沒耐心看,所以我做了編排,話不多說,開始吧:

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

一、Overview

lUML and UML tools
lDescription of JUDE
lInstallation of JUDE
lFundamental Components andBasic Operation of JUDE
lUML about Bowling
lDraw UseCase Diagram
lDraw Activity Diagram
lDraw Class Diagram
lDraw Sequence Diagram
lOther Diagrams
lFeatures 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”來重新畫的。

 

JUDE 的使用指南 (UML建模工具)之二

三、Description of JUDE

現在有很多UML工具可以供你使用,我比較喜歡的是“JUDE/Community”(JUDE代表Java and UML Developer's Environment)。

JUDE有兩個版本:JUDE/Community(免費版)和JUDE/Professional(商業版)。JUDE具有以下的特性:

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

lJUDE/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的時候會顯示下面這個圖標。

JUDE 的使用指南 (UML建模工具)之三

五、Fundamental Components and Basic Operation of JUDE<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

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


1、基礎組件

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

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

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

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

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

lProperty視圖
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等。這些類可以被用來作爲一些屬性的類。

3、創建package和Diagram

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

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

lClass diagram

lUseCase diagram

lStatechart diagram

lActivity diagram

lSequence diagram

lCollaboration diagram

lComponent diagram

lDeployment diagram

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

4、如何創建和編輯

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

JUDE 的使用指南 (UML建模工具)之四

6 UML about Bowling

現在一切都成立,我們已經準備好畫圖。我們應該畫個什麼圖?你曾經去過的保齡球了嗎?我自己享受我公司舉行保齡球比賽的其他日子。我想大多數人都大喫一驚。因此,讓我們使用了UML的這次主題的保齡球。讓我們繪製了系統的UML顯示保齡球分數。

Bowling Score


這裏是請求:
一旦遊戲已經開始顯示出一個保齡球評分軌道。
拋球以後實時更新的球員得分。
玩家在遊戲過程中可以改變分數。
顯示一個動畫/提示,當有人提出的停止或暫停。

我們的目的是試圖在這裏使用UML建模工具設計我們遇到的UML。至於是否可以繪製最完美的圖表,這並不重要。那麼讓我們開始了。你準備好了嗎?

Draw a UseCase diagram

現在讓我們開始繪製圖表,我們要開始繪製一個用例圖,如下所示。

UseCase diagram

打開一個用例圖,與默認的項目文件來。右鍵用例圖點擊,然後選擇[打開圖]在彈出的菜單或雙擊它來打開圖編輯器中的用例圖。


在圖編輯器,有一個圖表的按鈕來編輯工具面板。

放置鼠標指針在按鈕,如果你想知道是什麼按鈕,工具提示會顯示該按鈕的描述。在圖編輯器,你會得出圖使用這些按鈕開關模式。例如,當您移動圖編輯器中的元素,然後開啓[選擇模式]選擇你想要移動的元素,那麼你可以移動它們。如果你想創建某個元素不斷,切換模式[鎖定所選模式] ...等。


    

選擇模式。在此模式時,您可以選擇,編輯,移動
  和項目的改變大小。


    

鎖定選擇的模式。它使您能夠不斷地craete選定的元素。例如,如果您創建一個演員沒有鎖定選擇模式,一旦你在圖編輯器中添加一個演員,你將不得不選擇該演員並在此再次創造另一個演員。然而,當鎖定選擇模式打開以後上,焦點將停留在演員上,你可以在不需要選擇演員的情況下利用創建工具盤連續多個演員。


設置項目核心的關聯性結束。這行結束的地方。

選擇工具欄上的演員按鈕,然後在圖編輯器的任意位置按一下,創建一個。爲這個演員輸入“玩家“的名字。
現在,讓我們只創建三UseCases就像剛纔創建演員的方式。
我們可以通過拖曳的元素,當你想重新命名,只是雙擊該元素的名稱點擊。
現在,讓我們在演員和三個UseCases之間劃出一條線。每一行都有自己的含義。現在我們需要的就是一行也叫做組合。選擇一個工具盤組合按鈕。要創建一個組合,你必須點擊兩次,第一次點擊在開始目標和並且另外一次點擊在最終目標。首先,在“玩家”演員單擊,然後點擊“開始遊戲“用例。現在,一個關聯線的繪製的在“玩家”演員和“開始遊戲“用例之間就形成了。然後,再創建兩個組合就像剛纔你做的一樣。現在添加一個矩形,把文本“保齡球分數制“寫入該矩形內部,來完成該圖的繪製!

提示:在組合關聯製作過程中取消

如果你要繪製一個關聯線,因爲失誤你在錯誤的目標點擊了,按[ESC]鍵或右鍵單擊可以取消並重作。它適用於任何項目兩個要素之間,比如:概括,體會和依賴。

您可能已經注意到,當您在圖編輯器中創建時UseCases和演員添加在結構樹中。並且,無論是在圖編輯器或結構樹中,所選項目的屬性,將會在左窗格底部顯示,這就是屬性視圖。您可以修改數據在幾個領域,在圖編輯器,結構樹,性能視圖,在任何地方都視最適合你的作品的個案而定。

讓我們使用屬性查看和改變這個用例圖名字。在結構樹中選擇“用例圖“,用例圖的屬性將顯示在屬性視圖。它的名稱設置爲“保齡球用例圖“,然後按[Enter]鍵來完成。

提示: 刪除元素

要想刪除演員或UseCases,可以從彈出菜單中選擇[從模型中刪除]或[從圖中刪除]。這兩種方法可以刪除元素是因爲演員和UseCases元素可以與其他圖表分享以及使用在其他圖表中。

[Delete fromDiagram]
    Ctrl+D

僅僅從獲取焦點的視圖中刪除,這種模型使用在項目模型中。

[Delete from Model]
    Delete

它從所有途中完全刪除目標文件。

提示:縮放和滾動

我會向你介紹JUDE用來觀看操作功能。由於我們剛剛制定用例圖中是小規模的,所以沒有必要使用視圖的功能。或許當您處理大型圖表時,你將不得不把焦點放在圖的某些部分而要去進行修改。恰好如此,JUDE有一項功能,使得這項操作非常簡單。在JUDE圖編輯器中,顯示的區域可以指定爲一個向右的退拽。它使您移動圖對角距離。要放大或縮小,從主菜單中選擇[查看]或使用工具欄。若想指定一個區域以顯示你想看到的,你可以在項目中使用瀏覽地圖查看。 (左上方窗格)。

提示:撤消和重做

JUDE的撤消和重做功能至少可以讓你恢復100次!

如果到目前爲止,你還沒有使用撤消,試一試,看看它是如何工作!所以畫圖表時沒有必要擔心犯錯誤。多愜意!

Android用戶界面設計:使用片段

Android 3.0引入的新的片斷(Fragment)API,讓我們更容易地創建動態用戶界面。在這個教程中,我們學習如何將一個兩屏的ListView轉換成WebView流,以適應大屏幕的單屏流設計,比如在平板設備中。

這篇文章的節奏將比我們的入門教程更快一些。如果你對基本的Android控件或概念不熟悉你可能需要複習這個網站上我們其它的一些教程,甚至是Android
API參考。最終的開源代碼可以在Google code上下載到。

片段簡介

在我們開始之間,讓我們在更高的層次上定義一下什麼是片段。通常來說,片段是一大塊用戶界面,它具有自己的生存週期。如果它聽起來像一個Activity,那是因爲它確實很像一個Activity。然而,片段與Activity不同,片段必須存在於Activity之內。片段不須要在它每次初始化的時候與同一個Activity配對,這使它具有一些靈活性。與Activity一樣,片段也無需包含任何用戶界面。

步驟0:開始

這個教程假設你讀過我們的列表視圖教程,你可以下載那個教程的代碼,並完成一些任務,然後開始,也可以直接下載這個教程的代碼直接開始。

步驟1:重新設計界面

下圖示意了我上在列表視圖教程中所提到的文章閱讀應用,我們還沒有考慮並使用片段:

這個流程在相對小屏幕上運行得很不錯。然而,在大屏幕上,比如Motorola
Xoom平板的10寸屏幕上,在列表視圖上卻浪費了很多空間。WebView看起來正常,但是有點枯燥。

這就是要引入片段的地方:在大屏幕上,我們可以提供更有效的用戶界面,如果我們可以在同一屏上顯示ListView和WebView。當用戶點擊左邊“面板”的列表視圖中的某一項時,右邊的WebView更新顯示相應的內容。這種工作流程經常用於email或文檔或RSS閱讀器。下圖就是重新設計之後的界面示意圖:

步驟2:轉換爲基於片段的設計

現在我們知道了新的流程應該如何設計,我們也知道當前的兩個活動必須轉換成片段。我們將分幾步來完成這個轉換。第一步保持界面樣子不變,只是使用片段修改每個界面內容。一個片段將包含當前的ListView,另一個包含WebView。然後我們再轉到單個屏幕的實現,修改ListView和WebView之間的消息傳遞。

首先,將你的程序的項目構建目標改變Android 3.0。在Eclipse中,右鍵點擊項目並選擇“屬性”。點擊Android部分並選中Android
3.0。我們不使用任何Google API,所以Android開源項目版本足夠了。然後點擊“確定”按鈕。

現在你就可以訪問新的API了,包括片段API。

注意:在將來的教程中,我們將討論如何使用新的兼容層來使得像片段API這樣的技術在更早版本的Android設備上也能工作。但是現在它只能運行在Android
3.0設備上。

步驟3:創建片段類

創建兩個Java類來代表兩個片段:ListView界面和WebView界面。將它們命名爲TutListFragment和TutViewerFragment。TutListFragment將繼承ListFragment類,TutViewerFragment只是繼承Fragment類。

在TutListFragment類中,我們需要重寫兩個方法:
onListItemClick()和onCreate()。這些方法的內容看起來應該很熟悉,它與之前我們講過的TutListActivity類的代碼一致。這個代碼很快就要修改,但是現在暫時不需要,下面是當前TutListFragment類的代碼:

@Override public void onListItemClick(ListView l, View v, int position, long id) { String[] links = getResources().getStringArray(R.array.tut_links); String content = links[position]; Intent showContent = new Intent(getActivity().getApplicationContext(), TutViewerActivity.class); showContent.setData(Uri.parse(content)); startActivity(showContent); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(ArrayAdapter.createFromResource(getActivity() .getApplicationContext(), R.array.tut_titles, R.layout.list_item)); }

TutViewerFragment類更簡單一些。我們基於當前片段運行在同一個活動下並且直接從Fragment類內問部獲取目標數據的事實。添加一個重寫onCreateView()方法。這個方法的代碼應該看起來像這樣:

@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Intent launchingIntent = getActivity().getIntent(); String content = launchingIntent.getData().toString(); WebView viewer = (WebView) inflater.inflate(R.layout.tut_view, container, false); viewer.loadUrl(content); return viewer; }

直接訪問活動實例的能力非常有用,但是在後面會引起一個問題。如果這個片段存在於帶有列表片段的界面上會怎麼樣呢?在那樣的情況下,就會沒有啓動目標來獲取URL。類似的在TutListFragment中,只要當用戶點擊一個列表項時我們都直接啓動一個新的Activity。如果TutViewFragment在同一個活動中存在什麼怎麼樣呢?如果這樣的話,啓動一個新的活動就沒有意義了。我們將在這個教程的後面回過頭來解決這個問題。

步驟4:添加片段佈局資源

現在創建一個新的名爲“tutlist_fragment.xml”的佈局文件來表示包含文章列表的片段。片段佈局資源使用你創建的Fragment類的標籤和引用。

xmlns:android="http://schemas.android.com/apk/res/android"android:name="com.mamlambo.tutorial.tutlist.TutListFragment"android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/tutlist_fragment">

接下來,創建一個類似的佈局文件,叫做tutview_fragment.xml:

xmlns:android="http://schemas.android.com/apk/res/android"android:name="com.mamlambo.tutorial.tutlist.TutViewerFragment"android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/tutview_fragment">

步驟5:更新Activity類

TutListActivity和TutViewerActivity類必須修改。TutListActivity類只有一個方法,onCreate(),現在需要修改它來加載你在前一步創建的合適的片段佈局資源,如下:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tutlist_fragment); }

TutListActivity應該繼承Activity類,而不是ListActivity類。

TutViewerActivity類也需要類似的修改,它的onCreate()方法現在看起來像這樣:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tutview_fragment); }

步驟6:檢查你的進度

嘗試現在運行程序。你會發現它和以前一樣。沒什麼值得興奮的,不是麼?然而,整個用戶界面現在使用片段來運行了。這使你需要做的下一步修改更加平滑,我們添加一個新的佈局來組合兩個片段以在一個界面上顯示。然而可能你也注意到了,片段之間的通信的處理和我們文章之間的通信一樣。事實上,我們每個片段對應的活動保持不變。當一個活動包含並管理兩個片段時,這將不符合需求。首先讓我們來修復它。

步驟7:改變TutListFragment通信

像你在步驟3中學到的一樣,從TutListFragment對象直接啓動一個活動不再有效了。WebView
UI可能與列表是同一個活動的一部分——總之那就是我們對於大屏幕的計劃。在那種情況下,我們只想在第二個片段中更新WebView的URL。

做這些修改,我們需要做幾件事情。首先,我們讓片段不依賴於它們所在的活動。要做到這一點,在TutListFragment類中添加一個偵聽器,如下:

public interface OnTutSelectedListener { public void onTutSelected(Uri tutUri); }

然後通過更新onListItemClickListener()方法來觸發它,如下:

@Override public void onListItemClick(ListView l, View v, int position, long id) { String[] links = getResources().getStringArray(R.array.tut_links); String content = links[position]; tutSelectedListener.onTutSelected(Uri.parse(content)); }

接下來讓TutListActivity類實現OnTutSelectedListener接口,如下:

public class TutListActivity extends Activity implements TutListFragment.OnTutSelectedListener { ... @Override public void onTutSelected(Uri tutUri) { Intent showContent = new Intent(getApplicationContext(), TutViewerActivity.class); showContent.setData(tutUri); startActivity(showContent); }

現在我們分離了片段的功能,這些功能用於處理用戶界面,作爲控制器的活動,向下一個活動傳遞數據。我們後面要修改onTutSelected()方法來決定是否啓動一個新的活動實例或者更新現有的片段實例。

步驟8:改變TutViewerFragment通信

現在讓我們把注意力轉到TutViewerFragment類上,它的代碼也需要修改。片段不再查詢啓動目標來找出加載哪個URL,而是等待被通知要加載哪個URL。在樣,我們可以直接修改WebView而不需要每次加載都重新創建片段。

首先,修改TutViewerFragment類,讓它包含一個叫做updateUrl()的方法:

public void updateUrl(String newUrl) { if (viewer != null) { viewer.loadUrl(newUrl); } }

其次,刪除所有onCreateView()方法下的功能,除了inflate()的調用。在TutViewerActivity類中,添加這些功能檢索Intent然後調用updateUrl()方法,如下:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tutview_fragment); Intent launchingIntent = getIntent(); String content = launchingIntent.getData().toString(); TutViewerFragment viewer = (TutViewerFragment) getFragmentManager() .findFragmentById(R.id.tutview_fragment); viewer.updateUrl(content); }

此時此刻,程序的行爲還是沒有變化。然而通過進一步的代碼,片段現在可以共存在同一個活動中或者分開。

步驟9:添加雙片段佈局

現在讓我們來創建帶有兩個片段的佈局,以供特定情況使用。在layout-land目錄(你可能需要自己創建),粘貼一份tutlist_fragment.xml。它將對橫屏和豎屏提供不同的佈局。豎屏模式將保持不變。編輯這個文件如下:

xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"> android:name="com.mamlambo.tutorial.tutlist.TutListFragment"android:layout_width="0dp"android:layout_height="match_parent"android:id="@+id/tutlist_fragment"android:layout_weight="45"> android:name="com.mamlambo.tutorial.tutlist.TutViewerFragment"android:layout_width="0dp"android:layout_height="match_parent"android:id="@+id/tutview_fragment"android:layout_weight="55">

這將界面分隔成水平地兩個片段(左右結構)。

步驟10:添加動態選項

現在我們可以爲程序添加一些簡單的邏輯,可以在啓動一個新的活動(雙屏模式)和更新存在的片段(單屏模式)之間切換。

爲了達到這個目的,更新TutListActivity類的onTutSelected()方法如下:

@Override public void onTutSelected(String tutUrl) { TutViewerFragment viewer = (TutViewerFragment) getFragmentManager() .findFragmentById(R.id.tutview_fragment); if (viewer == null || !viewer.isInLayout()) { Intent showContent = new Intent(getApplicationContext(), TutViewerActivity.class); showContent.setData(Uri.parse(tutUrl)); startActivity(showContent); } else { viewer.updateUrl(tutUrl); } }

我們所做的就是獲取片段並檢查它是否是現存的佈局的一部分。如果不是,查看器活動啓動,否則更新已存在的片段。

步驟11:運行最新的使用片段的程序

到此,程序將有兩種模式:豎屏保持不變,橫屏顯示列表位於WebView的左側。現在可以做幾個改進,但是隻是做微調,優化。比如,如果你在豎屏WebView模式下並旋轉屏幕,結果還是隻有WebView界面。你必須點擊返回以獲得雙面視圖。程序修正不在這個教程講述的範圍,但是你可以發現,如果使用適當的佈局並且加上一些活動邏輯,你可以對於不同的屏幕和設備做到非常強大和靈活。

總結

片段API幫助組織用戶界面組件,以使它們可以實現跨活動重用。這樣,程序可以在相對少的代碼量下,動態地適應它的流程和用戶界面。你也能看到基於片段構建的代碼更容易重新組織。更值得高興的是,通過Google提供的兼容庫,現在任何程序都可以使用片段了,它甚至兼容到Android
1.6。現在就使用片段來爲每一個屏幕大小和形狀創建你的程序用戶界面吧!

 

 

內容很精彩,關注此空間?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章