第2回 静的モデルの全体像
次にJavaの静的モデルについて概観します。 Javaはすべての構成要素がクラスまたはインターフェイスを基本としているので、Javaの静的モデルもクラスまたはインターフェイスとして記述されます。 Javaプログラムの構成要素をクラス図にまとめたものが図16です。
ここから、Javaプログラムは以下の要素から構成されていることが分かります。
クラスとインターフェイスを起点に、これらの構成要素について見ていきましょう。 ■■5.1 クラス■■ Javaのクラスは、図17のようにプログラミングされます。図16のモデルのとおり、パッケージ、定数、インスタンス変数、クラス変数、コンストラクタ、メソッドで構成されています。
クラスが所属するパッケージはクラス定義の中で宣言されます。図16のメタモデル上では1つのパッケージが複数のクラスを所有する形になっていますが、プログラミング上の記述では、同一のパッケージ宣言を行ったクラス定義の集まりがパッケージを構成することになります。 Javaでは、変数の宣言においてfinalとstaticのキーワードを指定すると、定数の宣言となります。 インスタンス変数は、インスタンスオブジェクト単位でスコープを持つ変数です。UMLではインスタンス有効範囲属性に相当します。また、UMLのアソシエーションをJavaで実現する場合、インスタンス変数を用いることになります。 クラス変数は、クラス単位でスコープを持つ変数です。Javaでstaticとして宣言されたフィールドはクラス変数となります。UMLではクラス有効範囲属性に相当します。 コンストラクタは、オブジェクトを生成するときに使用されるクラスメンバーです。復帰値のないメソッドのような形をしています。UMLにはコンストラクタに直接相当するモデル要素はありません。特別なステレオタイプで意味を拡張したオペレーションで表現することになります。 メソッドは、オブジェクトの振る舞いを実現するクラスメンバーです。UMLのオペレーションに相当します。 またstatic宣言されたメソッドはクラスメソッドと呼び、クラススコープの動作を行います。UMLではクラススコープを持ったオペレーションに相当します。 ■■5.2
インターフェイス■■ Javaのインターフェイスは、図18に示すようにプログラミングされます。図16のモデルのとおり、パッケージ、定数、メソッドで構成されています。
インターフェイスでも、クラスと同様にパッケージの宣言を行うことができます。意味的にもクラスと同様になります。 メソッドは、オブジェクトの振る舞いを実現するクラスメンバーです。インターフェイスに定義されるメソッドは暗黙的にabstractが宣言されているという意味的な扱いをされており、実装は定義されません。 インターフェイスでは、フィールドの宣言は自動的にstaticとfinalが同時に宣言されたものと見なされ、定数の宣言となります。 ◆ 今回はUMLの静的モデルとJavaの静的モデルについて概観しました。UMLの静的モデルはクラス図とオブジェクト図で記述されますが、Javaとのマッピングを考えるうえではクラス図のみを検討対象にすれば十分です。 クラス図はオブジェクト指向開発プロセスにおいてさまざまな形で用いられます。この中で、設計ワークフローで作成されるクラス図がJavaと直接関係を持ってきます。設計ワークフローにおけるクラス図は、Javaでの実装をターゲットにしたものになるので、Javaの言語機能を正確にモデル化するようにクラス図の持っている機能を取捨選択し、必要であれば機能を拡張して使用する必要があります。つまり、Javaをターゲットとした設計ワークフローのクラス図は、クラス図のJava向けプロファイルとなるわけです。 Javaはクラスとインターフェイスを核にした言語仕様になっており、静的モデルもクラスとインターフェイスを起点にして記述されます。今回はJavaのクラスとインターフェイスを静的モデルの観点から概観しました。次回からは、クラス図とJavaの具体的なマッピングについて説明していきます。
|
[an error occurred while processing this directive] |