本 StarUML 扩展支持用 UML 模型生成 Java 代码,以及将 Java 代码逆向为 UML模型。
⚠️ 本扩展基于 Java Extension for StarUML 扩展二次开发。本扩展的功能不完善,如果您需要完美的 Java 代码生成/逆向功能,请查看其他更专业的工具。
✅ 本扩展基于 Java 1.7 规范。
(返回顶部)
- 在 StarUML 的扩展管理器中输入仓库地址
https://github.com/Lyana-nullptr/staruml-java-cn
来安装本扩展 - Java 代码生成
详细步骤
- 点击菜单栏的
工具 > Java > 生成代码……
- 选择一个用来生成 Java 代码的模型(或包)
- 选择存放代码的目录
- 完成!生成的代码会被存放在你选择的目录中
- 点击菜单栏的
- Java 代码逆向
详细步骤
- 点击菜单栏的
工具 > Java > 代码逆向……
- 选择一个存放着代码的目录
- 完成!逆向出来的模型会被存放在名为
Java 逆向
的模型中
- 点击菜单栏的
(返回顶部)
- 翻译扩展为中文
- 更改默认设置,开箱即用
preferences/preference.json
- "java.gen.javaDoc":
true
->false
- "java.rev.association":
true
->false
- "java.rev.typeHierarchy":
true
->false
- "java.rev.packageOverview":
true
->false
- "java.rev.packageStructure":
true
->false
- "java.gen.javaDoc":
- 优化代码生成逻辑
- 移除:不再默认导入 java.io、java.util 包
- 移除:类中不再生成默认构造方法
- 移除:方法中不再默认生成 TODO 注释
- 移除:void 方法中不再生成 return 语句
- 优化:不再生成空注释
- 修复:继承并实现抽象类中抽象方法(或接口中的方法)时,出现方法重复生成的问题
- 优化代码逆向逻辑
- 移除:将 UMLOperation 逆向为构造方法时添加构造型
<<constructor>>
- 移除:将 UMLOperation 逆向为构造方法时添加构造型
(返回顶部)
下面是 UML 模型元素转换为 Java 源代码的规则。
- 转换为 Java Package
- 转换为 Java Class
visibility
特征转换为可见性修饰符public
,protected
,private
或无修饰符isAbstract
特征为真时,生成abstract
修饰符isFinalSpecialization
或isLeaf
特征为真时,生成final
修饰符- 所有包含的类型(UMLClass,UMLInterface,UMLEnumeration)均转换为内部类型定义
- 文档特征转换为 Java 文档注释(要求启用偏好设置中的 “生成 Java 文档注释”)
- 转换为 Java Field
visibility
特征转换为可见性修饰符public
,protected
,private
或无修饰符name
特征转换为字段标识符type
特征转换为字段类型multiplicity
特征转换为数组类型isStatic
特征为真时,生成static
修饰符isLeaf
特征为真时,生成final
修饰符defaultValue
特征转换为初始值- 文档特征转换为 Java 文档注释(要求启用偏好设置中的 “生成 Java 文档注释”)
- 转换为 Java Methods
visibility
特征转换为可见性修饰符public
,protected
,private
或无修饰符name
特征转换为方法标识符isAbstract
特征为真时,生成abstract
修饰符isStatic
特征为真时,生成static
修饰符- UMLParameter 转换为 Java Method Parameters
- UMLParameter 的名称特征转换为参数标识符
- UMLParameter 的类型特征转换为参数类型
direction
特性为return
的 UMLParameter 转换为方法的返回值类型,没有这个参数时方法的返回值类型为void
isReadOnly
特性为真的 UMLParameter 转换为带final
修饰符的参数- 文档特征转换为 Java 文档注释(要求启用偏好设置中的 “生成 Java 文档注释”)
- 转换为 Java Interface
visibility
特征转换为可见性修饰符public
,protected
,private
或无修饰符- 文档特征转换为 Java 文档注释(要求启用偏好设置中的 “生成 Java 文档注释”)
- 转换为 Java Enum
visibility
特征转换为可见性修饰符public
,protected
,private
或无修饰符- UMLEnumerationLiteral 转换为枚举中的常量
- 转换为 Java Field
visibility
特征转换为可见性修饰符public
,protected
,private
或无修饰符name
特征转换为字段标识符type
特征转换为字段类型- If
multiplicity
is one of0..*
,1..*
,*
, then collection type (java.util.List<>
whenisOrdered
=true
orjava.util.Set<>
) is used defaultValue
特征转换为初始值- 文档特征转换为 Java 文档注释(要求启用偏好设置中的 “生成 Java 文档注释”)
- 转换为 Java Extends
- 只允许在 UMLClass 指向 UMLClass 或 UMLInterface 指向 UMLInterface 时使用
- 转换为 Java Implements
- 只允许在 UMLClass 指向 UMLInterface 时使用
(返回顶部)
下面是 Java 源代码转换为 UML 模型元素的规则。
- 转换为 UMLPackage
- 转换为 UMLClass
- 类名转换为
name
特征 - 类型参数(泛型)转换为 UMLTemplateParameter
- 可见性修饰符
public
,protected
和private
转换为visibility
特征 abstract
修饰符转换为isAbstract
特征final
修饰符转换为isLeaf
特征- 所有包含的类型(UMLClass,UMLInterface,UMLEnumeration)均转换为内部类型定义
- Java 文档注释转换为文档特征
-
转换为 UMLAttribute(如果关闭了偏好设置中的 “使用关联”)
-
Field type to
type
property- Primitive Types :
type
property has the primitive type name as string T[]
(array),java.util.List<T>
,java.util.Set<T>
or its decendants:type
property refers toT
with multiplicity*
T
(User-Defined Types) :type
property refers to theT
type- Otherwise :
type
property has the type name as string
- Primitive Types :
-
可见性修饰符
public
,protected
和private
转换为visibility
特征 -
static
修饰符转换为isStatic
特征 -
final
修饰符转换为isLeaf
特征 -
transient
modifier to a Tag withname="transient"
andchecked=true
-
volatile
modifier to a Tag withname="volatile"
andchecked=true
-
初始值转换为
defaultValue
特征 -
Java 文档注释转换为文档特征
-
转换为(Directed) UMLAssociation(如果开启了偏好设置中的 “使用关联”,并且有一个 UML 类型的元素 UMLClass,UMLInterface 或 UMLEnumeration 对应于字段类型)
-
Field type to
end2.reference
propertyT[]
(array),java.util.List<T>
,java.util.Set<T>
or its decendants:reference
property refers toT
with multiplicity*
T
(User-Defined Types) :reference
property refers to theT
type- Otherwise : 转换为 UMLAttribute, not UMLAssociation
-
可见性修饰符
public
,protected
和private
转换为visibility
特征 -
Java 文档注释转换为文档特征
- 转换为 UMLOperation
- 类型参数(泛型)转换为 UMLTemplateParameter
- 可见性修饰符
public
,protected
和private
转换为visibility
特征 static
修饰符转换为isStatic
特征abstract
修饰符转换为isAbstract
特征final
修饰符转换为isLeaf
特征synchronized
modifier toconcurrency="concurrent"
propertynative
modifier to a Tag withname="native"
andchecked=true
strictfp
modifier to a Tag withname="strictfp"
andchecked=true
throws
clauses toraisedExceptions
property- Java 文档注释转换为文档特征
- 转换为 UMLInterface
- 类名转换为
name
特征 - 类型参数(泛型)转换为 UMLTemplateParameter
- 可见性修饰符
public
,protected
和private
转换为visibility
特征 - Java 文档注释转换为文档特征
- 转换为 UMLEnumeration
- Enum name to
name
property - 类型参数(泛型)转换为 UMLTemplateParameter
- 可见性修饰符
public
,protected
和private
转换为visibility
特征 - Enum constants are 转换为 UMLEnumerationLiteral
- Java 文档注释转换为文档特征
- 转换为 UMLClass with stereotype
<<annotationType>>
- Annotation type elements to UMLOperation (Default value to a Tag with
name="default"
) - Java 文档注释转换为文档特征
(返回顶部)
MIT。
(返回顶部)