2010-12-10-01-SVG と UML の話 - 13 - project-enigma

2010-12-10-01-SVG と UML の話 - 13

>> Site top >> weblog >> 月別アーカイブ >> 2010年12月のlog >> 2010-12-10-01-SVG と UML の話 - 13

最終更新日付:2013/12/31 07:35:44


SVG と UML の話 - 13

2010 年 12 月 10 日

共通属性の前に、コネクタについてもう少し詳しく。

このツールを作っていて、コネクタの使い勝手は非常に重要だということが次第にわかってきた。例えば、2つのクラス間に複数の関連をひかなければならない局面がある。例えば、Composit パターンなどでは以下のようになるだろう。

クラス A とクラス B の間には、汎化と集約の線が引かれている。2つの要素を結ぶやり方が完全に固定だと、こういった状況を上手く扱えない。

この問題を(せめて部分的にでも)解決するために、コネクタには linestyle という属性が要素されている。これは2要素を接続する線の描画方法を指定するもので、T, B, L, R のいずれかを組み合わせた2文字かまたは CC を指定する。デフォルト値の CC を指定すると、互いの中心を結ぶような直線として描画される。T, B, L, R はそれぞれ Top, Bottom, Left, Right を意味しており、要素を矩形としてみた時の上下左右の端を接続点とする。

例を見てみよう。CC は上の例の汎化を見てもらえれば良いだろう。以下は RL の例だ。

同じ位置関係で、BT と RR を試してみよう。

察しのいい人は気付いているだろうが、これは接続対象の位置関係を理解して立ち回る「スマートな」もの、ではない。だから以下のようなことは起こりうるし、常にユーザが理解した上でやっているものとみなされる。

この仕様に満足しているわけではないが、ひとまずこれをなんとかする気は(今のところ)ない。というのは、、いつだったかのバージョンで Visio に導入されたスマートコネクタを覚えているからだ。あれは障害物を迂回してくれるなど気合いの入った実装だったが、それでも常にユーザが満足するようなライン取りをしてくれるわけではなかった。その時の経験から、この問題にリソースを注ぎ込むことには慎重になっている。

さて、linestyle 属性の話だけで終わってしまったが、まぁいいだろう。次回は共通属性の話にしよう。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : 開発

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.