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になっているところがポイントです。


この記事は

選択肢 投票
おもしろかった 397  
そうでもない 99  
  • 限定子が逆ですよね。組織を限定したいので、組織側に限定子がないと意味が成り立ちません。これでは会社が組織コードで限定されてしまうますよ。 -- 山口 祐史? 2023-11-27 (月) 20:33:08
  • 限定子が逆ですよね。組織を限定したいので、組織側に限定子がないと意味が成り立ちません。これでは会社が組織コードで限定されてしまうますよ。 -- 山口 祐史? 2023-11-27 (月) 20:33:39

Top / UML / クラス図の基礎

現在のアクセス:196283


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

添付ファイル: file08.png 2512件 [詳細] file07.png 2632件 [詳細] file04.png 2749件 [詳細] file03.png 2798件 [詳細] file01.png 2711件 [詳細] file02.png 2566件 [詳細] file関連クラス.png 2522件 [詳細] file改善したオブジェクト図.png 2864件 [詳細] file改善したクラス図.png 3023件 [詳細] fileオブジェクト図.png 3605件 [詳細] fileクラス図.png 2494件 [詳細] file06.png 2310件 [詳細] file05.png 2965件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-27 (月) 20:38:09 (141d)