モデルとの対応付け

<< 目次を表示 >>

ページ位置:  Enterprise Architectの拡張(SDK) > コード読み込みの独自定義 > 読み込みの文法 >

モデルとの対応付け

文法を定義する場合に、その文法定義の中にEnterprise Architectのモデルの情報との対応付けを含めることで、ソースコードからモデルを生成(同期)することができるようになります。この対応付けのグループと属性を説明します。未定義のグループ・属性がある場合には、すべて無視されます。

 

 

FILE グループ

このグループは最上位のグループであり、ソースファイル全体を示します。このグループには属性は存在しませんが、他のグループを保持しています。

 

多重度

グループ名 / 属性

説明

0..*

PACKAGE

PACKAGE グループ をご覧下さい。

0..*

CLASS

CLASS/INTERFACE グループ をご覧ください。

0..*

IMPORT

読み込まれる名前空間あるいはパッケージ名を示します。ノードのNAME属性が、名前空間あるいはパッケージの名前になります。

0..*

COMMENT

無視ルール内で利用し、コメントである事を示します。

位置により、関係する項目のノートになります。

0..1

INSERT_POSITION

新規にクラス・パッケージ・操作(メソッド)を追加する場合の位置を指定します。この指定が存在しない場合には、同種の項目の直下に新しい項目を追加します。

 

 

PACKAGE グループ

PACKAGEグループは名前空間(および類似の概念)に対応します。名前空間を持つ言語のソースファイルを読み込んだ場合には、Enterprise Architectは自動的にパッケージを追加し、新規に追加するクラスはそのパッケージの中に追加します。名前空間の定義がない場合には、クラスを探索します。

 

言語により、名前空間を有効にする設定になっている場合には、適切なパッケージにクラス要素が含まれていないと、同じクラス要素という判定になりません。

 

親となるグループ:     FILE

 

多重度

グループ名 / 属性

説明

1

NAME

NAME グループ をご覧下さい。

0..*

CLASS

CLASS/INTERFACE グループ をご覧下さい。

0..*

PACKAGE

子パッケージのノードです。

0..1

OPEN_POSITION

このグループの内容が始まる部分を指定します。INSERT_POSITION属性がない場合には、新規にクラス・パッケージを追加する位置の指定にもなります。

0..1

INSERT_POSITION

新規にクラス・パッケージを追加する場合の位置を指定します。この指定が存在しない場合には、同種の項目の直下に新しい項目を追加します。

0..1

SUPPRESS

追加することで、インデントすることを防ぎます。

 

 

CLASS/INTERFACE グループ

CLASS と INTERFACE グループはコード解析において中心となるグループです。クラス要素やインターフェース要素として表現されます。

後述する Class DECLARATION と Class BODY もご覧下さい。

親となるグループ:   FILE, PACKAGE, Class BODY

 

 

CLASS グループ

親となるグループ:   CLASS/INTERFACE

 

多重度

グループ名 / 属性

説明

1

NAME

NAME グループ をご覧下さい。

0..*

PARENT

CLASS/INTERFACE グループ をご覧下さい。

0..*

TAG

TAG グループ をご覧下さい。

0..1

DESCRIPTION

DESCRIPTION グループ をご覧下さい。

1

NAME

クラスの名前です。グループとしてのNAMEが存在する場合には、グループの定義の方が優先されます。

0..1

SCOPE

クラスの可視性です。 Public, Private, Protected, Package のいずれかです。

0..1

ABSTRACT

この属性に対応する内容が存在する場合には、クラスは抽象クラスとして扱われます。

0..1

VERSION

クラスのバージョンです。

0..1

STEREOTYPE

クラスに設定されるステレオタイプです。複数のステレオタイプには対応していません。

0..1

ISLEAF

存在する場合には、他のクラスから継承できないleaf/final/sealed等のクラスになります。

0..1

MULTIPLICITY

存在する場合には、クラスの多重度を示します。

0..1

LANGUAGE

クラスの言語の設定です。通常は自動的に設定されるため、設定する必要はありません。

0..1

NOTE

クラスのノートです。通常はコメントの内容が自動的にノートに設定されるため、この属性を利用する必要はありません。

0..1

ALIAS

存在する場合には、別名に対応します。

0..*

MACRO

