【UML】Java代码与UML模型相互转换方法
最近重温了一下设计模式,看到大家的博客里面都是Java代码+UML视图,UML表达整体框架,然后再秀出具体的代码,点面结合、一目了然。所以也研究了一下Java代码与UML模型相互转换方法。
一、常用的UML建模工具
- 三大建模工具可以参考:UML建模工具Visio 、Rational Rose、PowerDesign的比较
- 三者都能非常好的支持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工具推荐:https://www.cnblogs.com/tk55/p/6194141.html
- 各种工具,说的天花乱坠,实际在Eclipse插件中根本安装不了或者安装完成之后各种使用不了,吐槽一下Eclipse插件管理的混乱。
- 折腾了几天之后,发现Papyrus、ObjectAid这两个Eclipse插件的效果还可以,基本可以满足需求。
三、Papyrus使用
- 安装参考:
https://www.eclipse.org/papyrus/download.html
https://www.eclipse.org/papyrus/downloads/index.php
https://wiki.eclipse.org/Papyrus_User_Guide#Create_a_new_Model
- Java反向生成的UML示例:

- 只能显示基本的接口实现关系,有点失望。但是这个工具建模能力,模型生成Java代码的能力很强。还是很推荐的!!!
四、ObjectAid使用
- ObjectAid主要用于Java代码反向UML
- 安装参考:
https://blog.csdn.net/shifangwannian/article/details/49105375
http://www.objectaid.com/ 比较好用,高级功能需要LICENSE,如:导出图形
http://green.sourceforge.net/ 2011年更新
http://plantuml.com/ 国内的,持续更新
http://developer.51cto.com/art/200911/161814.htm
- 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视图,如下:

- 唉,,,还是商业版本软件好,效果吊炸天,接口与实现、对象委托等关系全部能够分析展示出来!!!
【UML】Java代码与UML模型相互转换方法的更多相关文章
- MyEclipse: Java代码与UML自动转换
第一步:新建UML2 第二步:拖拽左边的代码向右侧
- Java中的数据类型及相互转换方法
本文主要讲解两个部分: 一.Java中的数据类型有哪些? 二.数字类型和字符串类型相互转换的方法? 一.Java中的数据类型有哪些: Java中的数据类型有:基本数据类型和引用数据类型: 基本数据类型 ...
- 从 Java 代码逆向工程生成 UML 类图和序列图
from:http://blog.itpub.net/14780914/viewspace-588975/ 本文面向于那些软件架构师,设计师和开发人员,他们想使用 IBM® Rational® Sof ...
- java代码逆向工程生成uml
今天在看一个模拟器的源码,一个包里有多个类,一个类里又有多个属性和方法,如果按顺序看下来,不仅不能对整个模拟器的框架形成一个大致的认识,而且只会越看越混乱,所以,想到有没有什么工具可以将这些个类以及它 ...
- Myeclipse中把java代码导成UML类图
Myeclipse中把java代码导成UML类图 1.右键点击项目名称,选择New-------àUML2 Model 2.给类图命名 3.导成类图 1)如果要把整个项目导成类图,则把整个项目拖到类图 ...
- UML中类关系表示与Java代码中的对应关系
UML中类关系表示与Java代码中的对应关系 1. 类的UML表示法 上图中,Employee 类有两个String类型的私有属性和一个返回值为String类型public 方法 getName(); ...
- 图解Java设计模式之UML类图
图解Java设计模式之UML类图 3.1 UML基本介绍 UML图 UML类图 3.1 UML基本介绍 1)UML – Unified modeling language UML(统一建模语言),是一 ...
- 基于UML网络教学管理平台模型的搭建
一.基本信息 标题:基于UML网络教学管理平台模型的搭建 时间:2013 出版源:网络安全技术与应用 领域分类:UML:网络教学管理平台:模型 二.研究背景 问题定义:网络教学管理平台模型的搭建 难点 ...
- java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法
1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...
随机推荐
- Codeforces 1140F Extending Set of Points 线段树 + 按秩合并并查集 (看题解)
Extending Set of Points 我们能发现, 如果把x轴y轴看成点, 那么答案就是在各个连通块里面的x轴的个数乘以y轴的个数之和. 然后就变成了一个并查集的问题, 但是这个题目里面有撤 ...
- TopCoder SRM502 Div1 500 贪心 01背包
原文链接https://www.cnblogs.com/zhouzhendong/p/SRM502-500.html SRM502 Div1 500 好题. 首先,如果已经确定了解决所有问题的优先级, ...
- NOIP2017提高组Day1T3 逛公园 洛谷P3953 Tarjan 强连通缩点 SPFA 动态规划 最短路 拓扑序
原文链接https://www.cnblogs.com/zhouzhendong/p/9258043.html 题目传送门 - 洛谷P3953 题目传送门 - Vijos P2030 题意 给定一个有 ...
- 将xml 写到内存中再已string类型读出来
System.IO.MemoryStream ms = new System.IO.MemoryStream(); xmlDoc.Save(ms); System.IO.StreamReader sr ...
- 队列queue实现线程的消费者和生产者
import threading import queue import random import time qq = queue.Queue(4) #实例化一个队列,因为是一个进程的线程,所以共资 ...
- Spring中 PROPAGATION_REQUIRED 解释 事物是在一个方法里调用其他的方法,一起成功或者一起失败,是方法之间的关系,而不是某一个方法内部的问题。而且要以抛异常的方式来表明方法的失败,以此来导致事物起作用,大家全失败。
事务传播行为种类 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为, 它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: 事务传播行为类型 事务传播 ...
- POJ 3258 River Hopscotch (最大最小距离)【二分】
<题目链接> 题目大意:现在有起点和终点两个石块,这两个石块之间有N个石块,现在对这N个石块移除M个石块,使得这些石块之间的最短距离最大,注意,起点和终点这两个石块不能被移除. 解题分析: ...
- Shell学习之结合正则表达式与通配符的使用(五)
Shell学习之结合正则表达式与通配符的使用 目录 通配符 正则表达式与通配符 通配符 通配符的使用 正则表达式 正则表达式 正则表达式的使用 通配符 正则表达式与通配符 正则表达式用来在文件中匹配符 ...
- bootstrap页面sidebar
function change_active(select_item){ $('.mail-navigation').find('li').each(function(){ $(this).remov ...
- SpringBoot整合mongoDB
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 这一片文章介绍一个springboot整合mongodb,如果你了解整合mysql之类的 ...