zoukankan      html  css  js  c++  java
  • 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")
  • 相关阅读:
    方差分析 | ANOVA | 原理 | R代码 | 进阶 | one way and two way | Analysis of Variance
    GT sport真实赛道详解
    如何成为F1车手?
    统计学 | 漫想
    (转)什么是P问题、NP问题和NPC问题
    一个完整的成年果蝇大脑的电子显微镜图谱 | A Complete Electron Microscopy Volume of the Brain of Adult Drosophila melanogaster
    文献导读 | A Pan-Cancer Analysis of Enhancer Expression in Nearly 9000 Patient Samples
    综述
    GSEA
    (转)决定系数R2
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5193593.html
Copyright © 2011-2022 走看看