ラウンドトリップを実現するために、タグ付き値に格納する文字列(マクロ)の情報である事を示します。

 

 

Class BODY グループ

親となるグループ:   CLASS および INTERFACE

 

多重度

グループ名 / 属性

説明

0..*

METHOD

METHODC グループ をご覧下さい。

0..*

ATTRIBUTE

CLASS/INTERFACE グループ をご覧下さい。

0..*

FIELD

FIELD グループ をご覧下さい。

0..*

CLASS

CLASS/INTERFACE グループ をご覧下さい。

0..*

SCOPE

SCOPE グループ をご覧下さい。

0..*

PROPERTY

クラス本体内のプロパティに対応します。

0..*

TAG

TAG グループ をご覧下さい。

0..*

PARENT

PARENT グループ をご覧下さい。

0..1

OPEN_POSITION

このグループの内容が始まる部分を指定します。INSERT_POSITION属性がない場合には、新規にクラスを追加する位置の指定にもなります。

0..1

INSERT_POSITION

新規にクラスの属性や操作(メソッド)を追加する場合の位置を指定します。この指定が存在しない場合には、同種の項目の直下に新しい項目を追加します。

 

 

SCOPE グループ

このグループは必須ではなく、C++言語のようにある範囲について可視性を指定できるような言語で利用されます。ブロック内のすべての項目について、指定された可視性が適用されます。下記の表以外の属性は、Class BODY グループと同じ内容が利用できます。

 

親となるグループ:   Class BODY

 

多重度

グループ名 / 属性

説明

1

NAME

対象の範囲内に含まれる項目の可視性を指定します。

 

 

METHOD グループ

親となるグループ:   Class BODY あるいは SCOPE

 

多重度

グループ名 / 属性

説明

1

Method DECLARATION

Method DECLARATION グループ をご覧下さい。

 

 

Method DECLARATION グループ

親となるグループ:   METHOD

 

多重度

グループ名 / 属性

説明

0..1

TYPE

TYPE グループ をご覧下さい。

0..*

PARAMETER

PARAMETER グループ をご覧下さい。

0..*

TAG

TAG グループ をご覧下さい。

0..1

DESCRIPTION

DESCRIPTION グループ をご覧下さい。

0..1

MULTI PARAMETER

Delphiのパラメータリスト型の宣言に対応するための属性です。FIELDグループと同じです。

1

NAME

操作の名前です。

0..1

TYPE

操作の戻り値です。

0..1

SCOPE

操作の可視性です。Public, Private, Protected, Packageのいずれかです。

0..1

ABSTRACT

操作が抽象操作であるかどうかを示します。

0..1

STEREOTYPE

操作のステレオタイプです。複数のステレオタイプには対応しません。

0..1

STATIC

操作がstaticであるかどうかを示します。

0..1

CONST

CONSTANT

操作がconstであるかどうかを示します。

0..1

PURE

操作が純粋仮想関数であるかどうかを示します。

0..1

ISQUERY

操作がクエリ(read only)であるかどうかを示します。

0..1

ARRAY

操作の戻り値が配列であることを示します。

0..1

SYNCHRONIZED

操作が同期処理であるかどうかを示します。

0..*

MACRO

操作の宣言がマクロであるかどうかを示します。

0..1

CSHARPIMPLEMENTS

C#固有の振る舞いを指定するための属性です。

0..1

BEHAVIOR

Aspect Jに対応するための属性です。

0..1

SHOWBEHAVIOR

Aspect Jに対応するための属性です。ダイアグラム内に表示される振る舞いの内容です。

 

 

ATTRIBUTE グループ

親となるグループ:   Class BODY , SCOPE

 

多重度

グループ名 / 属性

説明

1

TYPE

TYPE グループ をご覧下さい。

0..*

TAG

TAG グループ をご覧下さい。

0..1

DESCRIPTION

DESCRIPTION グループ をご覧下さい。

1

NAME

属性の名前です。

0..1

TYPE

属性の型です。

0..1

SCOPE

属性の可視性です。Public, Private, Protected, Packageのいずれかです。

0..1

DEFAULT

属性の既定値です。

0..1

CONTAINER

ARRAY

属性が配列(コンテナ)であることを示します。

0..1

CONTAINMENT

