『UML モデリング教科書 UML モデリング L1 第２版』補⾜

初回公開：2009/03 更新⽇：2009/03/06『UML モデリング教科書 UML モデリング L1 第 2 版』補⾜株式会社テクノロジックアート
テクニカルデプト

照井康真

書籍『UML モデリング教科書 UML モデリング L1 第 2 版』で説明しきれなかった内容や、実際のソフトウェア開発で活⽤するためのポイントなどの補⾜情報です。なお、事前に書籍をお読みになっていることを前提としておりますので、まだお読みでない⽅は、是⾮、ご参照ください。

1. 集約関係とコンポジション「クラス間の関係を定義する上で、集約関係とコンポジションの使い分けがわからない」といった声をよく⽿にします。これは、以前の版である UML1.x では、集約関係とコンポジションの違いが、今現在の版よりも曖昧であったことが、原因のひとつとして考えられます。

1-1.

集約関係とコンポジションの違い

集約関係とコンポジションの違いに重点を置いた説明は、次のとおりです。

表 1 集約関係とコンポジションの説明№項⽬表記

英名⽇本語説明直訳
1

集約関係と集約関係か

aggregation

集約

オブジェクト間の関係が「全体」と「部分」の関係であることを表す。

コンポジシ

コンポジシ

「has-a」関係や、「is-part-of」関係とも呼ばれ、全体側のオブジェク

ョンに共通

ョンのいず

トは、部分側のオブジェクトを所有していると⾔われたり、部分側のした内容

れかオブジェクトは、全体側のオブジェクトの⼀部であると⾔われたりする。

2

集約関係固

shared有の内容

aggregation

共有集約

下の「項⽬№3 コンポジション（composite aggregation）」に⽐べ、より弱い集約の関係。部分側のオブジェクトが、同時に複数の全体側のオブジェクトから集約されることがあり得る。全体側のオブジェク
トが破棄されても、部分側のオブジェクトは、破棄された全体側のオブジェクトとは別のオブジェクトの⼀部であるため（または、将来的に⼀部になることがあり得るため）、通常、同時に破棄されない。
例えば、「得意先」と「仕⼊先」オブジェクトは、ひとつの「取引先」オブジェクトを共有していると捉えることができる。これは、ひとつの取引先が、得意先にも仕⼊先にも、同時になり得るからである。仮に、その取引先が仕⼊先ではなくなり、仕⼊先オブジェクトが破棄されたとしても、得意先としては依然として存在するため、取引先オブジェクトは破棄されない。なお、これらの、得意先、仕⼊先、取引先間の関係は、集約関係だけが唯⼀の表現⽅法というわけではなく、多重継承や動的分類などによって表現する場合もある。

COPYRIGHT © TECHNOLOGIC ARTS INC.

1

『UML モデリング教科書 UML モデリング L1 第２版』補⾜

3

コンポジシcompositeョン固有のaggregation

内容

合成集約

初回公開：2009/03 更新⽇：2009/03/06

上の「項⽬№2 集約関係（shared aggregation）」に⽐べ、より強い集約の関係。部分側のオブジェクトが、同時に複数の全体側のオブジェクトから集約されない。つまり、部分側のオブジェクトから⾒て、全体側のオブジェクトの数は、0（存在していない）か、1（ひとつだけ存在する）のどちらかであり、2 以上にはならない。部分側のオブジェクトから⾒て、唯⼀の全体側のオブジェクトが破棄されると、その時点で⼀部となっている部分側のオブジェクトも、通常、同時に破棄される。これは、「ライフサイクルが同じ」と⾔い表されることがある。
例えば、「本棚」に収納されている「本」は、同時に複数の本棚に収納されることはない。本棚から出されているか、どれかひとつの本棚に収納されているかの、いずれかである。仮に、本棚に本が収納されている状態のまま本棚を処分すると、本棚に収納されている本も同時に処分される（本棚を処分する際には、あらかじめ本棚から本を取り出しておくことをお勧めする）。なお、これらは、あくまでも物理的な観点のみから⾒た場合の関係であり、論理的な別の観点を優先して考慮する必要がある場合などは、必ずしも本棚と本がコンポジションの関係になるとは限らない。図書館の蔵書管理システムを例に取ると、本棚が処分される時に、その本棚に収納されているはずの本が、本棚と同時にどうなってしまうかは、通常、考慮しないことが多い。たとえ、本が収納されている本棚が新しいものに買い替えられようとも、本が図書館の蔵書であることに影響を与えないからである。この場合は、本が、図書館や⽬録といった、本棚とは別のオブジェクトとコンポジションの関係にあると捉えることもできる。

