From: Ken-ichi HASHIMOTO Date: 2001-07-28T14:32:20+09:00 Subject: [ruby-list:30734] UML クラス図と Ruby の記述についての対応 橋本@福井県在住です。 はじめまして、初めてruby-listにメールを出します。 さて、本題ですが、「UMLクラス図」と「Rubyのクラス定義」について どのように対応しているか?ということです。 <背景> UnixのX上(またはWin32上)で動作するUML図もかけるDiaというドローソフト があります。 また、dia2codeとよばれている、diaの保存形式から C++/Java/(C?)のソースを 生成してくれるツールもあります。 それぞれ ソース公開されGPLだったと記憶しています。 # 補足: 他の高いTOOL(例:バラ)などは、逆もできるなど利点がありますが # 個人ユースの場合、クラス図 -> ソースの機能だけでも有用です。 現在、みようみまねで dia2code に ruby 対応のソースを入れています。 流石に、1から聞くというのも皆様にご迷惑かかりますので、こちらで勝手に 対応させてみました。 Rubyのポリシーという物をまだ理解できていないために、 変なところもあると思います。 「xxxが問題ある」・「問題ない」などご検討いただけると嬉しいです。 長いですが、ご了承ください。(等幅フォントをご利用の上ご覧ください) # 注意: UML図とRubyのソース対応としてのみ、参照してください。 # (「なんで xxx 属性をpublicにするのだ?設計が間違っている」とかは # ここで議論を求めているものではありませんのでご了承ください) <対応> <クラス図> +---------+ | Person | +---------+ +---------+ +---------+ class Person end <対応> <クラス図> +----------+ | Person | +----------+ |+name | |-age | +----------+ |+inc_age()| |-do_hoge()| +----------+ class Person @name attr_accessor :name @age def inc_age() # TODO end def do_hoge() # TODO end private :do_hoge end <対応> <クラス図> +---------+ | Base | +---------+ +---------+ +---------+ △ | +---------+ | Dived | +---------+ +---------+ +---------+ class Dived < Base end <対応> <クラス図> +---------+ |<>| +---------+ | My_mixin| | Base | +---------+ +---------+ +---------+ +---------+ +---------+ +---------+ △ △ | | +−−−−−−−+ | | +---------+ | Dived | +---------+ +---------+ +---------+ module My_mixin end class Dived < Base include My_mixin end <対応> <クラス図> +----------+ | Person | +----------+ |+name | -age +----------+ +----------+◇--------→| Date | |+inc_age()| 1 +----------+ |-do_hoge()| +----------+ +----------+ +----------+ class Person @name attr_accessor :name @age # refarence to Date def inc_age() # TODO end def do_hoge() # TODO end private :do_hoge end もしかして、UMLクラス図とはうまく対応しないのでしょうか? --- 橋本 賢一 Ken-ichi HASHIMOTO E-Mail ken@po.ganseki.ne.jp