連載
Javaオブジェクトモデリング
静的モデル:クラスにおけるUMLとJavaのマッピング(1)
■■2.2 インターフェイス■■
●2.2.1 アイコン
UMLで、インターフェイスを示すアイコンは図5となります。
図5 インターフェイスアイコン |
これは、クラスアイコンをベースに以下の修正を施したものです。
- ステレオタイプにinterfaceを指定する
- 属性用の並び区画は用いない
インターフェイスアイコンから分かるUMLインターフェイスのメタモデルは図6となります。
図6 インターフェイスメタモデル |
図6のUMLインターフェイスのメタモデルは、UMLインターフェイスが以下の構造になっていることを示しています。
- パッケージに所属していないか、1つのパッケージに所属しているかのいずれか
- 1つの可視性を持っている
- 1つのインターフェイス名を持っている
- ステレオタイプを使用して、クラスの種類を指定することができる
- 要素プロパティを使用して、クラスの性質を指定することができる
- 0個以上複数個のオペレーションを持っている
●2.2.3 ステレオタイプ
インターフェイスが独自に定義している標準ステレオタイプはありません。ただし、インターフェイスは分類子の一種ですから、仕様上は以下の標準ステレオタイプが存在します。
- metaClass
- powerType
- process
- thread
- utility
●2.2.4 プロパティ
インターフェイスが独自に定義している標準プロパティはありません。ただし、インターフェイスは分類子の一種ですから、仕様上は以下の標準ステレオタイプが存在します。
- persistence
- semantics
■■2.3 例外■■
例外はシグナルの一種で、オペレーションの実行時に異常を通知するために送信される分類子です。
●2.3.1 アイコン
UMLで、例外(シグナル)を示すアイコンは図7となります。UMLにおける例外はステレオタイプexceptionが指定されている以外は、通常のクラスと同じ構成を持ちます。
図7 例外アイコン |
●2.3.2 メタモデル
UML例外のメタモデルは図8となります。メタモデル上も通常のクラスと同じ構成になります。
図8 例外メタモデル |
UMLにおける例外とクラスの違いは、「例外はシグナルの一種であり非同期のイベント通知に用いることができる」という点にあります。もちろん例外が送信される非同期のイベント通知とは、オペレーション実行中の異常状態の通知ということになります。
●2.3.3 ステレオタイプ
例外が独自に定義している標準ステレオタイプはありません。ただし、例外は分類子の一種ですから、仕様上は以下の標準ステレオタイプが存在します。
- metaClass
- powerType
- process
- thread
- utility
●2.3.4 プロパティ
例外が独自に定義している標準プロパティはありません。ただし、例外は分類子の一種ですから、仕様上は以下の標準ステレ オタイプが存在します。
- persistence
- semantics
■■2.4 UML属性のメタモデル■■
UMLにおける属性のメタモデルは図9となります。
図9 属性メタモデル(クリックすると拡大します) |
図9より以下のことが分かります。
- スコープを1つ持っている
- 可視性を1つ持っている
- 属性名を1つ持っている
- 多重度を1つ持っていることがある
- 順序性を1つ持っていることがある
- 型表現を1つ持っている
- 初期値を1つ持っていることがある
- プロパティ文字列を1つ持っていることがある
- プロパティ文字列は0個以上複数個のプロパティを持っている
- ステレオタイプを0個以上複数個持っている
図10 属性記法 |
スコープは、属性の有効なスコープを示すもので、インスタンスまたはクラスのいずれかとなります。スコープは属性定義の文字列に下線を引くことで表現します。下線が引かれていなければインスタンススコープ、下線が引かれていればクラススコープです。
- 可視性は、属性が外部のモデル要素に対して公開されている度合いを示しています。
- 属性名は、属性の名前を文字列で表します。
- 多重度は、属性に値が格納される際の多重度を表しています。省略された場合は1と見なされます。
- 順序性は、属性が複数個格納される際の順序の有無を指定します。orderedが指定された場合は「順序性あり」、unorderedが指定された場合は「順序性なし」となります。省略された場合は「順序性なし」と見なされます。
- 型表現は、属性の型を表します。初期値は、属性の初期値を表します。初期値の指定方法は、ターゲットとなる言語依存となっています。初期値は省略することができます。
- プロパティ文字列は、制約とタグ付き値を使って属性の性質を表します。標準ではchangeabilityとpersistenceが定義されています。
Changeable | 属性の更新について制約はない |
frozen | 属性の更新は行われない |
addOnly | 追加のみ可能 |
persistenceは属性の永続性についての性質で、以下の2つの値を取ります。
transitory | インスタンスオブジェクトが消去されたとき、属性に格納されているオブジェクトも同時に消去される |
persistent | インスタンスオブジェクトが消去されても、属性の格納されているオブジェクトは消去されない |
属性にはステレオタイプを指定することもできます。ただし、属性に指定するステレオタイプは標準では定義されていません。
■■2.5 UMLオペレーションのメタモデル■■
UMLにおけるオペレーションのメタモデルは図11となります。図11より以下のことが分かります。
図11 オペレーションメタモデル(クリックすると拡大します) |
- スコープを1つ持っている
- 可視性を1つ持っている
- オペレーション名を1つ持っている
- 返却値型を1つ持っていることがある
- パラメタを0個以上複数個持っている
- プロパティ文字列を1つ持っていることがある
- プロパティ文字列は0個以上複数個のプロパティを持っている
- ステレオタイプを0個以上複数個持っている
図12 オペレーション記法 |
UMLのオペレーションは文字列で記述されますが、その記法は図12となります。
スコープと可視性は属性と同様の意味を持ちます。すなわち、スコープはオペレーションの有効なスコープを示し、可視性は、属性が外部のモデル要素に対して公開されている度合いを示します。記法も属性の場合と同じです。
オペレーション名は、オペレーションの名前を文字列で表します。 返却値型は、オペレーションが返却するオブジェクトの型を表します。返却値が省略された場合は、オペレーションはオブジェクトを返却しないということを示します。
パラメタは、オペレーション実行時に使用されるパラメタです。プロパティ文字列は、制約とタグ付き値を使ってオペレーションの性質を表します。標準ではquery、concurrency、abstract、root、leafが定義されています。なお、abstractに関してはプロパティ文字列ではなくオペレーションの記述をイタリック体で表現することもでき、通常はこちらの用法が用いられています。
●2.5.1 ステレオタイプ
オペレーションにはステレオタイプを指定することもできます。標準ではcreateとdestroyの2つのステレオタイプが定義されています。
ステレオタイプ | 意味 | 1.3 | 1.4 | Java | 理由 |
create | インスタンスを作成 | ○ | ○ | ◎ | Javaに対応機能あり |
destroy | インスタンスを破壊 | ○ | ○ | - | Javaに対応機能なし |
●2.5.2 プロパティ
オペレーションにはプロパティを指定することができます。標準では下記の表に示すプロパティが定義されています。
プロパティ | 意味 | 1.3 | 1.4 |
query | 内部状態を変更しない | ○ | ○ |
concurrency | 並行性の性質 | ○ | ○ |
abstract | 抽象オペレーション | ○ | ○ |
root | 同じオペレーションを継承しない | ○ | ○ |
leaf | 子孫に上書きされない | ○ | ○ |
semantics | 意味規定 | ○ | ○ |
3/4
|
Javaオブジェクトモデリング 第2回 | |
分類子と“クラス” | |
UMLの“クラス”(1) | |
UMLの“クラス”(2) | |
Javaの“クラス” |
Javaオブジェクトモデリング INDEX |
IT Architect 連載記事一覧 |
アーキテクチャ 新着記事
@IT情報マネジメント 新着記事
この記事に対するご意見をお寄せください managemail@atmarkit.co.jp