クラス図

テンプレート

UMLでは、テンプレート(template)を使用することもできる。テンプレートされたクラス(パラメタライズドクラス(parameterized class))を示すには、クラスの右上に破線の長方形を置き、そこへテンプレート型の名前を記述する。(例えば、T型)1つのクラス…

ボールとソケットによる表記

ボールとソケットによる表記は、インターフェースの詳細についての記述が不要なときで、それよりもクラス間の関係のほうを明確に(視覚的に)したい場合にもちいると便利である。この方法ではインターフェースを提供する側は、提供するインターフェースを単…

ステレオタイプによる表記

ステレオタイプによる表記は、UMLの標準的な分類子の表記法にステレオタイプ > をつけて表現する。 インターフェースの詳細を記述することが可能である。

インターフェース

インターフェース(interface)は、分類子の1種類であり、プロパティや操作の宣言は持つがそれらの実装は持たない。 インターフェースの表記法は次の2つがある。 ステレオタイプによる表記 ボールとソケットによる表記 (詳しくは別項で)インターフェースはこ…

限定子

要素間の関係において、その関係を何らかの値によって索引付けする必要がある場合、UMLではそのようなキー値を表現する手段として限定子(qualifier)が定義されている。たとえば、会社クラスと社員クラス間の関係において、社員番号という限定子によって会社…

関連クラス

クラス間の関係は、単純な構造の関係だけとは限らない。たとえば、1人のサッカー選手はチームに所属することで、1つのサッカーリーグに関連付ける場合、選手とリーグの間の関係は、チームを介する関係であるとみなすことができる。 このように単純ではない関…

汎化

汎化(generalization)とは、スーパークラスのことであり、基底クラスであり、ベースクラスである。汎化関係は異なる分類子間に存在する共通性に着目し、より具体的な性質を持つクラスから、より一般的な性質を取り出したクラスを引き出すために使用される。…

コンポジション

コンポジション(composition)とは、「包含」といっても過言ではないほどに強い結びつきを持ったクラス間の関係を表すものである。コンポジションは「全体と部分」の関係にあるという説明をされる場合が多く、部分にあたるクラスが複数のクラスと関係を同時的…

関連名

関連モデルに情報を付与する目的で、いくつかの記号をつけることができる。 最も単純な記号は、関連を読み上げる方向を示す黒塗りの三角形である。この三角形の頂点のうち1つを関連線で結ばれるクラスのどちらか一方に対して向けて、この関連を説明する短い…

多重度

関連には多重度を示すこともできる。 「関係による属性」で述べたように、多重度を省略した場合の多重度は暗黙的に1であると見なす。多重度は関連線の端に「属性の多重度」の表記法を使って記述するが、角括弧([])を記述することに注意が必要である。また…

集約

集約(aggregation)とは、関連の一種であるが、通常の関連よりも強い関係を表している。 関連と異なる点は、集約は「〜は〜を所有する(...owns a ..)」と表現されることである。 つまり、集約関係にある2つのオブジェクトの生存期間にはなんらかの共存関係…

関連

関連(association)は、依存よりも強い関係である。 普通、あるクラス間の関係が長期間にわたって保持されることを表す際に用いられる。 ただし、関連によって結び付けられたクラス同士(またはオブジェクトなど)の生存期間はたいていの場合、一致しない。つ…

誘導可能性

誘導可能性(navigability)とは、あるクラスからあるクラスへ関連が示されている際、一方からもう一方へ誘導可能なことを明示するための記法である。 誘導可能とは、例えば、あるクラスに対してメッセージを送信可能な関係を表すものである。関連の両端の矢印…

依存

依存(dependency)は、クラス間の関係のうち最も弱い関係である。これは、クラスが他のクラスを利用する、認識するといったレベルの関係であり、クラス間の一時的な関係である。依存されるクラスをサプライヤ、ターゲット、依存するクラスをクライアントなど…

関係

UMLには、クラス間の関係(relationship)を表現するための方法がいくつか定義されている。 依存(dependency) 関連(association) 誘導可能性(navigability) 関連名 多重度 集約(aggregation) コンポジション(composition) 汎化(generalization) 関連クラス(ass…

抽象クラス

操作のシグニチャだけを提供して、実装は提供しないクラスのことを「抽象クラス(abstract class)」と呼ぶ。(ただし、操作ゆ1つも持たない抽象クラスも定義可能である。って、そんなもん役に立たねぇ。)クラスが抽象クラスであることを示すには、クラス名を…

メソッド

操作の実装のことをメソッド(method)と呼ぶ。メソッドは、スーパークラスから継承するか、各クラス自身が操作のメソッドを提供する。また、クラス自身、スーパークラスのどちらもメソッドを提供しない場合、その操作のことを「抽象操作(abstract operation)…

静的操作

UMLで正式に定義されているわけではないが、一般的にはクラス自身が所有する振る舞いを「静的操作」として表現する。表記法は静的属性の表記法と同様に下線を引くことで表す。

例外

操作によって投げられる例外(exception)を、制約と同様の表記法で表現することができる。(ただし、厳密にいうとコレは制約ではない。)普通、例外はエラー発生時に操作から投げられる他のクラスである。つまり、例外を送出する操作を所有するクラスは、例外ク…

クエリ操作

クエリ操作(query operation)とは、操作の実装が、操作を所有しているクラスをいっさい変更しないものを指す。ただし、クエリの結果として更新される内部的なキャッシュ属性を持つことは可能である。 重要な点は、クラスの外部に対してのクラスの状態に変化…

本体条件

本体条件(body condition)は、戻り値を制約するための条件である。本体条件を持つクラスのサブクラスのメソッド(操作の実装)は、本体条件の置換が許可されているため、事前条件と本体条件は区別される。本体条件は、事前条件や事後条件と同様に自然言語やOCL…

事後条件

事後条件(postcondition)は、操作の実行終了時に満たされているべき条件を指定する。

事前条件

事前条件(precondition)は、操作を呼び出す前に満たされているべき条件である。事前条件として指定された条件を、操作の実行開始時にチェックする必要性はない。つまり、事前条件が満たされていない状態では操作の呼び出しは発生しない。また、事前条件は開…

操作の制約

操作には任意の数の制約を関連付けることができる。操作に関する制約は、その操作の実装に義務づけられる契約(contract)を規定する。表記法は通常の制約における表記法に従う。

方向

in パラメータが呼び出し元から渡される。 inout パラメータが呼び出し元から渡され、操作はパラメータを変更してから呼び出し元に返す。 out パラメータは呼び出し元に設定されていない状態で渡され、操作がパラメータを設定してから呼び出し元に返す。 ret…

操作

操作(operation)は、特定の振る舞いの呼び出し方を定義するもので、クラスの機能の1つである。UMLでは振る舞いの呼び出し方の仕様(操作)と、振る舞いの実際の実装(メソッド)とを明確に区別している。操作は次の書式で記述する。可視性 名前 ( パラメータ ) …

静的属性

クラスの属性。つまり、static。インライン属性でも関係による属性でもその属性に下線を引くことで表現する。

制約

制約はOCLや自然言語、プログラミング言語を使って、要素に義務づけられる制限事項を表現する。これらは必ず論理式として評価することができなくてはならない。通常、制約は対象となる要素の後の{}の中に記述することが多いが、ノートに記述して、対象の要素…

プロパティ

属性は、多重度に関するプロパティ以外にも追加情報のためのプロパティを持つことができる。 以下は、UMLで定義されている代表的なプロパティである。 readOnly 一度初期値を設定したら、変更不可能。UMLでは初期値を設定するタイミングについては未定義だが…

コレクション型

UMLでは、順序付けや一意性のプロパティの組み合わせから、UMLのコレクション型へのマッピングが定義されている。 コレクション型 順序付け(ordered) 一意性(unique) Bag False False OrderSet True True Set False True Sequence True False ただし、こ…