1-2.

集約関係とコンポジションの使い⽅

UML の仕様で定められているのは、あくまでも表記法だけであり、モデリング⽅法は、プロジェクトにとって扱いやすいものを選択することができます。今回の題⽬では、クラス図を書くときに、必ずしも集約関係とコンポジションを区別して書かないといけない、というわけではないということです。ある集約関係が、厳密にはコンポジションなのかどうか、といったことを考慮しない⽅が、都合が良い場合もあります。
次の表は、集約関係とコンポジションの使い分けという観点で、代表的な使い⽅を、⼤きく６つに分類したものです。

COPYRIGHT © TECHNOLOGIC ARTS INC.

2

『UML モデリング教科書 UML モデリング L1 第２版』補⾜

初回公開：2009/03 更新⽇：2009/03/06

表 2 集約関係とコンポジションの使い⽅(2) 設計モデリング(1) 分析モデリング

集約関係とコンポジションを区別する場合(a) 集約関係とコンポジションを(b) 集約関係と通常の関連を(c) 集約関係と通常の関連を区別しない場合

区別する場合区別しない場合(1a) 「全体」と「部分」の関係を、す(1b) ひとつのクラス図の中に、集約(1c) 左の 1b の集約関係を、通常の関べて集約関係として記述する。つまり、 関係とコンポジションの両⽅を混在連に置き換える。つまり、クラス間のクラス間の関係として、通常の関連と集させる。つまり、クラス間の関係とし関係として、通常の関連とコンポジシ約関係は登場するが、コンポジションはて、通常の関連と集約関係、そしてコョンは登場するが、集約関係は登場し登場しない。部分側のオブジェクトを表ンポジションが登場する。概念的に、ない。これは、集約関係とコンポジシす概念が、複数の全体側のオブジェクト部分側のオブジェクトが、複数の全体ョンの違いほど、集約関係と通常の関を表す概念から共有されるかどうかや、 側のオブジェクトから共有されない連に違いがないことによる。集約関係

ライフサイクルが同じかどうかまでは、 といったビジネスルールを、クラスのと通常の関連を区別しなくとも、シス設計的にだけではなく、概念的にも考慮構造で明⽰したい場合などの使い⽅。

テムの仕様には、ほとんど影響を与えしない。システムに関係がある概念構造

明⽰されたビジネスルールは、システない。むしろ、あいまいな情報を排除のみを明確にするという、⼀番の⽬的にムの仕様として、⼊⼒値の検査や、操することによって、関係者間のコミュ集中することで、モデリング作業の効率作時の動作などに反映される。

ニケーションが円滑化されることを期化が期待できる。

待できる。

(2a) 上の 1a の場合と同様に、「全体」 (2b) 上の 1b の場合と同様に、ひと(2c) 上の 1c の場合と同様に、左の 2bと「部分」の関係を、すべて集約関係とつのクラス図の中に、集約関係とコンの集約関係を、通常の関連に置き換えして記述する。多くのプログラミング⾔ポジションの両⽅を混在させる。実装る。多くのプログラミング⾔語におい語において、コンポジションは、集約関上のオブジェクトが、共有されるものて、集約関係と通常の関連には、実装係や通常の関連と同様に、構造的には、 なのかどうかや、オブジェクトが破棄上の違いはない。効果が少ない作業をオブジェクトの属性として扱われる。こされるタイミングといった仕様を、ク排除することによって、設計作業の時のため、実装上のオブジェクトが、共有ラスの構造で明⽰したい場合の使い間短縮が期待できる。

されるものなのかどうかや、オブジェク⽅。例えば、XML の中で、あるオブジトが破棄されるタイミングといった仕ェクトの情報が、別のオブジェクトの様は、必要であれば、シーケンス図などタグの中に含まれるのか、それともたの別の図や、⽂章、制約などで記述する。 だ単に参照されるだけなのかなどの違いを表現できる。

このように、ひとことで集約関係とコンポジションと⾔っても、使い⽅はひとつだけではありません。また、今回紹介した使い⽅以外の使い⽅もあるかもしれません。集約関係とコンポジションに限らず、プロジェクトで最適な使い⽅を選択することが、UMLの⻑所を引き出し、ソフトウェア開発を円滑に進めるポイントです。

COPYRIGHT © TECHNOLOGIC ARTS INC.

3