文件交换

图片缩略图

UMLgui

版本1.2.0.0(37.6 kB) 本·戈达德
允许自动生成UML类图
4.0
11评级

21下载

更新2020年3月21日

查看版本历史记录

查看许可证

UMLGUI允许自动创建UML类图。运行UMLGUI打开GUI。然后,您可以使用主面板下的四个按钮添加目录或目录及其(递归)子目录,以及删除所选目录,或清除整个列表。

提供各种视图选项,最重要的是树布局,它是“美学”,生产分支树结构或“紧凑”,它会产生更紧凑但较低的吸引力的树。

单击“创建UML图”按钮会创建图表的EPS和PDF文件。可以手动输入输出文件,或者通过浏览器选择。

金宝app包含多个超级类的类别包括支持,但由于图形的潜在非平面性,但第一个超级类通过直线箭头连接到类。

两个非常基本的例子包括在/猴头表和/动物饲料术(和子目录)中。后者展示了对包装的支持。金宝app

还可以创建一个脚本来绕过GUI;查看makeanimaldiagram.m和makeanimalfruitdiagram.m.M.M.M.

引用

本戈达德(2021年)。UMLgui(//www.tatmou.com/matlabcentral/fileexchange/44742-umlgui), MATLAB中央文件交换。检索

评论和评级(26.

em.

在一些调整后工作正常(GS和GS的GS和REARES的路径没有构造函数:NamePOS = 0已在下面报告)

Joan Vazquez.

修正路径后(见Miron Voin和Guido de Hek的评论),AnimalExample工作良好。
但是,带有add + subdirs的Animalfriitexample抛出了此错误:

数组索引必须是正整数或逻辑值。

ClassFile/setMethodsStrings错误(第310行)
tempString = this.methodsStrings {namePos};

树/ setPropsandMethods错误(第448行)
this.classList (iClass) .setMethodsStrings;

树中的错误(第124行)
setPropsAndMethods(这个);

树/度假村错误(第424行)
sortedThis =树(newNameList tempOpts);

树中的错误(第115行)
这=度假村(这个);

UMLgui/doUML错误(第1352行)
树=树(Fireelist,Tempguidata.opts);

在计算UIControl Callback时出错。”

米隆Voin

做得很好!我唯一的问题是将Guido de Hek的评论之后插入Gswin64c的正确路径。
希望这个项目能得到进一步的支持。金宝app

托德

我喜欢你们从中得到的图表。

我做了几次调整,以便为我工作。首先,我删除了AddPaths行,因为我管理使用项目的路径。其次,我将此添加到Douml方法来处理包:

%TFV处理包裹
m = strsplit(目录{iDir} ' \ \ + ');

对于ifile = 1:nfilesm
classNameM = listingM (iFile) . name (1: end-2);
如果长度(米)> 1
%tfv如果这是一个包,将其添加到名称中
classNameM = strjoin ([m(2:结束),{classNameM}], '。');
结尾
ClassNames = [ClassNames,ClassNamem];%#好的
结尾
在下一个块中也类似,它处理@ class文件夹。

第三,我修改了Tree来处理用户没有包含在类列表中的超类(如matlab.mixin.Copyable)。当发现一个空的parentId时,我将这个类的级别设置为1。在setLevelInfo中,我按parentId对类列表进行排序并重新分配级别,这样只有类列表中的类才算级别。

%TFV临时分配父ID,以便我们可以排序
for ix = 1:this.nClasses
parentId =找到(strcmp (this.classNameList this.classList (ix) .parent));
如果是isempty(父母)
this.classList(第九)。parentId = 0;
其他的
this.classList(第九)。parentId = parentId;
结尾
结尾
%TFV重新计算父母的水平
[〜,sortedorder] = sort([this.classlist.parentid]);
对于ix = sortedorder
如果this.classList(第九)。parentId > 0
this.classList(第九)。水平= this.classList (this.classList (ix) .parentId)。级+ 1;
其他的
this.classList(第九)。水平= 1;
结尾
结尾

另一种方法是将缺少的超类添加到类列表中。我认为如果你可以通过插入节点来构建树(或图),然后在图中导航以获得布局引擎中的结构,那么这两种方法都会变得更简单。

托德

如果您有文件夹列表中没有包含的超级类别,则会遇到麻烦,例如,像句柄或matlab.mixin等内置的matlab类.copeable。树将这些父级设置为零,但度假村尝试使用它作为索引。

Lockywolf.

布局引擎很好,图表也很好看。

但是:只有类图,没有其他的。(但这没关系,因为类图是最重要的。

但更糟糕的是,没有支持任何关联。金宝app这有点不幸。

我知道,“直接”从classdef中提取这些信息是不可能的,因为MATLAB是一种弱类型语言。

但是我很乐意用类型注释对代码进行“myypy”。

查尔斯·泰特姆

很乐意看到包支持。金宝app如果我发现有效的修改,我会发布它。

Guido de Hek.

UMLgui无法找到ghostscript可执行文件。gswin64c安装在C:\Program Files\gs\gs9.22\bin.
要使它工作我在第697行的树上更改了GS的GS路径:GS ='“C:\ Program Files \ GS \ GS9.22 \ bin \ gswin64c.exe”';

约翰德曼

很好。当使用+和软件包时有些小故障,但仍然很好。

克里安

本杰明

错误报告:我似乎发现了一个错误。似乎在任何类属性或方法都有隐藏的属性= true时发生。如果我设置隐藏= false,则错误消失。我得到的错误是:

单元格内容索引必须大于0

类文件/ setMethodsstrings错误(第306行)
tempString = this.methodsStrings {namePos};

树/ setpropsandmethods中的错误(第424行)
this.classList (iClass) .setMethodsStrings;

树中的错误(第123行)
setPropsAndMethods(这个);

树/度假村错误(400行)
sortedThis =树(newNameList tempOpts);

树中的错误(第114行)
这=度假村(这个);

UMLGUI / DONML中的错误(第1335行)
树=树(Fireelist,Tempguidata.opts);

塞巴斯蒂安·G。

马塞尔搞诉

很好。做得很成功。但是我必须安装ghostscript来打开PDF。

乔纳森Joestar

Bogumila & Zbigniew MROZEK

工作很好,非常有用

亚历山大·兰普

包裹支持会很棒!金宝app

我将所有课程存放在包裹和子包等中等。类mypackage.myclass有一个超级类mypackage.superclasses.superclass1

疯狂的奥尔森

Caspar Jespersen.

非常有用的工具!开箱即用。

约翰•里德

代码不适用于包或类文件夹

本杰明

我刚刚注意到静态方法没有包含在对象方法中。这是有意为之吗?如果是的话,是否有可能在gui中设置一个标志来包含它们?
谢谢

本·戈达德

本杰明:谢谢你的建议,它现在应该忽略任何。git文件夹(以及任何子文件夹)。

本杰明

功能请求:我尝试了一个由git版本控制下的文件夹。添加文件夹/子文件夹时,排除包含'.git'的任何路径将是有用的

本杰明

很好。第一次工作。非常有用,谢谢你创建这个。

本·戈达德

zwergnase:它是否创建了错误消息中提到的pdf文件?

您是否使用代码附带的示例或将其应用于您自己的代码?

Simonflossmann.

这个工具对我来说真的很有用,但它不起作用。: - (

我得到以下错误:

使用open时出错(第102行)
文件C: \用户桌面\ \ u16h62 \ UML \ UMLDiagram \图\ UMLDiagram - 2015 _10_21_8_51_58.227.pdf '
成立。

UMLGUI / OPENPDF中的错误(第759行)
打开([tempguidata.opts.saveFile]);

评估UIControl回调时出错

彼得

MATLAB版本兼容性
创建R2017b
与任何版本兼容
平台兼容性
视窗 macOS Linux.

社区寻宝

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!

UMLgui_1_2

UMLGUI_1_2 / AILAMEXAMPLE.

UMLgui_1_2 AnimalExample /鸟

UMLGUI_1_2 / ANIFIALEXAMPLE /哺乳动物

UMLGUI_1_2 / ANAMALFRUITEXAMPLE.

UMLGUI_1_2 / ANAMALFRUITEXAMPLE / +水果

UMLgui_1_2 AnimalFruitExample /鸟

UMLgui_1_2 AnimalFruitExample /哺乳动物