連載

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

第2回 静的モデルの全体像


5.Javaの静的モデル

 次にJavaの静的モデルについて概観します。

 Javaはすべての構成要素がクラスまたはインターフェイスを基本としているので、Javaの静的モデルもクラスまたはインターフェイスとして記述されます。

 Javaプログラムの構成要素をクラス図にまとめたものが図16です。

図16 Javaのメタモデル

 ここから、Javaプログラムは以下の要素から構成されていることが分かります。

  • パッケージ
  • クラス
  • インターフェイス
  • メソッド
  • 定数
  • コンストラクタ
  • インスタンス変数
  • クラス変数

 クラスとインターフェイスを起点に、これらの構成要素について見ていきましょう。

■■5.1 クラス■■

 Javaのクラスは、図17のようにプログラミングされます。図16のモデルのとおり、パッケージ、定数、インスタンス変数、クラス変数、コンストラクタ、メソッドで構成されています。

図17 Javaのクラス

 クラスが所属するパッケージはクラス定義の中で宣言されます。図16のメタモデル上では1つのパッケージが複数のクラスを所有する形になっていますが、プログラミング上の記述では、同一のパッケージ宣言を行ったクラス定義の集まりがパッケージを構成することになります。

 Javaでは、変数の宣言においてfinalとstaticのキーワードを指定すると、定数の宣言となります。

 インスタンス変数は、インスタンスオブジェクト単位でスコープを持つ変数です。UMLではインスタンス有効範囲属性に相当します。また、UMLのアソシエーションをJavaで実現する場合、インスタンス変数を用いることになります。

 クラス変数は、クラス単位でスコープを持つ変数です。Javaでstaticとして宣言されたフィールドはクラス変数となります。UMLではクラス有効範囲属性に相当します。

 コンストラクタは、オブジェクトを生成するときに使用されるクラスメンバーです。復帰値のないメソッドのような形をしています。UMLにはコンストラクタに直接相当するモデル要素はありません。特別なステレオタイプで意味を拡張したオペレーションで表現することになります。

 メソッドは、オブジェクトの振る舞いを実現するクラスメンバーです。UMLのオペレーションに相当します。

 またstatic宣言されたメソッドはクラスメソッドと呼び、クラススコープの動作を行います。UMLではクラススコープを持ったオペレーションに相当します。

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

 Javaのインターフェイスは、図18に示すようにプログラミングされます。図16のモデルのとおり、パッケージ、定数、メソッドで構成されています。

図18 Javaのインターフェイス

 インターフェイスでも、クラスと同様にパッケージの宣言を行うことができます。意味的にもクラスと同様になります。

 メソッドは、オブジェクトの振る舞いを実現するクラスメンバーです。インターフェイスに定義されるメソッドは暗黙的にabstractが宣言されているという意味的な扱いをされており、実装は定義されません。

 インターフェイスでは、フィールドの宣言は自動的にstaticとfinalが同時に宣言されたものと見なされ、定数の宣言となります。

 今回はUMLの静的モデルとJavaの静的モデルについて概観しました。UMLの静的モデルはクラス図とオブジェクト図で記述されますが、Javaとのマッピングを考えるうえではクラス図のみを検討対象にすれば十分です。

 クラス図はオブジェクト指向開発プロセスにおいてさまざまな形で用いられます。この中で、設計ワークフローで作成されるクラス図がJavaと直接関係を持ってきます。設計ワークフローにおけるクラス図は、Javaでの実装をターゲットにしたものになるので、Javaの言語機能を正確にモデル化するようにクラス図の持っている機能を取捨選択し、必要であれば機能を拡張して使用する必要があります。つまり、Javaをターゲットとした設計ワークフローのクラス図は、クラス図のJava向けプロファイルとなるわけです。

 Javaはクラスとインターフェイスを核にした言語仕様になっており、静的モデルもクラスとインターフェイスを起点にして記述されます。今回はJavaのクラスとインターフェイスを静的モデルの観点から概観しました。次回からは、クラス図とJavaの具体的なマッピングについて説明していきます。

4/4

Javaオブジェクトモデリング 第2回
  UMLの静的モデル
  モデルの流れ
  クラス図のモデル
Javaの静的モデル

筆者プロフィール

浅海智晴(あさみ ともはる)

1985年立命館大学電気工学科卒業。同年富士通(株)入社。
UNIXワークステーション/サーバのOS、分散基盤、Web基盤の開発に従事。2001年11月より浅海智晴事務所代表。現在はオブジェクト指向、Java、XMLを中心に活動を行っている。

著書に「Java Super Tips オブジェクト指向設計編」、「XML/DOM Programming」(秀和システム)、
「やさしいUML入門」、「Relaxer - Java/XMLによるWeb開発」、 「XML SmartDoc公式リファレンスマニュアル」((ピアソンエデュケーション)がある。

代表作はJava&XMLベースのオープンソース・ソフトウェアである、
・XML SmartDoc(XML文書処理システム)<http://www.XMLSmartDoc.org>、
・Relaxer(XML/Javaスキーマコンパイラ)<http://www.relaxer.org>。



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


IT Architect 連載記事一覧

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

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

「AIによる顧客体験(CX)向上」に懐疑的な見方が広がる――Qualtrics調査
Qualtricsが実施した年次グローバル調査から見えたカスタマーエクスペリエンス(CX)の現...

2025年のSNS大予測 AIの時代に「ソーシャル」はどう変わる?
もういくつ寝ると2025年……と数えるのはさすがに気が早いかもしれないが、それでも2024...

SEOで陥りがちな失敗は「アルゴリズム変更に対応できなかった」が最多に 原因は?
SEOの成功には何が必要なのか、失敗経験者へのアンケートで浮き彫りになったこととは……。