Top / UML / クラス図の基礎

UMLのクラス図を、実際にソースコードに落としたときのスケルトンでまとめてみました。

単純な関連

まずは単純な関連です。誘導可能性がないため、どちらにも参照をもつ*1形になってしまいますね。あんまりよろしくないでしょう。

01.png
public class Directory {
 private  File child;
}

public class File {
 private  Directory parent;
}

誘導可能性を追加した関連

誘導可能性を追加すると、片方にしか参照をもたなくなります。一般的な関連といえますね。

02.png
public class Directory {
  private  File child;
}

public class File {
}

継承関係

継承はこんな感じ。

03.png
public class Directory {
  private  File child;
}

public class File extends Directory {
}

集約の関係

集約(Aggregate)にしてみました。ここでは配列ですが、Listでもよいですね。

04.png
public class Directory {
  private  File[] child;
}

public class File extends Directory {
}

インターフェースの関係*2

インターフェースの実現の関係です。

05.png
public interface Entry {
}

public class Directory implements Entry {
  private  Entry[] entry;
}

public class File implements Entry {
}

依存関係

依存はフィールドに持たないような関連性の低い関連(?)*3を表すときに用います。

06.png

関連性の低い関連、を説明しているサイトがありました

ここを引用すると、

パラメータの型を命名したり一時変数内にオブジェクトを作ったりすることは、「依存」を意味する。

んだそうです。だいたい上の説明であってるみたい。

細かい話

関連クラスのはなし*4

複数の会社に属する人がいるってのを表すと、始めこうモデル化されると思いました。

クラス図.png

オブジェクト図で表すと下図のようになりますが、

オブジェクト図.png

よく考えると社員は複数の会社の社員番号*5をもてないって事になります。

いろいろ考えるとモデリングが悪いって事で、改善した結果がこれ。

改善したクラス図.png

オブジェクト図を書いてみて、正しく表現できそうですね。

改善したオブジェクト図.png

この社員情報クラスのように、二つのインスタンス間の関連に付属する属性のクラスのことを関連クラスというそうです。UMLで記述する場合

関連クラス.png

と書きます。

限定子の使い方

クラス間で、どの属性を用いて相手のインスタンスを特定するかを表すために限定子という記号を用います。たとえば、次のモデルの場合

07.png

会社から見た場合、組織は組織コードによってユニークになります。それを表すとき

08.png

と書きます。この組織コードという一つの四角のことを限定子と呼びます。限定子によって組織クラスはユニークとなるため、関連の多重度が1になっているところがポイントです。


この記事は

選択肢 投票
おもしろかった 351  
そうでもない 75  

Top / UML / クラス図の基礎

現在のアクセス:196282


*1 フィールドにもつってこと
*2 ちなみにCompositeパタンですね
*3 メソッドの引数・返り値とか、メソッド内でクリエイトされるとか
*4 この記述は【改訂版】初歩のUML 第4回を参考にさせて頂きました。頭の中の整理っつう事でメモ書きとして記してます。
*5 a社とb社の社員番号

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS