• 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#中读取pdm文件信息(PowerDesigner读取方法)(源码共享)
    WinForm应用程序框架设计之WinAction(新增数据)
    iBatis.NET在使用浮点类型时报错
    Vortex2D.NET在ScreenManager前创建节点会出错。
    WinForm应用程序框架设计之WinAction(数据操作)
    WinForm应用程序框架设计之WinAction(一:显示列表窗体)
    WinForm应用程序框架设计之WinAction(介绍)
    点击其他checkbox,然后显示和隐藏区域
    11PX中文字体,清晰
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5193593.html
Copyright © 2020-2023  润新知