1.綜述html
StarUML是一種生成類圖和其餘類型的統一建模語言(UML)圖表的工具。這是一個用Java語言描述的建立類圖的簡明手冊。編輯器
StarUML(簡稱SU),是一種建立UML類圖,並可以自動生成Java的「stub code」的工具。SU也能夠作JAVA逆向工程,以產生相應的UML圖表。函數
在本教程中,咱們將使用SU設計一個pizza餅。執行下列步驟,能夠建立以下面所示的UML圖。SU能夠生成反映類結構的代碼,而不是任何對象的具體行動。所以,在使用SU建立圖表後,你會爲此stub code添加剩餘的功能性代碼,填寫每種方法原本應該作的事。工具
2.安裝佈局
首先,咱們必須先安裝將要使用的軟件。StarUML ,是一個開放源碼軟件, 遵循GPL協議許可(GNU公共許可證) ,並免費提供下載。測試
3.啓動this
安裝之後就能夠啓動該程序。spa
4.添加新工程翻譯
而後,一個名叫:New Project By Approach的對話框會彈出。選擇「Empty Project」而且按下"肯定"。這裏建議你不要勾選"設置爲默認的作法" 複選框。設計
5.選擇模塊
在右邊的「Model Explorer」框中選定「Untitled」模塊。
6.添加模塊
經過「Model」主菜單,或右擊選定的模型,能夠" Add/Design Model "
7.添加類圖
經過「Model」主菜單,或右擊選定模型,能夠「Add Diagram/Class Diagram」:
8.設置profile
經過「Model/Profile...」菜單去設置工程所需的profile。這決定了工程所使用的規則和約定。必定要包含"JAVA Porfile"這一項目。
9.保存工程
當即就保存工程,這樣在出現問題的時候,您就不會丟失信息。
從「File 」菜單,選擇「Save」 ,並選擇一個地方以保存工程。你的StarUML項目如今應該看起來的是這樣的:
10.創造圖表
如今,開始真正創造圖表,從默認就在屏幕的左邊的「Toolbox」選擇「類」圖標,而後左鍵單擊diagram窗口的某處。這樣就使用通用名字創造了一個新的類。雙擊,將類更名爲Circle。
11.添加屬性
右擊圖中的目標,在彈出菜單中選擇「Add」中的「Attribute」(被標示爲綠色),爲其添加一個屬性(或者域),填入指望的名字「_radius」。
l 具體的數據類型,在屬性面板(右下側的窗口) ,由雙打字,在"類型"時段。在窗體右下邊的Properties面板中,找到「Type」輸入框,輸入double做爲_radius屬性的類型。
l 類的內部數據(域/屬性)都是私有的,由於他們是嚴格由類內部使用的。因此,在Properties面板中將_radius設置爲「私有」。
12.繼續進行設計
重複一樣的過程,添加所謂的名字叫作Rectangle的類和double型的私有成員_width和_height。 (下面者段話是使用方面的主意事項,總感受翻譯部太好,九原文搬上來了)You may notice using the "Model Explorer" on the right is faster to add these, but do however note that adding the classes and interfaces themselves in this toolbox (instead of using the toolbox on the left and clicking on the palette to create the object) will not create the objects in the diagram.
13.創造 IShape interface
l 從toolbox中,選擇「Interface」,並點擊圖表的某處。將其更名爲IShape。建立之後,選中它。
l 在頂部工具欄,選擇 「Stereotype Display」 下拉按鈕,將值改變爲「None」。這將改變以往的圓形形狀,使其變爲成長方形。
仍是在頂部工具欄,取消選中" Suppress Operations "。這將使咱們可以看到接口所擁有的方法。
l 向IShape 接口添加返回值爲double的getArea方法。
n 能夠經過右擊interface的圖標,在彈出菜單中點擊紅色的「Operation」按鈕,而後輸入getArea。
n 設定返回值類型。在「Model Explorer」中展開IShape節點,右擊你剛剛建立的getArea方法,並選擇「Add Parameter」。在「Properties」框中,將參數的名子變爲空,將「DirectionKind」變爲「RETURN」,將「Type」變爲dboule。
l 將IShape和getArea的IsAbstract屬性框打上勾,他們在圖標上的名字將變爲斜體。這是UML的標準,表示這是接口或者其餘純虛實體。
14.添加類和接口的關係
l 能夠經過從toolbox中選擇表示「Realization」的箭頭,並從Circle拖拽向IShape,使Circle實現接口IShape。重複一樣的過程,爲Rectangle添加實現關係。這是添加了Circle 和 Rectangle對於IShape接口的實現關係。
n 若是想使鏈接線表現爲直角的方式,右擊鏈接線,並選擇" Format/Line Style/Rectilinear"菜單。你經過這種方式,使箭頭重疊在一塊兒,可使你的圖看起來更整潔。
15.添加類基於接口的行爲
l 因爲Circle和Rectangle類都實現了IShape接口,就必須有一樣的行爲(方法)。
n 在「Model Explorer」面板中,複製getArea法(按Ctrl-C或者右鍵點擊並選擇Copy菜單),並粘貼到Circle和Rectangle類。
n 這些實現了的方法在Circle和Rectangle類中都不是抽象的,而是具體的。這是由於他們其實是執行一些特定行爲(例如,爲一個圓形和長方形分別計算面積) ,因此不要勾選IsAbstract框。
16.你的圖如今應該是這樣的:
17.添加Pizza類
l 向Pizza添加double型的私有域_price。
l 添加返回double類型的共有操做getPrice。
18.爲Pizza類添加IShape 的引用
l 從toolbox中選擇" DirectedAssociation "箭頭,點擊Pizza類,並向IShape拖拽 。
n 選中箭頭,在右邊的「Properties」框上,將name一欄改成「has-a」,「End1.Aggregation」 一欄改成「AGGREGATE」(這個圖示說明Pizza和shape對象是「聚合「的關係)。
n 將「End2.Name」一欄改成_shape 。這樣就自動爲Pizza添加一個名字爲_shape,使用IShape接口的私有域,的所謂_shape型ishape以pizza餅。
n 將「End2.Visibility」改成私有。
l 爲_shape建立一個「得到者」方法,名字叫作getShape,返回IShape 。這就是建立一個行爲,名字是getShape,返回IShape。
19.爲pizza類添加構造函數
l 爲Pizza添加構造函數,右擊,在彈出的「Add」 菜單中選擇「Operation」。從這裏,增長一個普通的帶有dboule型price參數和IShape類型shape參數的操做
l 增長一個輸入參數,就像以前增長了一個返回型的輸出參數同樣,你指定的參數的名稱,如價格和形狀等,以及適當的數據類型。
l 爲Circle增長一個帶有double型的radius參數的構造函數。
l 爲Rectangle增長一個帶有double型width和height參數的構造函數。
20.你的圖如今應該是這樣的:
21.添加Test_Pizza類
爲了說明UML類圖更多的功能,又增長了一個叫作「Test_Pizza」的類,它用做測試目的,並使用到Pizza和IShape類。
l 兩個類之間的關係有多種形式。舉例來講,一個類能夠實例化另外一個類,而不是將其做爲一個成員。又或,一類的方法可能須要另外一個類做爲輸入參數,保留一個引用僅僅是爲這個方法的執行。
l 經過從toolbox中選擇「Dependency」箭頭,從一個類拖向他因此來的類,來添加不通類之間的依賴關係。在這個例子中,Test_Pizza 依賴於Pizza,Circle和Rectangle類,由於它實例化了它們。
l 從Properties box選擇name屬性,或者雙擊圖表上的「依賴線」,能夠爲依賴關係添加標籤。特別的是,當一類實例化另外一個類,咱們會把依賴線叫作「instantiates」。
l 你能夠選中並拖動依賴線的標籤,以達到更美觀的效果。
l 依賴關係不會影響代碼生成。
22.你的圖如今應該像本文最開始所示。
23.對你的圖隨意作些修改。
你還能夠拖動你的類圖,而且使箭頭以不通的方式展現(使箭頭顯示爲直線,選擇一個箭頭,右擊它,彈出菜單中選擇「Line Style」,並選擇「Rectilinear」 )。你必定要體驗這個工具,並去了解它。
24.保存項目
在「File」菜單中,選擇「Save」。 SU的全部資料只有一個單一的項目文件,因此你目前應該只有一個文件生成。
25.導出
將圖表導出爲其餘格式,例如圖片等,是很是有用的。您能夠經過選擇「File」菜單的「Export Diagram」 ,而且選擇合適的文件類型來執行改操做。
26.生成Java stub代碼:
l 點擊主菜單的「Tools->Java」菜單,選擇「Generate Code」。
l 從對話框中選擇你的模塊(這裏可能Model1),點擊「Next」。
l 爲了使你的模塊或者圖標的全部類都生成stub code,選擇「Select All」而後按「Next」。
l 選擇一個有效的輸出目錄,「Next」。
l In the "Options Setup", be sure to check both "Generate the Documentation by JavaDoc" and "Generate empty JavaDoc". All other checkboxes should be unchecked. Then press "Next".在「Options Setup」 ,請務必選中「Generate the Documentation by JavaDoc」,「Generate empty JavaDoc」,全部其餘複選框不選中,「Next」。
l 如今StarUML將從你的圖產生代碼,點擊「Finish」退出對話框。
l 如今,您能夠編輯生成的代碼,以增長應用。
27.添加實現代碼
如今就開始定義程序實際作的事情,例如,爲你圖標中的類描述添加實現代碼。
l 使用DrJava添加代碼,爲相關的類,.Java文件添加代碼。代碼會和你使用HW02是同樣的。(注意:爲Test_Pizza些代碼,最好由DrJava自動生成,而非手工在StarUML裏面建立。咱們這裏只是爲了說明。)
l 記得那IShape的getArea()方法是抽象的,所以沒有代碼。
l 請您像代碼範例同樣添加註釋。這種註釋是「JavaDoc」風格的。 關於JavaDoc您將會在隨後學到更多。
28.逆向工程
StarUML還能夠從現有的Java代碼建立一個類圖,這被稱爲「reverse engineering」,當你想從現有的代碼生成圖表,或者你修改了SU生成的代碼,而且想在圖表中反應出來的時候,逆向工程功能就很是有用了。經過圖表或者DrJava這樣的文本編輯器去反覆工做的過程,稱做「round-trip engineering」。這也是面向對象變成中的一個基本過程。
l 到主菜單欄中選擇「Tools/Java/Reverse Engineer...」,能夠將現有的代碼逆向工程。
l 選擇Java代碼所在的目錄,並點擊「Add」或「Add All」按鈕,將它們包括在逆向工程過程當中,而後單擊「Next」 。
l 選擇你想將類加入的模塊,這裏多是「Model1」,而後「Next」。
l 在Option Setup裏面:
n 確認「public」,「package」,「protected」和「private」是選中的(這是默認設置)。
n 一樣,在默認狀況下,單選按鈕「Create the field to the Attribute」也是選中的。
n 除非你想SU建立其餘東西,例如佈局很糟糕的包含全部類的圖表,不要選中「Create Overview Diagram」框。
n 當你對選項作了檢查後,點擊「Run」。
n SU will now import the classes in the selected files into your model. Click "Finish" to exit the dialog when it is complete.蘇如今進口班,在被選定的文件到你須要的產品型號,點擊"完成"退出對話框時,就完成了。
l SU會向你的模塊添加導入的類,但不是你的圖表。爲了將它添加到您的圖,只須要簡單地從Model Explorer拖動它們便可。