属性と生成のプロパティー

属性とは、オブジェクトがその状態を維持するためにカプセル化する変数のことです。 オブジェクトは、複数の属性をデータ項目のセットとしてカプセル化します。 データ項目は、名前とタイプを持つ変数を指定します。この場合のタイプは、データ型のことです。 オブジェクトのデータ項目は、オブジェクトの構造の 1 メンバーにマップされます。 メンバーの名前とタイプは、オブジェクト・データのものと同じです。

例えば、Valve オブジェクト・タイプの isClosed 属性は、Valve 構造内のデータ・メンバーとして、値が組み込まれています。

struct Valve {
    /*** User explicit entries ***/
    RiCBoolean isClosed;   /*## attribute isClosed ##*/
};

RiCBoolean 型は、C における OMBoolean 型に相当します。これは、IBM® Rational® Rhapsody® Developer for C++ フレームワークで定義されるブール・データ型です。

アクセサー操作を使用するとデータへのアクセスができ、一方、ミューテーター操作を使用するとデータの変更を行うことができます。 アクセサーは、C_CG::Attribute::AccessorGenerate プロパティーが Checked に設定されている場合に生成されます。 同様に、ミューテーターは、C_CG::Attribute::MutatorGenerate プロパティーが Always に設定されている場合に生成されます。デフォルトでは、AccessorGenerateCleared です。 MutatorGenerate のデフォルトは、Never です。

アクセサー操作とミューテーター操作は、オブジェクト・タイプに対する宣言ファイルのユーザー暗黙的項目域に生成されます。 例えば、_getIsClosed() アクセサー操作と _setIsClosed() ミューテーター操作のプロトタイプは、Valve.h ファイルの isClosed 属性に対して生成されます。

/*** User implicit entries ***/
RiCBoolean Valve _getIsClosed(const Valve* const me);
void Valve _setIsClosed(Valve* const me, RiCBoolean
    p_isClosed);

アクセサー操作とミューテーター操作の本体は、そのオブジェクト・タイプの実装ファイルで生成されます。 例えば、Valve.c ファイルの _getIsClosed() 操作と _setIsClosed() 操作に対して、以下の実装が生成されます。

/*** Methods implementation ***/
RiCBoolean Valve_getIsClosed(const Valve* const me) {
   return me->isClosed;
}
void Valve _setIsClosed(Valve* const me, RiCBoolean
    p_isClosed) {
    me->isClosed = p_isClosed;
}

Rational Rhapsody は、以下の順序で属性を生成します。

  1. 属性は、ユーザー定義属性と暗黙的属性 (関係コンテナーなど) にグループ化されます。
  2. 各サブグループの属性は、アルファベット順に生成されます。

フィードバック