IDEA 是一款非常强大的开发工具,可以在项目中生成 UML 类图,来反映应用项目中类的关系以及类与方法的结构。这可以更好地帮助我们进行一些程序设计、源码分析、问题排查等实际应用场景。本教程我们主要讲述如何使用 Idea 中的 Diagram 工具来生成、显示和分析 UML 类图。
1、如何打开Diagrams
IDEA已经自带了Diagram功能,如果你的IDEA中没有该功能,可以安装 UML 插件,并保证 UML 插件处于生效状态。
可以在java类、包、模块、项目(或依赖的jar包中的类、包、模块)上面查看Diagrams,点击右键选择 Diagrams 菜单后有两种方式,分别是固定窗口模式(Show Diagram)与浮动窗口模式(Show Diagram Popup),二者在展示本质上没有区别。
- Show Diagram 和 Show Diagram Popup 的区别是,前者使用 Tab 页打开类图页面,而后者使用 悬浮窗 打开类图页面。
无论选择那种窗口模式,将会出现进一步选择,用来生成类图(Java Class Diagrams)或者模块图(Java Modules Diagrams),一般而言,为很好的分析代码,类图是最佳方案
2、生成Diagrams的方式
IDEA 可供生成Diagrams(类图)的方式有多种,可以基于包生成类图,基于某个类文件生成类图,基于多个类(或接口)文件生成类图。
2.1 基于包生成类图
在IDEA中打开点击相应的引入jar包,逐级打开jar包的Package,选择最终要打开的Package(例如打开Package com.alibaba.druid.pool),在Package名称上右键包名称,选择 Diagrams -> Show Diagrams菜单。
此时会弹出一个类型选择对话框,其中Java Classes diagram表示生成java类图,Java Modules表示生成java模块图。一般而言,为很好的分析代码,类图是最佳方案。
这里选择Java Classes diagram,展示效果图如下:
如果选择Java Modules,展示效果图如下:
上述操作也可以在java文件所在的包上操作:
2.2 基于某个类文件生成类图
在IDEA中打开点击相应的引入jar包,逐级打开jar包的Package,右键点击要查看的类文件名称(例如打开Package com.alibaba.druid.pool中的 DruidDataSource 文件),选择 Diagrams -> Show Diagrams菜单。
此时会弹出一个类型选择对话框,具体操作同【1.1 基于包生成类图】中的操作。
当然也可以在java文件上操作:
2.3 基于多个类(或接口)文件生成类图
在IDEA中打开点击相应的引入jar包,逐级打开jar包的Package,选择多个文件(按住Ctrl再逐个点击相应的文件可多选类文件,按住shift键可连选),点击右键,选择 Diagrams -> Show Diagrams菜单。
此时会弹出一个类型选择对话框,具体操作同【1.1 基于包生成类图】中的操作。
也可以在java文件上这样操作:
3、基于java类生成Diagrams的详解示例
默认情况下对于某个类而言,生成的类图只展示类与其继承的接口(类)信息,以 AbsDataManager.java 文件为例(该类是我自己所写的获取数据接口的抽象实现类),在该类上右键选择 Diagrams -> Show Diagrams菜单,类图展示形式如下所示:
蓝色实现箭头指继承关系
绿色虚线箭头指接口实现关系
该图案表示内部类的关系
该窗口中默认选中的是AbsDataManager类,点击右键打开菜单,具体功能介绍如下:
3.1 Selected Element Actions
Selected Element Actions表示当前选中元素的操作,在弹出的菜单中选择 Jump to Source 选项或者按下快捷键 F4 ,即可跳转至该类的源代码文件。
3.2 Content
鼠标指向Content打开级联菜单如下图:
Add Class to Diagram 菜单选择后,可以添加你想加入的类到当前类图中。
- 还支持拖动某个类到面板中,鼠标左键选中某个类,直接拖到面板中就能显示了。
Show Categories菜单选择后,可以选择展示相关类的私有字段(Fields)、构造函数(Constructors)、函数(Methods)、属性(Properties)以及内部类(Inner Classes)信息。
3.3 Show Implementations
选择此项会展示所选类的子类,选中某项可以在当前类图中添加。
3.4 Show Parents
选择此项会展示所选类的父类或接口,选中某项即可以在当前类图中添加。
3.5 Collapse Nodes & Expand Nodes
收缩和展开节点。
3.6 Delete
从类图中删除类节点,在类图中有些类并不是我们想要关心的,或者说我们想让目前的类图更加精准分析自己想看到的类关系,我们可以直接选中类图中不想看到的类节点,然后使用该功能菜单或直接使用键盘上的 delete 键删除即可。
3.7 Layout
调整类图布局,使用类图中右键菜单中的 Layout 选项,再选择子菜单项,即可改变当前类图的显示布局,以更好的显示类图关系。
按上图选择布局后的展示如下:
3.8 IDEA菜单输出
在生成的类图窗口空白处点击右键,点击“Export Diagram”-> “Export to Image…”,即可打开图片另存为窗口,选择保存路径后,点击ok按钮即可将当前类图保存到指定路径。
- 根据需要,可选择文件名称、类型及存放路径,将相关的类图保存为图片
3.9 放大镜功能
如果觉得当前类图中的字太小,或者看不清,可以使用工具栏的放大按钮,也可以在类图上按住键盘上的 Alt 键,并移动鼠标,就会有放大镜的功能。
3.10 放大缩小
按住 Ctrl 键,滚动鼠标滚轮,可以对类图进行放大或缩小操作。
4、功能按钮
编号 | 按钮 | 功能 |
---|---|---|
1 | Fields | 域 |
2 | Constructors | 构造器 |
3 | Method | 方法 |
4 | Properties | 属性,特指实现了Getter和Setter的属性 |
5 | Inner Class | 内部类 |
6 | Show Dependencies | 显示所选类或程序包的依赖关系 |
7 | Change Item Ordering | 更改元素排序 |
8 | Change Visibility Level | 更改要显示元素的可见性级别(public |
9 | Change Scope | 更改文件的显示范围,比如 项目文件/非项目文件 |
10 | Edge Creation Mode | 边缘创建模式 |
11 | Actual Size | 按实际尺寸展示 |
12 | Fit Content | 在当前可视窗口填充完整内容,即所有内容在一屏展示 |
13 | Apply Current Layout(Shift+F5) | 应用当前布局,该布局是从类图的上下文菜单(右键菜单)中选择的,或者按 Shift+F5 |
14 | Auto Route Edges(F5) | |
15 | Copy Diagram to Clipboard | 拷贝类图到剪贴板 |
16 | Copy Selection to Clipboard | 拷贝所选内容到剪贴板 |
17 | Export Diagram | 导出类图 |
18 | Refresh Data Model | 刷新数据模型 |
评论区