美文网首页程序员
dot 语言画类图和 UML 关系

dot 语言画类图和 UML 关系

作者: 林万程 | 来源:发表于2018-05-09 23:49 被阅读439次

开源代码画图软件 graphviz

官网&下载
(可以用 Chrome 翻译看教程):
https://graphviz.gitlab.io/download/

安装后可以设置拓展名为 .gv 的文件都用 gvedit.exe 打开

gvedit.exe使用说明

示例代码:

digraph G {
  a->b
}

环境变量与命令行

可以在环境变量的 Path 添加安装目录下的 bin 路径
右击我的电脑 -> 属性

高级系统设置
环境变量
Path
新增
D:\Program Files (x86)\Graphviz2.38\bin
英文分号;分隔

添加环境变量后就可以在命令行中生成图片了,命令如下:
dot -Tsvg -O 文件路径
sftp -Tsvg -O 文件路径
第一个是单方向算法
第二个是多方向少交叉算法
-O是根据格式自动补充拓展名
也可以-o加目标路径文件名

VSCode (实时预览编辑器)

加上插件:
Graphviz (dot) language support for Visual Studio Code
Graphviz Preview:Ctrl +Shift + P select “Graphviz: Show Preview”


VScode效果

类图

digraph Class{
    rankdir=BT; // 箭头从下到上
    // 默认方形
    node [shape = "record", fontname = "Consolas"]
    // 默认空箭头
    edge [arrowhead = "empty", fontname = "Consolas"]

    // + 公有 - 私有 # 保护 ~ 包级(默认) \l左对齐换行
    people [label = "{people
    | +name: String\l
    -age: int\l
    | +getAge(): int\l}"]
    // o- 表示接口
    study [label = "{o- study}"]

    // 继承 extends
    student -> people
    // 实现 implements
    student -> study [style="dashed"]
}
类图

一对多

digraph {
    1 -> n [
        arrowhead = "crow"
        taillabel="1  "
        headlabel="n  "
    ]
}
1-n

多对多

digraph {
    1 -> n [
        dir = "both"
        arrowtail = "crow"
        arrowhead = "crow"
        taillabel="n  "
        headlabel="n  "
    ]
}
n-n

UML(统一建模语言)关系

digraph UML{
    rankdir=LR
    // 设置字体防止乱码
    fontname = "Microsoft YaHei"
    node [fontname = "Microsoft YaHei"]
    edge [fontname = "Microsoft YaHei"]
    
    子类 -> 父类
    [label = "1继承泛化
    Generalization
    extends"
    arrowhead = "empty"]

    接口[label = "接口
    interface"]

    实现 -> 接口
    [label = "2实现
    Realization
    implements "
    arrowhead = "empty"
    style="dashed"]

    主体 -> 工具
    [label = "3依赖
    Dependency"
    arrowhead = "vee"
    style="dashed"]


    主人 -> 被拥有
    [label = "4.1关联
    Association"
    arrowhead = "vee"]

    A -> B
    [label = "4.2双向关联"
    arrowhead = "none"]

    C -> C
    [label = "4.3自身关联"
    arrowhead = "vee"]


    成员 -> 整体
    [label = "5聚合
    Aggregation"
    dir = "both"
    arrowtail = "vee"
    arrowhead = "odiamond"]

    部分 -> 总体
    [label = "6.组合
    Composition"
    dir = "both"
    arrowhead = "diamond"
    arrowtail = "vee"]
}
UML
digraph{
// 设置字体防止乱码
fontname = "Microsoft YaHei"
node [fontname = "Microsoft YaHei"]
edge [fontname = "Microsoft YaHei"]

// 合并使子图上的线隐藏
graph [compound=true]

subgraph cluster_0 {
  里
}

里->外[ltiail=cluster_0]
外->里[lhead=cluster_0]
}

设置字体对应列表:
新細明體:PMingLiU
細明體:MingLiU
標楷體:DFKai-SB
黑体:SimHei
宋体:SimSun 或任意字符
新宋体:NSimSun
仿宋:FangSong
楷体:KaiTi
仿宋_GB2312:FangSong_GB2312
楷体_GB2312:KaiTi_GB2312
微軟正黑體:Microsoft JhengHei
微软雅黑体:Microsoft YaHei 推荐

其他学习链接

使用graphviz绘制流程图(2015版):
http://icodeit.org/2015/11/using-graphviz-drawing/?from=timeline

相关文章

  • dot 语言画类图和 UML 关系

    开源代码画图软件 graphviz 官网&下载(可以用 Chrome 翻译看教程):https://graphvi...

  • UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

    UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合UML类图几种关系的总结 泛化 类继承和类实现接口关系,...

  • UML类图学习

    UML类图符号 各种关系说明 UML类图用来描述对象和类之间相互关系的方式 泛化(Generalization):...

  • 设计模式补完计划

    目录 1.uml类图2.uml时序图3.设计模式 uml类图 泛化关系(继承):指类继承自类,接口继承自接口的关系...

  • C++线下测试回顾

    题目地址 有同学说不知道怎么画内存模型图,我这里附几个教程UML类图小结UML类图与类的关系详解类似的教程笔记网上...

  • 面向对象编程 - UML类图

    UML类图 Unified Modeling Language统一建模语言 关系,有泛化(Generalizati...

  • nodejs开发starUML插件总结

    一、需求分析 starUML介绍 StarUML是一种创建UML类图,生成类图和其他类型的统一建模语言(UML)图...

  • Java自学-接口与继承 UML图

    UML 图 步骤 1 : UML 图 —— 类之间的关系 UML-Unified Module Language统...

  • UML-"类图"

    统一建模语言中的类图就是表示类的图,类图主要包含两部分:类的定义、类之间的关系。 类定义:用UML语言的方式表示某...

  • UML之类图

    类图 类图简介:类图主要是描述类的属性和类之间的关系,是UML(统一建模语言)一种静态结构图。 先用一个简单的类作...

网友评论

    本文标题:dot 语言画类图和 UML 关系

    本文链接:https://www.haomeiwen.com/subject/zqsarftx.html