LoginSignup
0
0

More than 1 year has passed since last update.

UMLにおけるクラス図の制約って大事だよねっていう話

Posted at

概要

特にUMLの読み方とか制約についての説明はしていません。
制約の有無により、解釈を制限できるというお話です。

本題

次のクラス図があったとします。
よくある再帰的な関連を持つクラスを表現したクラス図です。

LT-制約-ページ1.drawio.png

さて、上のクラス図からオブジェクト図を作るとしたら次のようになるでしょうか。

LT-制約-ページ2.drawio.png

山田さんは、佐藤さんと田中さんの上司であることを表現したオブジェクト図ですね。
クラス図の多重度にも違反していないので、正しく表現できているように思えます。

本当にこのパターンだけでしょうか。。?
次のオブジェクト図を見てみましょう。

LT-制約-ページ3.drawio.png

山田さんは佐藤さんの上司です。
佐藤さんは田中さんの上司です。
田中さんは山田さんの上司です。(?)

クラス図の多重度にも違反していないので、正しく表現てきている。。感じがしませんね。
実は最初に提示したクラス図だと、こういったケースも考えることができてしまいます。
そう、上司と部下の関係がループしています。

再帰関連を使ったクラスの表現はループになりますので間違ってはいないのですが、違和感があります。
それは、一般的に会社の組織において、上司と部下という役割は本来ループするような関係では無いためです。
(上司の部下の上司からは部下として仕事してます。というのはあまり聞きせんね。)

こういった時は、次のように制約を定義することで、解釈に制限を設けることができます。

LT-制約-ページ4.drawio.png

上のように階層制約が定義されたクラス図の方が、オブジェクト図も作りやすいかもしれませんね。

LT-制約-ページ5.drawio.png

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0