いろいろがんばりたいブログ

情報科学科の人がいろいろ書きます。

GraphvizでUML

なんか課題でUML書きたかった。
eps形式で出せる。

digraph uml{
    node [shape=record];
    graph [labeljust = r];

    MathExpressionInterface [label = <{&lt;&lt;Interface&gt;&gt; <BR/> MathExpressionInterface | |+int evaluate()}>];

    MathExpression [label = <{<I>MathExpression</I> | | }>];

    IntegerConstant [label =<{IntegerConstant |+int number |+String toString()}>];

    BinaryOperator [label=<{<I>BinaryOperator</I> |+String opSymbol<BR/> +MathExpression left,right |+int evaluate(int,int)<BR/> +String toString()}>];

    Plus [label=<{Plus||}>];
    Minus [label=<{Minus||}>];
    Mult [label=<{Mult||}>];
    Div [label=<{Div||}>];

    UnaryOperator [label=<{<I>UnaryOperator</I> |+String opSymbol<BR/> +MathExpression argument |+int evaluate(int)<BR/> +String toString()}>];

    Prime [label=<{Prime |+int maxIndex<BR/> +ArrayList&lt;Integer&gt; primes |}>];

    Fibonacci [label=<{Fibonacci |+int maxIndex<BR/> +int fiblen<BR/> +ArrayList&lt;Integer&gt; fibonacci |}>];

    NaryOperator [label=<{<I>NaryOperator</I> |+String opSymbol<BR/> +ArrayList&lt;MathExpression&gt; arguments |+int evaluate(ArrayList&lt;Integer&gt;)<BR/> +String toString()}>];

    Max [label=<{Max||}>];
    Min [label=<{Min||}>];
    Average [label=<{Average||}>];
    Gcd [label=<{Gcd | |+int gcd(int,int)<BR/> +int gcd(ArrayList&lt;Integer&gt;) }>];

    Lcm [label=<{Lcm | |+int lcm(int,int)<BR/> +int lcm(ArrayList&lt;Integer&gt;) }>];

    MathExpressionInterface -> MathExpression;

    MathExpression -> IntegerConstant;

    MathExpression -> BinaryOperator;
    BinaryOperator -> Plus;
    BinaryOperator -> Minus;
    BinaryOperator -> Mult;
    BinaryOperator -> Div;

    MathExpression -> UnaryOperator;
    UnaryOperator -> Prime;
    UnaryOperator -> Fibonacci;

    MathExpression -> NaryOperator;
    NaryOperator -> Max;
    NaryOperator -> Min;
    NaryOperator -> Average;
    NaryOperator -> Gcd;
    NaryOperator -> Lcm;
}

f:id:tomoki_imai:20121122224408p:plain
左揃えとかにしたいんだけど、よくわからんかった。