属性の保持形式です。Reference あるいは Value になります。

0..1

STEREOTYPE

属性のステレオタイプです。複数のステレオタイプには対応しません。

0..1

STATIC

属性がstaticであるかどうかを示します。

0..1

CONST

CONSTANT

属性がconstであるかどうかを示します。

0..1

ORDERED

属性がorderedであるかどうかを示します。

0..1

LOWBOUND

属性の多重度の下限値です。

0..1

HIGHBOUND

属性の多重度の上限値です。

0..1

TRANSIENT

VOLATILE

属性がtransient/volatileであるかどうかを示します。

 

 

FIELD グループ

フィールドとは、複数の属性の宣言がまとめられたものです。ATTRIBUTEグループで利用できる属性は、このグループでも利用できます。DECLARATORが存在しない場合、ATTRIBUTEグループと同じになります。

 

親となるグループ:   Class BODY , SCOPE

 

多重度

グループ名 / 属性

説明

0..*

DECLARATOR

ATTRIBUTE グループ をご覧下さい。

 

 

PARAMETER グループ

親となるグループ:   Method DECLARATION, TEMPLATE

 

多重度

グループ名 / 属性

説明

1

TYPE

TYPE グループ をご覧下さい。

0..*

TAG

TAG グループ をご覧下さい。

0..1

DESCRIPTION

DESCRIPTION グループ をご覧下さい。

0..1

NAME

引数の名前です。

0..1

TYPE

引数の型です。

0..1

KIND

in, inout, out, return のいずれかの値です。

0..1

DEFAULT

引数の既定値です。

0..1

FIXED

引数がfixedであるかどうかを示します。

0..1

ARRAY

引数が配列であるかどうかを示します。

 

 

NAME グループ

親となるグループ:   PACKAGE, Class DECLARATION

 

多重度

グループ名 / 属性

説明

1

NAME

名前です。

0..*

QUALIFIER

修飾子です。

0..*

NAMEPART

NAME と QUALIFIER の代用として利用します。文字列の値を設定し、最後の単語以外がQUALIFIERとしての扱いになり、最後の単語が名前ととしての扱いになります。

 

 

TYPE グループ

親となるグループ:   Method DECLARATION, ATTRIBUTE, PARAMETER

 

多重度

グループ名 / 属性

説明

0..1

TEMPLATE

指定された文字列全体が、型の名前として扱われます。

NAMEの属性が未定義の場合のみ有効です。

TEMPLATEグループ をご覧下さい。

1

NAME

名前です。

0..*

QUALIFIER

修飾子です。

0..*

NAMEPART

NAME と QUALIFIER の代用として利用します。文字列の値を設定し、最後の単語以外がQUALIFIERとしての扱いになり、最後の単語が.名前ととしての扱いになります。

 

 

TEMPLATE グループ

親となるグループ:   TYPE

 

多重度

グループ名 / 属性

説明

0..*

PARAMETER

PARAMETER グループ をご覧下さい。

1

NAME

名前です。

 

 

PARENT グループ

親となるグループ:   Class DECLARATION

 

多重度

グループ名 / 属性

説明

0..1

TYPE

Parent, Implements, VirtualP のいずれかになります。

1

NAME

名前です。

0..*

QUALIFIER

修飾子です。

0..*

NAMEPART

NAME と QUALIFIER の代用として利用します。文字列の値を設定し、最後の単語以外がQUALIFIERとしての扱いになり、最後の単語が.名前ととしての扱いになります。

0..1

INSTANTIATION

 

 

 

TAG グループ

親となるグループ:   Class DECLARATION, Method DECLARATION, ATTRIBUTE, PARAMETER

 

多重度

グループ名 / 属性

説明

1

NAME

タグ付き値と関連付ける場合の、タグ付き値の名前です。

0..*

VALUE

タグ付き値の値です。

0..1

MEMO

タグ付き値がメモ型であることを示します。

0..1

NOMEMO

タグ付き値がメモ型ではないことを示します。

0..1

GROUP

タグ付き値のグループを指定します。

 

 

DESCRIPTION グループ

親となるグループ:   Class DECLARATION, Method DECLARATION, ATTRIBUTE

 

多重度

グループ名 / 属性

説明

0..*

VALUE

ノートとして保持する内容です。

 

 

参照: