プロマネBlog

2006年04月28日

本日は、第16回の図中で少しだけ触れましたコネクタについて、解説いたします。

3ー1ー4 コネクタ 

2つ以上のインスタンス間のコミュニケーションを可能にするリンクを意味します。
このリンクは関連のインスタンスである場合もありますが、必ずしもそれに限りません。
単純なものから複雑なコミュニケーション経路、例えば様々なネットワーク機器からなる連鎖まで、幅広い意味を持ちます。
コネクタの両端はコネクタ端と呼ばれ多重度を付けることが可能です。

F05new.png

2006年04月27日

昨日に引き続き、プロパティの多重度のお話しです。

プロパティの多重度

プロパティの多重度は、図F13の左図のように、長方形の右上隅に表記するほか、右図のように範囲指定することも出来ます。
左図は車輪クラスのインスタンスが4つ存在し親の分類子のインスタンスにコンポジット所有されていることを意味し、右図では、1つ以上2つ以下のエンジンのインスタンスが、親の分類子のインスタンスと関連があることを示しています。

図F13

F13.png

2006年04月25日

3ー1ー3 プロパティ

プロパティは包含する側の分類子のインスタンスに所有されるインスタンスの集まりを意味し、具体的にはパートとポートが該当します。
親の分類子がインスタンス化された時には、そのプロパティに対応するインスタンスが、(即時的もしくは時間をおいて)生成されます。
これらのインスタンスは、プロパティのタイプに指定されている分類子のインスタンスです。(図F11はパートの表記法であり、このパートのインスタンスは、クラスのインスタンス(オブジェクト)となります)

図F11
F11.png

パートでの表現は、親の分類子が子のプロパティをコンポジットで所有することを意味し、親のインスタンスが消滅すると、子のインスタンスも消滅します。
図F10 (i)では、車クラスが役割名が「後輪」である車輪クラスをコンポジットで所有し、エンジンクラスと役割名eで関連を結んでいます。
(ii)では、同じ状態が表されていますが、注意すべき点は、「後」および「e」は、(ii)図では、ともに車クラスの内部構造に属しており、単に車輪クラスとエンジンクラスを一般的に所有しているのではなく、「後」および「e」の役割の中で所有されていることです。
つまり、(i)図では、任意の車輪クラスとエンジンクラスが車クラスと関連を持つことが出来ますが、(ii)図では、「後輪」と「e」の役割を持つ車輪クラスのインスタンスとエンジンクラスのインスタンスが、車クラスの同一のインスタンスにリンクしていることを意味します。
パートは、長方形の中に(不特定の)クラス名を記述して表現しますが、図F11のように、パート名の後のコロン:の後にタイプとしてクラス名を指定して表現することも可能です。
また、コンポジット所有でないパートは、長方形を実線ではなく点線で表記します。

図F10
F10.png

ポートの表記

図F12
F12.png

ポートは小さい四角形で表され、分類子の長方形の境界線上に置かれた場合は可視性がパブリック、分類子の長方形の内側に置かれた場合は、ポートが隠されており可視性がプロテクトであることを示しています。
ポートには多重度を付けることが可能で、図F06の左図は、ポートPの多重度が1であることを示しています。
また、ポートにはタイプ名(型名)を付けることが可能であり、ポート名:タイプ名 で表記します。図F06の右図は、ポート名がP、タイプ名が伝動機構であることを示します。(伝動機構は提供インターフェースの名前でもある。)

図F06
F06.png


振る舞いポート

図F07
F07.png
分類子の内部の小さなステートシンボルにコネクタ接続されたポートは、振る舞いポートと呼ばれます。(図F07参照)
図中の小さなステートシンボルは分類子(この図の場合「エンジン」クラス)の振る舞いを表しています。

図F09
F09.png

ポート名は省略可能です。また、カンマで区切って複数のインターフェースをリスト表現することが可能です。
図F09では、オンラインサービスと言うポートに、オーダー入力とトラッキングという2つの提供インターフェースが接続され、支払いという1つの要求インターフェースが接続されていることを示しています。

図F08
F08.png

図F08の中の左上の図は、エンジンクラスにポートPがあり、伝動機構と言う名前の提供インターフェースと動力という名の要求インターフェースが接続されていることを示しています。
提供インターフェースはポートPで提供するサービスを指定しており、要求インターフェースは、外部環境に期待するサービスをしています。従って、両者は依存関係でもあります。(図F08の左下)
また、エンジンクラスは完全にカプセル化されおり、インターフェースの持つ条件さえ満たせば、どんな外部環境下でも適切に動作します。
図F08の右図は、エンジンクラスの2つの使われ方を示しています。
車クラスでは、エンジンクラスのポートPは後輪と車軸でつながり、ボートクラスでは、エンジンクラスのポートPはプロペラとシャフトで接続されていることを示しています。
両ケースとも、インターフェースの条件さえ満たせばエンジンは適切に作動します。(図F08右上で示されるように、コネクタとパートは必ずしもポート経由で接続されている必要はありません。

トリガー

あるイベントが発生した時に、特定の振る舞いを呼び出すことをポートに指定することが可能です。このイベントの指定をトリガーと言います。

2006年04月24日

3ー1ー2 ポートの理解

ポートは、対象の分類子(構造化分類子)のインスタンスと外部環境の間、あるいは分類子(構造化分類子)と内部分類子のインスタンス間のインタラクション(相互作用)の接点を表し、これ自身がプロパティの一種です。


図F06

F06.png


ポートの特徴

❑ インタラクションの接点  
  
   1.構造化分類子のインスタンスと外部環境

   2.構造化分類子のインスタンスと内部分類子のインスタンス

❑ 要求インターフェース: 要求インターフェースは、分類子が外部環境に対して期待しているサービスを性格付けおり、分類子のインスタンスは、外部環境のインスタンスからインターフェースによって規定された振る舞い特性を要求しています。

❑ 提供インターフェース: 提供インターフェースは、分類子が外部環境に提供するサービスの振る舞い特性を性格付けします。

❑ インタラクションの接点オブジェクトは、通常、提供インターフェースを実現する側の分類子のインスタンスです。

❑ ポートは、ポートに到達するすべてのリクエストが分類子のインスタンスによって適切に扱われるよう指定する能力をもちます。(単に、任意の内部の分類子のインスタンスにばらまくだけではありません。)
内部のプロパティとポートがコネクターで接続されている場合は、ポートに到達したすべてのリクエストは、コネクタに沿って転送されます。

2006年04月23日

プロパティ

プロパティは図上で四角形で表されることから分かるように、何らかの分類子(もしくはインスタンスの集まり)を示しています。
ただし普通のクラス図と違い、プロパティは分類子の役割の方に重点を置いており、役割を重視してこれをパートと呼びます。(パートは役割名と解釈しても良いでしょう。)
例えば、図F05の内部構造に存在する4つのパート、即ち、「チューナー」「アンプ」[スピーカー」「電源部」は、何らかの電気回路を意味しています。
従って、これらの四角形はすべて「電気回路」という同一のクラスを表しているが、ただ、それぞれ役割が違うという風に解釈することも可能です。
さらに言うと、これらのクラスは、IC回路であっても、トランジスタ回路であっても、真空管回路であってもかまいません。
要は、この図は4つの役割を持つ分類子(プロパティ)から構成されていることを示しており、ここ数十年間の間に、真空管→トランジスタ→ICと構成部品は変遷して行ったが、基本的な役割間の関係や組み合わせ、パターンは共通であるいう風にも解釈されます。

図F05
F05new.png

役割/パターンのに着目 

この、分類子自身の成り立ちそのものよりも役割の方を重視する考え方は、UML2.0になって、より明示的になり強化されました。
UML1.Xの時代には、オブジェクト間、インスタンス間のメッセージのやり取りとして解釈されていたインタラクション図(相互作用図)は、現在では、各役割間のメッセージのやり取り、パターンとして再定義されています。

また、従来コラボレーション図と呼ばれていたオブジェクト間のメッセージのやり取りを表した図はコミュニケーション図と名前を変え扱いが非常に小さくなってしまい、それに変わって、新しいコラボレーション図が登場しました。

新しいコラボレーションの登場 

内部はコラボレーション

この新しいコラボレーション図は、まさに役割間の関係、パターンを表現するための図です。
新しいコラボレーション図は、OCUPのアドバンスト資格試験で取り扱われる図ですので、本書では深く取り上げませんが、複合構造図と密接な関係があり、F05図に表される「FMラジオ」のような、内部構造を持った分類子(注: 構造化分類子と呼ばれます)は、実は分類子の内部のコラボレーションを表している図として定義されています。
つまり、複合構造図は単にクラス図が入れ子になった図ではなく、役割と役割間の相互作用に焦点を置いたコラボレーションを表した図として理解する必要があります。