從java源碼生成UML圖

1. 什么是UML

定義:

統(tǒng)一建模語言(英語:Unified Modeling Language耻姥,縮寫 UML)是非專利的第三代建模和規(guī)約語言匆光。UML是一種開放的方法采转,用于說明堡纬、可視化、構(gòu)建和編寫一個(gè)正在開發(fā)的试幽、面向?qū)ο蟮捏莶稀④浖芗到y(tǒng)的制品的開放方法。UML展現(xiàn)了一系列最佳工程實(shí)踐铺坞,這些最佳實(shí)踐在對(duì)大規(guī)模起宽,復(fù)雜系統(tǒng)進(jìn)行建模方面,特別是在軟件架構(gòu)層次已經(jīng)被驗(yàn)證有效济榨。wiki

關(guān)系分類

參考博客

  1. 泛化關(guān)系 generalization (繼承非抽象類)


    _generaliza_1522321862_17956.png
  2. 實(shí)現(xiàn)關(guān)系 realize (實(shí)現(xiàn)接口)


    _realize_1522321880_1174.png
  3. 聚合關(guān)系 aggregation 整體和部分不是強(qiáng)依賴的坯沪,即使整體不存在了


    _aggregatio_1522321931_21434.png
  4. 組合關(guān)系 composition 組合關(guān)系是一種強(qiáng)依賴的特殊聚合關(guān)系,如果整體不存在了擒滑,則部分也不存在了


    _compositio_1522321902_17777.png
  5. 關(guān)聯(lián)關(guān)系 association (在最終代碼中腐晾,關(guān)聯(lián)對(duì)象通常是以成員變量的形式實(shí)現(xiàn)的;)


    _associatio_1522321961_10400.png
  6. 依賴關(guān)系 dependency 臨時(shí)性


    _dependency_1522321977_8593.png

2. 生成UML

使用Amateras[失敗]

參考博客, 使用amaterasUML
因?yàn)闆]有安裝GEF, 所以需要先安裝 GEF.
參考博客, 在線安裝方法

按照教程把jar包復(fù)制到plugins目錄里面了, 但是就是用不了, 奇怪. 于是打算使用papyrus

使用papyrus[半成品]

安裝Papyrus

在線安裝網(wǎng)址 http://download.eclipse.org/modeling/mdt/papyrus/updates/releases/oxygen/
主頁
論壇

然后參考這個(gè)網(wǎng)站

  1. 根據(jù)網(wǎng)站指導(dǎo)更新好pypas
    (http://download.eclipse.org/modeling/mdt/papyrus/components/designer/)
    (https://hudson.eclipse.org/papyrus/view/Designer/job/papyrus-designer-oxygen/lastSuccessfulBuild/artifact/releng/org.eclipse.papyrus.designer.p2/target/repository/)
    選擇其中一個(gè)就行了
    _update_sel_1522323548_32557.png

生成UML圖

  1. 新建一個(gè) papyras Model, 就會(huì)得到一個(gè) class diagram
  2. 將想要逆向的package直接用鼠標(biāo)拖到 class diagram中就可以得到各個(gè)class的塊, 不過類之間的關(guān)系看不見, 如下:
    _classes_no_1522323753_26498.png
  1. 顯示類之間的關(guān)系: 右鍵 / Filters/showAllRealatedLinks, 不過只能看到realize關(guān)系......

  2. 發(fā)現(xiàn)一片文章講的非常清楚查看原文

  3. 根據(jù)上面的文章總結(jié)一些常用的功能:

    1. CTRL+A: 全選
    2. 全選后CTRL+F5: show/hide comparts.
    3. 全選后F4: 設(shè)置class/interface 對(duì)應(yīng)的圖顯示內(nèi)容(field and methods)
  4. 找到了一個(gè)SO 題主和我有相似的需求. 有空再看看吧

使用class visualizer[成功]

參考上面的Stack Overflow, 嘗試使用class visualizer, 發(fā)現(xiàn)可以滿足我的需求.

使用步驟

  1. 下載軟件解壓, 在cmd中cd到對(duì)應(yīng)目錄
  2. 由于我的是maven project, 所以只需要執(zhí)行如下指令即可:
clsvis.bat -cp "C:\Users\[USER]\.m2\repository" "[MAVEN_PROJECT_PATH]\target\classes"
  1. 然后就可以進(jìn)入如下界面, 可以查看各個(gè)類/接口之間的關(guān)系.


    _class_visu_1522637198_4900.png

如果不是mavenproject也可以參考網(wǎng)站指導(dǎo)

  1. 可以考錄寫個(gè)bat腳本, 以后想看UML圖的時(shí)候直接雙擊就行了. 對(duì)于不同的lab也只要簡單的改一下路徑就行了. (只用call指令就夠了)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末丐一,一起剝皮案震驚了整個(gè)濱河市藻糖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌库车,老刑警劉巖巨柒,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異柠衍,居然都是意外死亡洋满,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門珍坊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來牺勾,“玉大人,你說我怎么就攤上這事阵漏∽っ瘢” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵履怯,是天一觀的道長川无。 經(jīng)常有香客問我,道長虑乖,這世上最難降的妖魔是什么懦趋? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮疹味,結(jié)果婚禮上仅叫,老公的妹妹穿的比我還像新娘。我一直安慰自己糙捺,他們只是感情好诫咱,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著洪灯,像睡著了一般坎缭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天掏呼,我揣著相機(jī)與錄音坏快,去河邊找鬼。 笑死憎夷,一個(gè)胖子當(dāng)著我的面吹牛莽鸿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拾给,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼祥得,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蒋得?” 一聲冷哼從身側(cè)響起级及,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎额衙,沒想到半個(gè)月后创千,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡入偷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年追驴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疏之。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡殿雪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锋爪,到底是詐尸還是另有隱情丙曙,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布其骄,位于F島的核電站亏镰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拯爽。R本人自食惡果不足惜索抓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望毯炮。 院中可真熱鬧逼肯,春花似錦、人聲如沸桃煎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽为迈。三九已至三椿,卻和暖如春缺菌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背搜锰。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工伴郁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纽乱。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓蛾绎,卻偏偏與公主長得像昆箕,于是被迫代替她去往敵國和親鸦列。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理鹏倘,服務(wù)發(fā)現(xiàn)薯嗤,斷路器,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • 等待的歲月 春風(fēng)十里 小紅等了秋水七年纤泵,她說:我沒有幾個(gè)七年好等了骆姐。淚奔。小紅和秋水之間一直都是小紅在主動(dòng)捏题,幫他毆...
    南國倦客閱讀 264評(píng)論 0 0
  • 已經(jīng)不記得是什么時(shí)候開始,一直都是和雙手過的性生活循狰,做愛的滋味已經(jīng)好久不見了窟社,說起來比較難過。 13年畢業(yè)到現(xiàn)...
    梟逝009閱讀 867評(píng)論 2 3
  • 少數(shù)人認(rèn)識(shí)自已绪钥, 多數(shù)人認(rèn)識(shí)別人灿里。 交朋結(jié)友須以誠心相待, 修樓挖井先從地面開始程腹。 麾下缺兵是個(gè)光桿司令匣吊, 目中無...
    坦人閱讀 445評(píng)論 32 68
  • 因?yàn)槲乙芈尻栆惶耍缟洗缌剩覀冐硪黄鸪鲩T缀去,爸爸送你去上學(xué),我去火車站甸祭,你坐在電動(dòng)車后面缕碎,在路口跟我揮手告別。 回去...
    素面迎風(fēng)閱讀 71評(píng)論 0 0