您的位置:首页 > 其它

Clojure绘制UML

2016-02-16 18:39 232 查看

简单介绍

使用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")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: