暗黙タイプのオブジェクト

暗黙タイプのオブジェクトは、他のオブジェクトの定義に再利用できない単純なオブジェクトです。 暗黙タイプは、純粋なオブジェクト指向のモデリングとは異なる、インスタンス・ベースのモデリングを促進します。 オブジェクト指向のモデリングでは、すべての構造エンティティーが既存タイプのインスタンスになることが必要です。 この必須構造は、オブジェクト指向システムでは、タイプ/インスタンスの二分法として知られています。

暗黙タイプのオブジェクトでは、オブジェクト名に接頭辞「_t」が付けられた C 構造が生成されます。 このオブジェクトにタイプは定義されません。例えば、A_t という名前の C 構造が、暗黙タイプであるオブジェクト A の宣言ファイルに生成されます。 このオブジェクトには、att1 という名前の 1 つの属性があり、これは構造の 1 データ・メンバーとして次のように生成されます。

struct A_t {
    /***    User-explicit entries    ***/
    int att1;      /*## attribute att1 */
};

オブジェクトはインスタンス化されて、オブジェクトが含まれるパッケージの宣言ファイルにメモリーが割り振られます。 例えば、次のステートメントが、オブジェクト A が含まれる Default パッケージの宣言ファイルに生成されます。

struct A_t;
extern struct A_t A;

最初のステートメントは、構造 A_t の宣言で、2 番目は、struct A_t のインスタンス A の実際の定義とメモリーの割り振りです。

注: extern キーワードは、A がここで宣言されているが、定義はどこか別の場所で (既に) 行われていることを示します。 そのような宣言の後に続くコードでは、A を参照できます。 同じ extern ステートメントが異なるファイルにある場合、これらのステートメントは同じ A を参照します。

IBM® Rational® Rhapsody® は、オブジェクトの作成、初期設定、クリーンアップ、および破棄を処理する操作を自動的に生成します。 これらの操作は、C++ においてコンストラクターおよびデストラクターとして知られるものと類似しています。 例えば、以下の操作が A について自動生成されます。

Create() 操作および Destroy() 操作は、シングルトン用には生成されません。 詳細については、シングルトン・オブジェクトを参照してください。


フィードバック