クラス図の書き方

クラス図とは実は当たり前で簡単なものなのです。

ちょっと詳しい関係の書き方

クラスに関する付加情報は簡潔に言えば「勝手に好きなものを書きなさい」で したが、関係についてはもう少し親切に規定しています。関係の表記はクラス 図の根本にあたるものですから、もう少し詳しく見ていきましょう。

重複度

あるインスタンスに対して、その関係の先にあるインスタンスがいくつあるか を示すのが重複度です。関係を表す線の端に数字を書きます。数字は一つ書く か、","で区切って複数書くか、".."で範囲を指定します。もちろん0もあり得 ます。それから任意の数字(無限大)は"*"で表します。例えば次のようにです。

2
2だけ
1,2,3,6
1,2,3,6のどれか
1..4
1,2,3,4のどれか(1から4まで)
2..*
2以上
0..4
4以下
0..2,4..6
0,1,2,4,5,6のどれか
*
任意の数字(0以上)

例えば以下の例では、高等裁判所一つに対して1以上の地方裁判所が対応し、 逆に一つの地方裁判所に対応する高等裁判所は一つしかないことを示します。

重複度の書き方
重複度の書き方

重複度には任意の数字を書けますが、実際に使用するのはほとんど次のどれか でしょう。

1
必ず1つだけ対応
0..1
1つだけ対応するが、対応がない時もある
*
複数対応し、対応がない時もある
1..*
必ず一つ以上の複数が対応する

ほとんどの場合、上記以外の重複度を書く事は後になって変更されるかもしれ ない事項を書くことにつながります [1] 。例えばサッカーでは選手は11人だからといって重複度に「11」と書いてしま うと、レッドカードで一人減った時に困ります。そしてサッカーというものの 仕様を考える上では11人だって10人だって大きな違いはありません。「サッカー は複数の選手でボールを蹴る」というだけで十分であり、わざわざ11人と書く 必要性は多くありません [2]

重複度を書くことは関係の対応を正しく把握する事につながります。ぜひ書き ましょう。

限定子

あるインスタンスに対して、「○○ごとに」あるインスタンスが関係すると いう事を表記するのが「限定子」です。例えば野球では、チームに対して、ポ ジションごとに選手が対応します。これを下のように書きます。

限定子の書き方
限定子の書き方

この関係では次の事を表現しています。

  • チームには選手は複数いる

  • 選手は必ずどこか一つチームに所属し、かけもちはしていない

  • チームにはどのポジションにも選手が必ず一人いる。選手 のいないポジションはない。

サッカーの場合にはFWやDFといったポジションに対して選手が複数対応するこ ともありますし、逆にいない場合もあります。この場合には重複度は"*"にな ります。

さて、前の項でサッカーの場合には重複度のところに11と書いてはいけないと いう話をしました。では野球では9と書いていいのでしょうか?この答えがこ の限定子を使った図です。野球では「9人の選手がいる」と書くよりは「ポジ ションごとに選手が一人ずついる。(そしてポジションが9個ある)」と書いた 方がより的確です。将来、ルールが改正されてポジションが増えたり減ったり しても対応できるという柔軟性も兼ね備えています [3]

限定子はコンマで区切って複数書くこともできます。例えば将棋では行と列に 対して駒があります。

複数の限定子
複数の限定子

まとめ

重複度と限定子はクラス間の関係をより的確に表すのに重要なものです。クラ ス図で関係の線を書いたら必ず重複度について考えましょう。重複度は詳しい 数字を書かなくても、先に書いた4種類のどれかで十分です。

逆に、重複度に詳しい数字を書かないようにしましょう。多くの場合それは暫 定的なものであって、クラス図に書くような事ではありません。正確な個数を 表現する場合には限定子を使う方が的確に表現できる場合がよくあります。


  1. プログラムを知っている人には、「プログラムに定数を直接書き込むことに等しい」と言えばわかりやすいでしょうか。 ↩︎

  2. 「反則退場のない野球のようなスポーツでは9人と書いていいのか?」という当然の質問の答えは次の項で書くことにします。 ↩︎

  3. バレーボールだって9人制から6人制が主流になったのですから、野球だってないとは限りません。 ↩︎