Clojure绘制UML

简介

使用Clojure封装了Graphviz的使用,目前主要实现了UML的绘制

使用

以命令模式的UML为例,演示cdraw的使用

安装Graphviz

cdraw是对Graphviz的简单封装,请先安装Graphviz

添加依赖

  • 使用leiningen新建一个Clojure项目uml
  • 在project.clj中添加如下依赖
[com.ivaneye/cdraw "0.2.0"]

定义类

  • 在uml.core中编写如下代码
(ns uml.core
  (:require [cdraw.uml :refer :all]))

 (defclass Client)
 (defclass Inboker)
 (defclass Receiver {:m ["Action()"]})
 (defclass Command {:m ["Execute()"]})
 (defclass ConcreteCommand {:f  ["state"] :m ["Execute()"]})
  • 第一,二行,引入了cdraw
  • defclass定义了类,及其字段(:f)和方法(:m),效果图如下:

添加依赖

  • 继续在uml.core中添加依赖代码
(defrelation Client :u Receiver)
(defrelation ConcreteCommand :u Receiver {:t "reveiver"})
(defrelation Client :d ConcreteCommand)
(defrelation ConcreteCommand :e Command)
(defrelation Invoker :p Command)
  • Client关联Receiver
  • ConcreteCommand关联Receiver
  • Client依赖ConcreteCommand
  • ConcreteCommand继承Command
  • Invoker聚合Command
关联  :u
依赖 :d
聚合 :p
组合 :c
继承 :e
实现 :i

添加label

  • 在uml.core中添加如下代码
(label ConcreteCommand "receive-\\>Action()")
  • >需要转义

定义子包

(defsub "Sub Command" Command ConcreteCommand)
  • 第一个参数为子包名称
  • 后续为需要包含到子包中的类

生成

  • 在uml.core中添加如下代码
(watch (to-file "/t.dot") "/t.png")
  • to-file生成符合Graphviz的dot文件
  • watch生成需要的最终文件,这里是生成了png图片

最终代码

(ns uml.core
  (:require [cdraw.uml :refer :all]))

(defclass Client)
(defclass Invoker)
(defclass Receiver {:m ["Action()"]})
(defclass Command {:m ["Execute()"]})
(defclass ConcreteCommand {:f  ["state"] :m ["Execute()"]})

(defrelation Client :u Receiver)
(defrelation ConcreteCommand :u Receiver {:t "reveiver"})
(defrelation Client :d ConcreteCommand)
(defrelation ConcreteCommand :e Command)
(defrelation Invoker :p Command)

(label ConcreteCommand "receive-\\>Action()")

(defsub "Sub Command" Command ConcreteCommand)

(watch (to-file "/t.dot") "/t.png")
时间: 2024-10-29 19:12:04

Clojure绘制UML的相关文章

如何绘制UML图?

首先推荐在线绘制UML的网址:https://www.processon.com/,很好用. 在软件开发过程中,开发人员往往需要通过绘制类图来理清业务的实现思路,从而方便代码实现,也便于后期的代码维护,下面是学习记录: 参考资料:http://www.jianshu.com/p/4cd95d4ddb59 在类图主要元素包括:类,接口,类接口之间关系 一,类:对于面向对象编程而言,类是对具有共同特征的物体的抽象: 在类图中一般的画法是: 说明: "+"表示public; "-&

[Tool] 使用Astah绘制UML图形

[Tool] 使用Astah绘制UML图形 前言 在软件开发的过程中,开发人员可以绘制UML图形来将分析设计内容转化为图形化文件,方便在团队之间传递分析设计结果.但在团队经费有限的情景中,可能没办法为每个项目成员都配置专业的UML绘制工具,例如Visual Studio Ultimate,来绘制UML图形,这时可以选择一些免费版本的绘制工具,做为团队间绘制UML图形的工具. 本篇文章介绍Astah这个提供免费版本的UML绘制工具,用来在团队经费有限的状况下,为每个成员配置UML绘制工具,避免软件

在LaTeX中使用tikz宏包及其扩展包共同绘制UML图

