> 文档中心 > IDEA生成UML类图(PlantUML)

IDEA生成UML类图(PlantUML)

IDEA生成UML类图(PlantUML)

  • 前言
  • 安装
    • 安装IDEA插件
    • 安装Graphviz
  • 使用
    • 选择
    • 绘制
    • 保存
  • 案例
  • 最后

前言

统一建模语言(UML)相信大家都不陌生,在软件工程的各个阶段均有应用。其中,类图是在详细设计阶段,经常要使用到的一种图。

画类图的工具有很多,专用的绘制软件有Visio。Visio的功能比较强大,不仅仅是软件方面的绘图,其他的流程图、房屋平面图、网络设备架构图等,Visio都可以胜任。但大家在绘制UML的时候,可能更倾向于一些轻量级的软件,例如MindMaster、ProcessOn等。而且一般公司的Wiki平台,也会提供一些绘制UML的功能。

除此以外,在专业版IDEA中还有Diagrams这个功能。Diagrams应该是大家分析代码设计模式的大杀器,因为他可以自动生成类图。Diagrams生成类图虽然快速,但我们无法对其进行修改调整。并且只能绘制类图,不支持其他类型的图。

这里介绍IDEA一个绘制UML的插件——PlantUML。PlantUML是一门描述UML的语言,可以用代码的方式生成想要的UML图。总的来看,这门语言并不复杂,官网(PlantUML)提供了详细的案例,可以在20分钟左右的时间内掌握特定图的编写。让你有种使用Markdown来绘制UML的感觉,相信某些人会喜欢的

下面简单介绍IDEA中PlantUML的安装,以及简单的使用案例。

安装

安装IDEA插件

在Plugins中查找PlantUML,安装如下两个插件:

  1. PlantUML Integration:PlantUML绘图工具集成。
  2. PlantUML Parser:Java源代码转PlantUML解析器。
    IDEA生成UML类图(PlantUML)

安装Graphviz

Graphviz是由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。PlantUML需要依赖Graphviz中的工具包。

Mac OS可用Homebrew安装:

brew install graphviz

使用

选择

在工程中新建PlantUML File。
IDEA生成UML类图(PlantUML)
选择图类型。
IDEA生成UML类图(PlantUML)

绘制

新建的文件都会给出Demo,并给出了官网链接,现在就可以开始绘图了。
IDEA生成UML类图(PlantUML)

保存

可输出为png图片格式。
IDEA生成UML类图(PlantUML)

案例

使用
IDEA生成UML类图(PlantUML)
类图
IDEA生成UML类图(PlantUML)

配置文件

@startumlObservable ..> CycleObservableThread ..> TaskLifeCycleObservableThread ..> TaskTaskLifeCycle ..> Threadenum Cycle{    STARTED    RUNNING    DONE    ERROR}note left of Cycle:任务的生命周期枚举interface Observable{    + Cycle getCycle()    + void start()    + void interrupt()}note left of Observable:定义可观测性interface TaskLifeCycle{    + void onStart(Thread thread)    + void onRunning(Thread thread)    + void onFinish(Thread thread,T result)    + void onError(Thread thread,Exception e)}note left of TaskLifeCycle:定义任务执行的生命周期中\n会被触发的方法class EmptyLifecycle implements TaskLifeCycle{ + void onStart(Thread thread) + void onRunning(Thread thread) + void onFinish(Thread thread,T result) + void onError(Thread thread,Exception e)}note left of EmptyLifecycle:TaskLifeCycle的默认实现。class Thread{    + void run()}interface Task{    + T call()}note right of Task:Runnable类不具备可观测性,\n这里使用Task类代替class ObservableThread extends Thread implements Observable{    - TaskLifeCycle<T> lifeCycle    - Task<T> task    - Cycle cycle    + ObservableThread(Task<T> task)    + ObservableThread(TaskLifeCycle<T> lifeCycle, Task<T> task)    + void run()    + Cycle getCycle()}note left of ObservableThread:实现任务监控的关键\n继承Thread,实现TaskLifeCycle接口@enduml

最后

PlantUML并不一定适合所有人,全看个人喜好。就像UML的格式就有很多种,本身UML也是个可选项。一切都服务于需求,我们应该根据不同的需求选择合适的工具。