インテル® Fortran コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
このトピックは、Windows* にのみ適用されます。
Fortran COM サーバーウィザードは、Visual Studio* プロジェクトを生成し、COM サーバーのインフラストラクチャーを表す COM 階層ファイルを作成します。COM サーバー階層エディターを使用してこのファイルを変更し、1 つまたは複数のオブジェクト・クラス (インターフェイスとメソッドを含む) の実装を定義することができます。
階層ファイルを保存する際に、Fortran ソースファイルが生成されます。その後、各メソッドのコードを記述する必要があります。
COM サーバー・プロジェクトを作成する場合、実装する COM サーバークラスを記述する必要があります。
クラスには、1 つまたは複数の COM インターフェイスがあります。COM において、インターフェイスは、セマンティクス的に関連した関数のセットです。インターフェイス全体は、クラスによって実装される "機能"、または関連する機能のセットを表します。インターフェイスにはメソッド (メンバー関数としても知られている) が含まれます。メソッドは、機能の一部の処理を実行するルーチンです。Fortran COM サーバーでは、メソッドは、ほかの Fortran 関数のように引数を受け取り、値を返す Fortran 関数です。
Fortran COM サーバーウィザードを使用して作成する AddingMachine という簡単なサンプルクラスについて考えてみます。このクラスには、IAdd というインターフェイスが 1 つあります。慣例により、すべてのインターフェイスの名前は、大文字の "I" で始まります。IAdd インターフェイスでは、次の 3 つのメソッドが定義されています。
Clear: 引数なしで、AddingMachine の現在の値を 0 に設定します。
Add: REAL 型の引数を 1 つ受け取り、その値を現在の値に加算します。
GetValue: 現在の値を返します。
これらのメソッドを使用して、COM クライアントをサポートする任意の言語から、IAdd インターフェイスの特定のタスクを実行することができます。Fortran COM サーバーエディターは、クラス (ここでは、AddingMachine クラス) の情報を入力するためのユーザー・インターフェイスを提供します (詳細は、「Fortran COM サーバーの作成」を参照)。
インターフェイスには、プロパティーを含めることもできます。プロパティーは、オブジェクトの状態に関する情報を設定し、返すメソッドのペアです。同じ DISPID で、get_Method および put_Method を使用して、実装する必要があります。
オブジェクトに関連付けられるデータで、オブジェクト指向プログラミングの主要な概念は、カプセル化です。カプセル化とは、使用するデータや処理を実行する際に使用するロジックを含む、オブジェクトの実装方法に関するすべての詳細がクライアントに公開されないことを意味します。クライアントは、オブジェクトがサポートするインターフェイスを介してのみ、オブジェクトにアクセスできます。
オブジェクトが使用するデータを定義して、メソッドのロジックをコーディングする必要があります。データについては、Fortran COM サーバーウィザードで使用されるモデルでは、オブジェクトの各インスタンスが Fortran 派生型に関連付けられているインスタンスを持っています。ウィザードによって生成されるコードは、オブジェクトの作成と破棄にともない、派生型のインスタンスの作成と破棄を行います。
また、派生型のフィールドを定義する必要があります。AddingMachine の例では、AddingMachine の各オブジェクトは、現在の値を格納する必要があります。AddingMachine の各オブジェクトに関連付けられている派生型には、REAL 型のフィールド (ここでは、CurrentValue とします) が 1 つ含まれます。AddingMachine オブジェクトの各インスタンスには、それぞれ派生型のインスタンスと CurrentValue があります。このため、サーバーは同時に複数のクライアントをサポートすることができ、各クライアントはそれぞれの AddingMachine を参照します。つまり、各クライアントは、ほかのクライアントに影響されません。各オブジェクトに関連付けられている派生型についての詳細は、「Fortran COM サーバーの作成」を参照してください。
ユーザーレベルでは、COM サーバーを作成するために、次の操作を行う必要があります。
COM サーバーウィザードを使用して、COM サーバー・プロジェクトを作成します。
COM サーバー階層エディターを使用して、クラス、インターフェイス、メソッド、プロパティーを定義し、階層ファイルを作成します。
クラスの各インスタンスに関連付けられる派生型のフィールドを定義します。
必要に応じて、派生型のフィールドを初期化するためのコード、および派生型のフィールドによって使用されるリソースを解放するためのコードを作成します。
メソッドを実装するためのコードを作成します。
Fortran COM サーバーエディターは、COM サーバーのすべてのインフラストラクチャーを実装するためのソースファイルを生成します。生成されるファイルは、次のことを行います。
クラスおよびインターフェイスを一意に識別するための GUID を定義します。GUID についての詳細は、「オブジェクト・インターフェイスへのポインターの取得」を参照してください。
システムでサーバー、クラス、インターフェイスを登録します。
オブジェクトのインスタンスを作成するクラス・ファクトリーを実装します。
IDL (Interface Definition Library) およびクラスとインターフェイスを記述するタイプ・ライブラリーを作成します。タイプ・ライブラリーについての詳細は、「モジュールウィザードを使用したコードの生成」を参照してください。
オブジェクトの IUnknown インターフェイスおよび IDispatch インターフェイスを実装します。Fortran COM サーバーエディターによって作成されるインターフェイスは、すべて IUnknown または IDispatch から派生します (デュアル・インターフェイス)。
オブジェクトに関連付けられている派生型のインスタンスを作成および破棄します。
オブジェクトのメソッドを実装する Fortran ルーチンを呼び出します。
これらのソースファイルのほとんどは、Fortran COM サーバーエディターによって生成され、変更する必要はありません。それ以外のファイルには、派生型およびメソッドの骨組みやテンプレートが含まれています。これらの Fortran ソースファイルは、実装に組み込むために編集します。AddingMachine サンプルの手順を実行することで、COM サーバーの作成方法を理解することができます。