LaTeX宏包tikz的绘图功能很强,完全可以绘制UML的各种图形,并且在tikz的基础上扩展出不少这方面的宏包.前面我介绍过宏包tikz-uml,这个宏包功能不错,只是外观上略微有些不足.所以我现在还是立足于tikz的基础功能,结合tikz-uml宏包一起绘制UML图. 下面直接给出示例代码.效果图与说明. 操作系统:Ubuntu 16.04 64位桌面版LaTeX工具:TeXstudio 2.10.8 示例一 % 51CTO陆巍的博客 \documentclass[oneside, Auto

LaTeX绘制UML图形宏包开发过程记录001

因为工作需要,我在使用LaTeX编辑文件时经常要绘制UML图形.虽然目前LaTeX有一些宏包支持绘制UML图形,但总有这样那样的小问题,使用起来不是那么满意,所以想自己创建一个专门的宏包来绘制UML图形.一方面可以加深对LaTeX的了解,另一方面也给工作上带来便利. LaTeX宏包中的TikZ绘图宏包,功能很强大,LaTeX编辑的文档中很多都用其来绘制图形,所以我自然也以此宏包为基础来编写.本项目是从2019年1月1日在电脑上开始的,传入腾讯云开发者平台是2019年1月3日开始,地址是lakes

用Processon在线绘制UML的尝试

地址https://www.processon.com/ ProcessOn是一个面向垂直专业领域的作图工具和社交网络,成立于2011年6月并于2012年启动.ProcessOn将全球的专家顾问.咨询机构.BPM厂商.IT解决方案厂商和广泛的企业用户紧密的连接在一起,提供基于云服务的免费流程梳理.创作协作工具,与同事和客户协同设计,实时创建和编辑文件,并可以实现更改的及时合并与同步,这意味着跨部门的流程梳理.优化和确认可以即刻完成. 专注于为作图人员提供价值,利用互联网和社交技术颠覆了人们梳理流

LaTeX绘制UML图形宏包开发过程记录002

自定义类 ? LaTeX中自定义类与自定义宏包几乎是一样的,区别就是扩展名,类文件的扩展名是cls,宏包文件的扩展名是sty.在文件内容格式上也差不多,类文件中内容的样式举例如下: \NeedsTeXFormat{LaTeX2e}% \ProvidesClass{lua-general}[2019/01/01]% % \LoadClass{book}% 载入book类 % % 需求的宏包 \RequirePackage{geometry}% 用于页面设置 \RequirePackage{tikz

UML几种图的绘制

UML几种图的绘制 UML是Unified Modeling Language(统一建模语言)的简称.UML是对软件密集型系统中的制品(软件开发过程中产生的各种各样的产物,如模型.源代码.测试用例等)进行可视化.详述.构造和文档化的语言. UML是一套表示法系统.UML由一组图组成,它使得系统分析员可以利用这一标准来建立能够和客户.程序员以及任何参与程序开发的人员理解的多视角的系统蓝图.不同的风险承担人通常使用不同类型的图相互交流. UML的特点有:统一的标准:UML已被OMG接受为标准的建模语

UML学习(类图和序列图等)

visio绘制UML图使用visio 提示此UML形状所在的绘图页不是UML模型图的一部分 请问这个问题怎么解决?新建->选择绘图类型->选择软件与数据库模板->选择UML模型图->注意:如果不选择UML模型图的话,可能会出现无法编辑形状文本,提示“此UML形状所在的绘图页不是UML模型图的一部分,该形状设计用于利用UML模型图模板创建的绘图”所以利用Visio绘UML图第一步就是选择绘图类型为软件中的UML模型图. 还可以参考百度云盘的UML学习资料 参考:UML中几种类间关系:

Markdown简明教程4-Markdown UML图

1. 前言 Markdown是一种轻量级的标记语言,把作者从繁杂的排版工作中解放出来,实现易读易写的文章写作,已经逐渐成为事实上的行业标准.CSDN博客支持Markdown可以让广大博友更加专注于博客内容,大赞.但是,不少博友可能对Markdown比较生疏,本博接下来用一个系列文章<Markdown简明教程>扼要介绍Markdown,希望可以对大家有所帮助. 系列教程目录 关于Markdown Markdown基本使用 Markdown表格和公式 Markdown UML图 CSDN Mark