StartUML繪制類圖實現(xiàn)(StartUML)

簡介StartUML

??StarUML是一種生成類圖和其他類型的UML圖表的工具恳守。本文是一個使用StarUML創(chuàng)建類圖(Java語言描述)的簡明手冊。

??StarUML,是一種創(chuàng)建UML類圖,并能夠自動生成Java的“stub code” 的工具顷歌。StarUML也可以做JAVA逆向工程,以產(chǎn)生相應(yīng)的UML圖表幔睬。

??在本教程中眯漩,我們將使用StarUML設(shè)計一個pizza餅。執(zhí)行后續(xù)步驟麻顶,可以創(chuàng)建如下面所示的UML圖赦抖。StarUML可以生成反映類結(jié)構(gòu)的代碼,而不是任何對象的具體實現(xiàn)辅肾。因此队萤,在使用StarUML創(chuàng)建圖表后,你還應(yīng)該為此stub code添加剩余的功能性代碼矫钓,填寫每種方法本來應(yīng)該做的事要尔。

原文鏈接:https://www.flyne.org/article/379

StartUML具體實現(xiàn)

效果圖
  • 新建工程

    1. 添加新工程

    ??啟動StarUML舍杜,然后一個名叫“New Project By Approach”的對話框會彈出,選擇“Empty Project”赵辕,在右邊的“Model Explorer”面板中可以看到新建的“Untitled”工程既绩,工程的屬性可以在下方的Properties面板中修改(工程名、作者等)还惠。

    2. 添加模型

    ??通過“Model”主菜單饲握,或者在Model Explorer面板的工程上右擊,依次” Add — Model ”

    3. 添加類圖

    ??通過“Model”主菜單蚕键,或右擊選定模型救欧,依次“Add Diagram — Class Diagram”。

    4. 設(shè)置profile(UML輪廓)

    ??通過“Model — Profile…”菜單去設(shè)置工程所需的profile锣光。這決定了工程所使用的規(guī)則和約定笆怠。一定要包含”JAVA Porfile”這一項目。

    5. 保存工程

    ??立即就保存工程誊爹,這樣在出現(xiàn)問題的時候骑疆,就不會丟失信息。

    從“File ”菜單替废,選擇“Save” ,并選擇一個地方以保存工程泊柬。你的StarUML項目現(xiàn)在應(yīng)該看起來的是這樣的:

  • 開始畫圖

    1. 創(chuàng)造圖表
    ??現(xiàn)在椎镣,開始真正創(chuàng)造圖表,從默認(rèn)就在屏幕的左邊的“Toolbox”面板選擇“類”圖標(biāo)兽赁,然后左鍵單擊diagram窗口的某處状答。這樣就使用通用名字創(chuàng)造了一個新的類。雙擊刀崖,將類改名為Circle惊科。

    2. 添加屬性

    ??右擊圖中的目標(biāo),在彈出菜單中選擇“Add”中的“Attribute”(被標(biāo)示為綠色)亮钦,為其添加一個屬性(或者域)馆截,填入期望的名字“_radius”。

    • 在窗體右下邊的Properties面板中蜂莉,找到“Type”輸入框蜡娶,輸入double作為_radius屬性的類型。

    • 類的內(nèi)部數(shù)據(jù)(域/屬性)都是私有的映穗,因為他們是嚴(yán)格由類內(nèi)部使用的窖张。所以,在Properties面板中將_radius設(shè)置為“私有”蚁滋。

    3. 繼續(xù)進(jìn)行設(shè)計

    ??重復(fù)同樣的過程宿接,添加名為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.
    

    4. 創(chuàng)造 IShape interface
    ??從toolbox中梢卸,選擇“Interface”,并點擊圖表的某處碎赢。將其改名為IShape低剔。創(chuàng)建以后,選中它肮塞。

    • 在頂部工具欄襟齿,選擇 “Stereotype Display” 下拉按鈕,將值改變?yōu)椤癗one”枕赵。
      這將改變默認(rèn)的圓形形狀猜欺,使其變?yōu)槌砷L方形。

    • 還是在頂部工具欄拷窜,取消選中” Suppress Operations “开皿。這將使我們能夠看到接口所擁有的方法。

    • 向IShape 接口添加返回值為double的getArea方法篮昧。

      ??設(shè)定返回值類型(☆)赋荆。在“Model Explorer”中展開IShape節(jié)點,右擊你剛剛創(chuàng)建的getArea方法懊昨,并選擇“Add Parameter”窄潭。在“Properties”框中,將參數(shù)的名子變?yōu)榭战桶洌瑢ⅰ癉irectionKind”變?yōu)椤癛ETURN”嫉你,將“Type”變?yōu)閐ouble。

      ??將IShape和getArea的IsAbstract屬性框打上勾躏惋,他們在圖標(biāo)上的名字將變?yōu)樾斌w幽污。這是UML的標(biāo)準(zhǔn),表示這是接口或者其他抽象實體簿姨。

    5. 添加類和接口的關(guān)系

    ??可以通過從toolbox中選擇表示“Realization”的箭頭距误,并從Circle拖拽向IShape,使Circle實現(xiàn)接口IShape款熬。重復(fù)同樣的過程深寥,為Rectangle添加實現(xiàn)關(guān)系。這是添加了Circle 和 Rectangle對于IShape接口的實現(xiàn)關(guān)系贤牛。

    ??小技巧:如果想使連接線表現(xiàn)為直角的方式惋鹅,右擊連接線,并選擇” Format — Line Style — Rectilinear”菜單殉簸。你通過這種方式闰集,使箭頭重疊在一起沽讹,可以使你的圖看起來更整潔。

    6. 添加類基于接口的行為

    ??由于Circle和Rectangle類都實現(xiàn)了IShape接口武鲁,就必須有同樣的行為(方法)爽雄。在“Model Explorer”面板中,復(fù)制getArea方法(按Ctrl-C或者右鍵點擊并選擇Copy菜單)沐鼠,并粘貼到Circle和Rectangle類挚瘟。

    ??注意:這些實現(xiàn)了的方法在Circle和Rectangle類中都不是抽象的,而是具體的饲梭,所以取消勾選IsAbstract框乘盖。

    • 現(xiàn)在的類圖看起來應(yīng)該是這樣的:


    7. 添加Pizza類

    ??向Pizza添加double型的私有域_price,添加返回double類型的公有操作getPrice憔涉。

    8. 為Pizza類添加IShape 的引用

    ??從toolbox中選擇” DirectedAssociation “箭頭订框,點擊Pizza類,并向IShape拖拽 兜叨。

    • 選中箭頭穿扳,在右邊的“Properties”框上,將name一欄改為“hasa”国旷,
      “End1.Aggregation” 一欄改為“AGGREGATE”(這個圖示說明Pizza和shape對象是“聚合“的關(guān)系)矛物。

    • 將“End2.Name”一欄改為_shape,將“End2.Visibility”改為私有跪但。
      這樣就自動為Pizz添加一個名字為_shape泽谨,使用IShape接口的私有域。

    ??為_shape創(chuàng)建一個“獲得者”方法特漩,名字叫做getShape,返回IShape 骨杂。這就是創(chuàng)建一個行為涂身,名字是getShape,返回IShape 搓蚪。

    9. 添加構(gòu)造函數(shù)

    • 1.為Pizza添加構(gòu)造函數(shù)蛤售,右擊,在彈出的“Add” 菜單中選擇“Operation”妒潭。從這里悴能,增加一個普通的帶有dboule型price參數(shù)和IShape類型shape參數(shù)的操作。

    • 2.為Circle增加一個帶有double型的radius參數(shù)的構(gòu)造函數(shù)雳灾。

    • 3.為Rectangle增加一個帶有double型width和height參數(shù)的構(gòu)造函數(shù)漠酿。

    • 你的圖現(xiàn)在應(yīng)該是這樣的:


    10. 添加Test_Pizza類

    ??為了說明UML類圖更多的功能,又增加了一個叫做“Test_Pizza”的類谎亩,它用作測試目的炒嘲,并使用到Pizza和IShape類宇姚。

    • ??通過從toolbox中選擇“Dependency”箭頭,從一個類拖向他所以來的類夫凸,來添加不通類之間的依賴關(guān)系浑劳。在這個例子中, Test_Pizza 依賴于Pizza夭拌、Circle和Rectangle類魔熏,因為它實例化了它們。

    • ??從Properties box選擇name屬性鸽扁,或者雙擊圖表上的“依賴線”蒜绽,可以為依賴關(guān)系添加標(biāo)簽。特別的是献烦,當(dāng)一類實例化另一個類滓窍,我們會把依賴線叫做“instantiates”。 你可以選中并拖動依賴線的標(biāo)簽巩那,以達(dá)到更美觀的效果吏夯。

    • ??依賴關(guān)系不會影響代碼生成。

    • ??現(xiàn)在的圖應(yīng)該像本文最開始所示即横。

    11. 保存&導(dǎo)出項目

    ??保存:在“File”菜單中噪生,選擇“Save”。 StarUML的所有資料只有一個單一的項目文件东囚,所以你目前應(yīng)該只有一個文件生成跺嗽。

