[#30426] CGI でグラフを描くときにお勧めのライブラリは? — 堀川 久 <vzw00011@...>

こんにちは。

12 messages 2001/07/01

[#30453] syntax check without execution? — Tanaka Akira <akr@...17n.org>

最近、eRuby のまねごとをしていて、そのなかで Ruby のコードを生成してい

16 messages 2001/07/04
[#30455] Re: syntax check without execution? — matz@... (Yukihiro Matsumoto) 2001/07/04

まつもと ゆきひろです

[#30479] Object#dup — "Shin'ya Adzumi" <adzumi@...>

あづみです。

20 messages 2001/07/05

[#30512] open errno EALREADY triggerd — "Inoue" <inoue@...>

井上です。

16 messages 2001/07/08

[#30514] Ruby module frame work? — Takahiro Kambe <taca@...>

こんにちは。

16 messages 2001/07/09
[#30515] Re: Ruby module frame work? — matz@... (Yukihiro Matsumoto) 2001/07/09

まつもと ゆきひろです

[#30529] InterBase を使用したい — "YOUJI KUROKAWA" <CQE10242@...>

環境

22 messages 2001/07/09

[#30530] Question about script on the book "Ruby nyuumon" — NAWATE Masahiko <agul@...>

縄手@松江と言います。

17 messages 2001/07/09
[#30531] Re: Question about script on the book "Ruby nyuumon" — rubikitch <rubikitch@...> 2001/07/09

From: NAWATE Masahiko <agul@mag.shimane-u.ac.jp>

[#30533] Re: Question about script on the book "Ruby nyuumon" — NAWATE Masahiko <agul@...> 2001/07/09

縄手@松江です。

[#30734] UML クラス図と Ruby の記述についての対応 — Ken-ichi HASHIMOTO <ken@...>

橋本@福井県在住です。

13 messages 2001/07/28

[#30764] int/int => float? — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

50 messages 2001/07/31
[#30767] Re: int/int => float? — keiju@... (石塚圭樹) 2001/07/31

けいじゅ@日本ラショナルソフトウェアです.

[#30768] Re: int/int => float? — matz@... (Yukihiro Matsumoto) 2001/07/31

まつもと ゆきひろです

[#30770] Re: int/int => float? — Take_tk <ggb03124@...> 2001/07/31

たけ(tk)です。

[#30771] Re: int/int => float? — matz@... (Yukihiro Matsumoto) 2001/07/31

まつもと ゆきひろです

[#30785] Re: int/int => float? — Konishi@... (Hiromasa KONISHI) 2001/07/31

 KONISHI Hiromasaです。

[ruby-list:30736] Re: UML クラス図と Ruby の記述についての対応

From: keiju@... (石塚圭樹)
Date: 2001-07-28 15:14:07 UTC
List: ruby-list #30736
けいじゅ@日本ラショナルソフトウェアです.

In [ruby-list :30734 ] the message: "[ruby-list:30734] UML クラス図と 
Ruby の記述についての対応 ", on Jul/28 14:32(JST) Ken-ichi HASHIMOTO
writes:

>橋本@福井県在住です。

> はじめまして、初めてruby-listにメールを出します。
>
> さて、本題ですが、「UMLクラス図」と「Rubyのクラス定義」について
> どのように対応しているか?ということです。
>  <背景>
>    UnixのX上(またはWin32上)で動作するUML図もかけるDiaというドローソフト
>    があります。
>    また、dia2codeとよばれている、diaの保存形式から C++/Java/(C?)のソースを
>    生成してくれるツールもあります。
>    それぞれ ソース公開されGPLだったと記憶しています。
>     # 補足: 他の高いTOOL(例:バラ)などは、逆もできるなど利点がありますが
>     #       個人ユースの場合、クラス図 -> ソースの機能だけでも有用です。

そういう会社のものです. 

> <対応>
>  <クラス図>
>    +---------+
>    | Person  |
>    +---------+
>    +---------+
>    +---------+
>  </クラス図>
>  <Rubyソース>
>    class Person
> 
>    end
>  </Rubyソース>
> </対応>
> <対応>
>  <クラス図>
>    +----------+
>    | Person   |
>    +----------+
>    |+name     |
>    |-age      |
>    +----------+
>    |+inc_age()|
>    |-do_hoge()|
>    +----------+
>  </クラス図>
>  <Rubyソース>
>    class Person
>      @name
>      attr_accessor :name
>      @age

Rubyのインスタンス変数は、UMLで言うところのprotected(#)な属性になります.
UMLで言うところのprivate(-)は今のところありません. 現在ruby-dev MLで議論
中ですね.

>      def inc_age()
>         # TODO
>      end
>      def do_hoge()
>         # TODO
>      end
>      private :do_hoge

これもRubyで言うところのprivateは、UMLで言うとことのprotected(#)に近いで
すね。UMLで言うとことのprivate(-)なメソッドは今のところありません.

>  </Rubyソース>
> </対応>

> <対応>
>  <クラス図>
>    +---------+
>    | Base    |
>    +---------+
>    +---------+
>    +---------+
>        △
>        |
>    +---------+
>    | Dived   |
>    +---------+
>    +---------+
>    +---------+
>  </クラス図>
>  <Rubyソース>
>    class Dived < Base
> 
>    end
>  </Rubyソース>
> </対応>
> <対応>
>  <クラス図>
>                        +---------+
>                        |<<mixin>>|
>    +---------+         | My_mixin|
>    | Base    |         +---------+
>    +---------+         +---------+
>    +---------+         +---------+
>    +---------+             △
>        △                  |
>        |  +−−−−−−−+
>        |  |
>    +---------+
>    | Dived   |
>    +---------+
>    +---------+
>    +---------+
>  </クラス図>
>  <Rubyソース>
>    module My_mixin
>    end
>
>    class Dived < Base
>      include My_mixin
>
>    end

個人的には、moduleのステレオタイプを<<module>>に、includeを汎化に
<<mix-in>>ステレオタイプ付けようと提案しています。

>  </Rubyソース>
> </対応>
> <対応>
>  <クラス図>
>    +----------+
>    | Person   |
>    +----------+
>    |+name     |  -age      +----------+
>    +----------+◇--------→| Date     |
>    |+inc_age()|          1 +----------+
>    |-do_hoge()|            +----------+
>    +----------+            +----------+

下の意図とすると、ロール名のついている関連端が逆ですね。Date側にageでは
ないですか? あと, -ageではなく#ageでしょうね. 理由は属性の時と同じです.

>  </クラス図>
>  <Rubyソース>
>    class Person
>      @name
>      attr_accessor :name
>      @age   # refarence to Date
>      def inc_age()
>         # TODO
>      end
>      def do_hoge()
>         # TODO
>      end
>      private :do_hoge
>    end
>  </Rubyソース>
> </対応>
>
> もしかして、UMLクラス図とはうまく対応しないのでしょうか?

立石さんのメイルにもありますが、目的は何でしょう?

1. UMLで表現されたものをRubyに落としたい
2. Rubyでプログラムするうえで、設計レベルをUMLで表現したい? つまり、
   Rubyで表現できることすべての設計レベルの記述をUMLで行いたい?

1はそんなに難しくないと思いますが、2は難しいと思います. 実際、自分が作っ
たRubyのプログラムをUMLで表現することは難しいことが多いです。

理由はいくつかあって:

1. Rubyの変数には型がない。UMLでは、属性は型がなくても良いですが、関連は必然的に
   型を決めなくてはいけない。

2. Rubyは動的な言語。例えば、動的にメソッドが定義できる。あと,
   obj.extendもある

3. Rubyには、特異メソッドがある。UMLにはない。

4. moduleのネストクラス。UMLでもネストクラスの概念はありますが、それを直
   接表現できない。

__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju@rational.com <<---

In This Thread