• 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")
  • 相关阅读:
    在C#中运用SQLDMO备份和恢复SQL Server数据库(转)
    c#中分割字符串的几种方法
    MS SQL Server中的日期格式化大全
    IBM基于双机热备份配置
    C#实现Des加密和解密
    ASP.NET备份恢复SqlServer数据库
    WEB 打印的相关技术分析
    通过身份证号码取得生日的一段代码(支持18位和15位身份证)
    C#的四种排序算法
    .net下读写配置文件app.config方法
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5193593.html
Copyright © 2020-2023  润新知