StartUML高級應(yīng)用

1. 生成Java stub代碼:

??在菜單中依次選擇“Tools — Java — Generate Code”。

  • 從對話框中選擇你的模塊(這里可能Model1),點擊“Next”页藻。

  • 為了使你的模塊或者圖標(biāo)的所有類都生成stub code桨嫁,選擇“Select All”然后按“Next”。

  • 選擇一個有效的輸出目錄份帐,“Next”璃吧。

  • 在“Options Setup” ,請務(wù)必選中“Generate the Documentation by JavaDoc”废境,“Generate empty JavaDoc”畜挨,所有其他復(fù)選框不選中,“Next”噩凹。

  • 現(xiàn)在StarUML將從你的圖產(chǎn)生代碼巴元,點擊“Finish”退出對話框。

  • 現(xiàn)在驮宴,您可以編輯生成的代碼逮刨,以增加應(yīng)用。

2. 添加實現(xiàn)代碼

??正如開頭所說的:StarUML可以生成反映類結(jié)構(gòu)的代碼堵泽,而不是任何對象的具體行動禀忆。因此臊旭,在使用StarUML創(chuàng)建圖表后,你還應(yīng)該為此stub code添加剩余的功能性代碼箩退,填寫每種方法本來應(yīng)該做的事离熏。

3. 逆向工程

??StarUML還可以從現(xiàn)有的Java代碼創(chuàng)建一個類圖,這被稱為“reverse engineering”戴涝。當(dāng)你想從現(xiàn)有的代碼生成圖表滋戳,或者你修改了StarUML生成的代碼,并且想在圖表中反應(yīng)出來的時候啥刻,逆向工程功能就非常有用了奸鸯。

到主菜單欄中選擇“Tools — Java — Reverse Engineer…”,可以將現(xiàn)有的代碼逆向工程可帽。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末娄涩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子映跟,更是在濱河造成了極大的恐慌蓄拣,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件努隙,死亡現(xiàn)場離奇詭異球恤,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)荸镊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門咽斧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人躬存,你說我怎么就攤上這事张惹。” “怎么了岭洲?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵诵叁,是天一觀的道長。 經(jīng)常有香客問我钦椭,道長,這世上最難降的妖魔是什么碑诉? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任彪腔,我火速辦了婚禮,結(jié)果婚禮上进栽,老公的妹妹穿的比我還像新娘德挣。我一直安慰自己,他們只是感情好快毛,可當(dāng)我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布格嗅。 她就那樣靜靜地躺著番挺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屯掖。 梳的紋絲不亂的頭發(fā)上玄柏,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機(jī)與錄音贴铜,去河邊找鬼式散。 笑死买乃,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播豁鲤,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼没宾!你這毒婦竟也來了侠讯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤把介,失蹤者是張志新(化名)和其女友劉穎勤讽,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體劳澄,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡地技,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了秒拔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莫矗。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖砂缩,靈堂內(nèi)的尸體忽然破棺而出作谚,到底是詐尸還是另有隱情,我是刑警寧澤庵芭,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布妹懒,位于F島的核電站,受9級特大地震影響双吆,放射性物質(zhì)發(fā)生泄漏眨唬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一好乐、第九天 我趴在偏房一處隱蔽的房頂上張望匾竿。 院中可真熱鬧,春花似錦蔚万、人聲如沸岭妖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昵慌。三九已至假夺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間斋攀,已是汗流浹背已卷。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蜻韭,地道東北人悼尾。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像肖方,于是被迫代替她去往敵國和親闺魏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,566評論 2 349