從學習需求工程與UML開始,就開始接觸到Astah這款軟件,但是當時完全是為了對UML各種圖的了解加深才使用了這款軟件。當時畫圖,都是完全憑借自己想,並沒有考慮實際情況,而且畫的圖都是很簡單的,甚至有些圖是已經給定的,只要在軟件上再畫一遍來了解軟件的使用。所以當時,對與這款軟件並沒有很好的使用。在最近進行軟件項目管理的時候,需要畫類圖,我再次使用了這個軟件。由於這次的工程涉及的類很多(和我之前遇到的相比),所以畫了比較長的的時間,我也從這個軟件中,摸索到了一些我以前沒有發現的東西,在此分享給大家。
Astah的簡單介紹
首先簡單介紹下Astah。Astah在官網http://astah.net/上就直接下載到。進入官網,點擊右上角的Downloads如圖1所示,就可以看到Astah的各種版本了,其中Community版本是免費使用的,我使用的就是這個版本。如果你是個學生也可以Astah for Student,但是需要申請,而且需要Academic Email Address(學術郵箱),我個人認為比較麻煩。但是Community版本版本有些功能是不能用的,這在畫圖中有時候會很麻煩。 Astah的安裝也很簡單,就是最基本的軟件安裝方法。

圖1 Astah官網界面
安裝完成后就可以使用了,點擊進入Astah,最開始出現的界面如圖2所示,這里有各種可供選擇的圖,可以根據自己的需要選擇不同的圖例。當然你也可以在菜單欄的Diagram中選擇要建的圖如圖3所示。

圖2 Astah主界面

圖3 Astah主界面上選擇Diagram
Astah中畫類圖
使用上面介紹的兩種方法的任意一種進入Class Diagram中的畫圖界面,如圖4所示。

圖4 Class Diagram界面
畫圖的要了解的內容:
1、將鼠標放在圖4所示的可選圖標上,可以看到該圖標代表的意思
2、圖標右邊帶小三角形的可以點擊,出現多個備選圖標
3、關於表示關系的圖標,只有關聯的實體被畫出之后才能使用
4、選擇圖標,然后在畫圖區域點擊就可以將想要畫的圖給顯示出來
5、當選擇了表關系的圖標后,想要取消可以點擊箭頭,如圖4所示。
畫圖的經驗總結
1、在類(class)或接口(interface)中快速添加新的attribute(屬性;變量)或者 operation(操作;方法)。
一般情況下添加方法,在繪圖區建立一個類或者接口時,將鼠標放在要添加屬性或者操作的類或者接口上會發現有一個黃色菱形和綠色矩形出現,如圖5,圖6所示。點擊菱形和綠色矩形會分別添加新的屬性和操作。


圖5 Class添加屬性和操作 圖5 interface添加屬性和操作
但是這樣,如果該類或接口的屬性或者方法很多時,每次都要用鼠標來點擊這兩個按鈕,然后再移到剛剛添加的屬性或者操作的位置進行編輯,顯然是很麻煩的。這個時候其實一個回車鍵就可以解決這個問題。當現在的屬性編輯完確認后(以類為例),這個時候該屬性周圍有四個圓圈,如圖7所示,這個時候按回車鍵就可以進入下一個屬性的編輯,如圖8所示。同樣添加操作的方法也是一樣的。在接口中添加方法和操作的方法也是一樣的。


圖7 快速添加屬性1 圖8 快速添加屬性2
2、屬性類型、方法返回類型、方法參數類型的編輯
在Astah中屬性類型、方法返回類型、方法參數類型都是寫在屬性、方法、方法方法參數的后面,並且使用冒號(:)隔開。如下所示是類圖中的一個方法,該方法的返回值是PageResult,訪問權限是pubulic的。其中三個參數:queryHelper,pageNo,pageSize的類型分別為QueryHelper,int,int。
+ getPageResult(queryHelper : QueryHelper, pageNo : int, pageSize : int) : PageResult
似乎每個都要自己手動輸入,是不是覺得很麻煩。但是我畫了幾個類之后,還是發現了一些東西。
(1)屬性和方法參數的類型默認都是int
(2)方法的返回類型默認為void
(3)方法的訪問權限默認為public
(4)屬性的訪問權限默認為private。
所以如果你的要編寫的恰恰就是默認的值的畫,其實你可以不用寫,系統就能夠自動幫你加上。而且你在輸入的時候,也會像在eclipse上編寫java一樣,給你一些提示,你可以直接選擇,也可以自己按“Alt+/”看到提示。當然你也可以在下圖所示的紅色方框區域對屬性,操作等進行編輯,我個人認為還不如自己在圖形上輸入方便。

圖9 屬性操作編輯區
3、接口和類的互相轉換
接口轉換為類:將接口上面的<>刪去即可;
類轉化為接口:選中該類或者將鼠標光標放在該類上,右擊選擇“Add Stereotype”並在出現的編輯框類輸入interface,如圖10所示。按回車鍵完成。
轉化完成后會看到右邊的樹狀結構圖區域相應的圖標也發生了改變。

圖10 類轉化為接口
4、刪除
刪除分為“Delete from Model”和“Delete from Diagram”。前者是徹底刪除了,圖中所有相關部件都會刪除,而后者只是刪除當前圖標。
5、將某一自定義類的類型的參數類型全部改掉
這一部分的意思是,比如你自己寫的兩個類,比如類1,類2,把本應該是類1類型的參數或屬性類型全部寫成了類2,而實際上類2是一個無用的類,完全可以刪去。這個時候肯定不能將類2直接從模型中刪去,直接刪去的畫,以類2為類型的參數類型都會變成默認值,這時候如果類很多,你再想全部改成類1就會很困難了。
這個問題在professional版本的Astah中就很好解決,點擊Edit->search on Diagram查找類2,然后將類型全部改為類1就好了。
但是在Community版本的Astah中並沒有這個功能。這個時候想要保證全部都改正過來了,可以點擊樹狀結構區刪除類2,如果diagram中還存在類2的話,系統會給出提示,如圖11所示不存在的話就可以直接刪除了。但是比較麻煩的是還是需要自己人工去尋找這些參數,並改正過來。

圖11 圖中存在的對象被刪除時
注
以上就是我這次在畫圖中的一些經驗,可能有些都東西一時沒想起來,后期想起來的畫或者有新的發現也會及時的更新。當然這些東西只是我自己總結出來的,可能存在一些問題