【UML】Java代码与UML模型相互转换方法


最近重温了一下设计模式,看到大家的博客里面都是Java代码+UML视图,UML表达整体框架,然后再秀出具体的代码,点面结合、一目了然。所以也研究了一下Java代码与UML模型相互转换方法。

一、常用的UML建模工具

  • 三大建模工具可以参考:
  • 三者都能非常好的支持UML的建模,由于和Eclipse或者IDEA等代码IDE集成不太方便或者不可行,所以没有深入研究

二、Java、UML建模与反向工具推荐

  • 十二个开源UML工具推荐:http://developer.51cto.com/art/200911/161814.htm
  • 6 个 Java 项目的 UML 反向工程工具:https://www.oschina.net/news/32803/6-java-to-uml-tools
  • 开源UML工具推荐:
  • 各种工具,说的天花乱坠,实际在Eclipse插件中根本安装不了或者安装完成之后各种使用不了,吐槽一下Eclipse插件管理的混乱。
  • 折腾了几天之后,发现Papyrus、ObjectAid这两个Eclipse插件的效果还可以,基本可以满足需求。

三、Papyrus使用

  • 安装参考:

    https://www.eclipse.org/papyrus/download.html

    https://www.eclipse.org/papyrus/downloads/index.php

    http://www.eclipse.org/downloads/download.php?file=/modeling/mdt/papyrus/downloads/drops/3.3.0/R201803070505/Papyrus-Update-3.3.0.zip&protocol=http

    http://www.eclipse.org/downloads/download.php?file=/modeling/mdt/papyrus/downloads/drops/1.0.2/R201502180839/Papyrus-Update-1.0.2.zip&protocol=http

    https://wiki.eclipse.org/Papyrus_User_Guide#Create_a_new_Model

    http://wiki.eclipse.org/Java_reverse_engineering

    http://wiki.eclipse.org/Java_Code_Generation
  • Java反向生成的UML示例:
  • 只能显示基本的接口实现关系,有点失望。但是这个工具建模能力,模型生成Java代码的能力很强。还是很推荐的!!!

四、ObjectAid使用

  • ObjectAid主要用于Java代码反向UML
  • 安装参考:
  • https://blog.csdn.net/shifangwannian/article/details/49105375

    http://www.objectaid.com/           比较好用,高级功能需要LICENSE,如:导出图形

    https://stackoverflow.com/questions/51786/how-to-generate-uml-diagrams-especially-sequence-diagrams-from-java-code 推荐工具

    http://green.sourceforge.net/        2011年更新

    http://plantuml.com/                    国内的,持续更新

    http://developer.51cto.com/art/200911/161814.htm

    https://www.oschina.net/news/32803/6-java-to-uml-tools

    https://www.cnblogs.com/tk55/p/6194141.html
  • Java反向生成的UML示例:

  •  

  • 相比较Papyrus,反向UML的效果更好,能够生成稍微隐藏一点儿的关系
  • Eclipse里面,推荐使用Papyrus进行UML建模,使用ObjectAid反向Java代码到UML

五、IDEA终极版的UML视图功能

  • 该功能只在IDEA Ultimate版本提供,需要付费,只能免费试用
  • 安装参考:
  • https://www.jetbrains.com/help/idea/navigating-through-a-diagram-with-the-file-structure-view.html
  • https://stackoverflow.com/questions/51786/how-to-generate-uml-diagrams-especially-sequence-diagrams-from-java-code#
  • 选中包、目录、或者Java文件之后按住Ctrl+Alt+U即可调出Diagram视图,如下:

  •  

  • 唉,,,还是商业版本软件好,效果吊炸天,接口与实现、对象委托等关系全部能够分析展示出来!!!