連載

Javaオブジェクトモデリング

第3回
静的モデル:
クラスにおけるUMLとJavaのマッピング(1)



■■2.2 インターフェイス■■

2.2.1 アイコン

 UMLで、インターフェイスを示すアイコンは図5となります。

図5 インターフェイスアイコン

 これは、クラスアイコンをベースに以下の修正を施したものです。
  • ステレオタイプにinterfaceを指定する
  • 属性用の並び区画は用いない
2.2.2 メタモデル

 インターフェイスアイコンから分かるUMLインターフェイスのメタモデルは図6となります。

図6 インターフェイスメタモデル

 図6のUMLインターフェイスのメタモデルは、UMLインターフェイスが以下の構造になっていることを示しています。
  • パッケージに所属していないか、1つのパッケージに所属しているかのいずれか
  • 1つの可視性を持っている
  • 1つのインターフェイス名を持っている
  • ステレオタイプを使用して、クラスの種類を指定することができる
  • 要素プロパティを使用して、クラスの性質を指定することができる
  • 0個以上複数個のオペレーションを持っている
 つまり、UMLインターフェイスは、ステレオタイプとしてinterfaceがあらかじめ指定されている点と、属性を持たない点を除けば、UMLクラスと同等の情報を持っています。

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です。使用頻度が高くない部分は灰色で表現しています。

図10 属性記法

 スコープは、属性の有効なスコープを示すもので、インスタンスまたはクラスのいずれかとなります。スコープは属性定義の文字列に下線を引くことで表現します。下線が引かれていなければインスタンススコープ、下線が引かれていればクラススコープです。
  • 可視性は、属性が外部のモデル要素に対して公開されている度合いを示しています。

  • 属性名は、属性の名前を文字列で表します。

  • 多重度は、属性に値が格納される際の多重度を表しています。省略された場合は1と見なされます。

  • 順序性は、属性が複数個格納される際の順序の有無を指定します。orderedが指定された場合は「順序性あり」、unorderedが指定された場合は「順序性なし」となります。省略された場合は「順序性なし」と見なされます。

  • 型表現は、属性の型を表します。初期値は、属性の初期値を表します。初期値の指定方法は、ターゲットとなる言語依存となっています。初期値は省略することができます。

  • プロパティ文字列は、制約とタグ付き値を使って属性の性質を表します。標準ではchangeabilityとpersistenceが定義されています。
 changeabilityは属性の更新についての性質で、以下の値を取ります。

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 連載記事一覧


この記事に対するご意見をお寄せください managemail@atmarkit.co.jp

「ITmedia マーケティング」新着記事

生成AIが生み出す「バーチャル生活者」の声を聴くメリットとは?
博報堂は、独自の大規模生活者調査データベースに生成AI技術を組み合わせて作り出した「...

生活者の生成AI利用動向 10代後半はすでに5割近くが経験――リクルート調査
テキスト型生成AIサービスの利用経験者の割合は若い年代ほど高く、特に10代後半はすでに5...

2023年のSNS炎上総数は189件、炎上元の媒体1位は「X」――コムニコ「炎上レポート」
コムニコが「炎上レポート」2023年版を公開しました。