• 検索結果がありません。

+request1() +request2() ....() java.lang.

reflect.Proxy newProxyInstance()

Logger

+invoke()

図

抽象実行を行うための発展関係に関する情報は.文書によって与えられる .4$%2/

.9?@)?)>は汎用的なデータ記述言語でありデータの意味を表すタグ名とそれを補足 する属性そして入れ子による論理構造を用いて構造化されたテキストデータを表現する . は本質的に木構造のデータの表現に優れている

本研究で扱う発展関係はすべて木構造になると仮定しているため 発展関係を記述するデータ 構造として.は有用であると考えている また .は "A"<BC属性を用いることで網 構造にすることも可能である " 属性とはある.文書内である要素を一意に識別するもので あり"<BCは"属性を用いて要素から要素への参照を実現する 本研究ではオブジェクトが 扱う値クラスフィールドメソッドの発展関係と個々の要素間の関係を入れ子による木構造と

"A"<BCを併用することで表現している

そしてそれらの関係を"D""&,?#4D+@"E%4%&を用いて定義を行った "D"は. 文書で使用されるタグの種類やその属性階層構造出現順序などを定義したものである "D"で 定義された規則に従って記述された. 文書は妥当な.文書/% . "&,?#4と呼 ばれる "D"を定義することで妥当な.文書か否かを事前にチェックすることが可能となり 実行時のエラーを減らすことが可能となる

本研究では.の処理は"1."&,?#4 123,4 .&/を使用する "1.は.文書 をアプリケーションから操作するための'の規格である '/45&#ではバージョン より"1.に準拠した'が標準'として導入されていため 標準的な 開発環境におい て.文書の処理が可能である

"1.の特徴は ある.文書全体を .パーサーを用いて「"1.ツリー」と呼ばれる 木構造のオブジェクトとしてメモリ中に展開することである このため .文書の記述順序に 関係なく.文書全体にアクセスすることが可能となる また "1.ツリーのルートとなる

8オブジェクトはメソッド ;<(を持つ このメソッドによって"1.ツ リーを探索するすることなく"属性をもつ要素を取得することを可能としている

発展関係定義文書の設計

本節では 抽象実行時にプロキシオブジェクトによって読み込まれる発展関係を.文書を 記述するためのデータスキーマの設計について述べる

"D"で定義した主な要素を表 に示す "D"の完全な定義は付録に記す

表

発展関係定義文書の

要素

./

データドメインを表現する

具体集合のデータ要素からなる

./

データを表現する要素

0,

複数のデータ要素を略記するための要素

122

発展関係にあるクラス集合の順序関係を表現する要素

122

クラスを表現する要素

フィールド要素とメソッド要素からなる

3,1.

クラスのインスタンス変数を表現する

データ要素

データ要素=>は子要素として における値としての情報を表す要素を保持する データ要素の例として抽象値の.表現を以下に示す

= 0"#$%$%0 00 0$%0>

=&'8>

! =(>

+ =%6%?( 0"#$%0@>

, =@(>

A ='8>

B ='8 8 0$%0>

C =(>

D =%6%?( 0- % 0@>

E =@(>

=@'8>

=@'8>

! =@&'8>

+ =@>

行目の は"型の属性であり Fデータドメイン名データ名Gで表される は

"<BC型の属性でありを抽象化した のデータ要素を参照する 行目から行目 まではが実際に プログラム上でどのような値として表現されているかを示す この

"D"では の値は='8>要素と=&'8>要素で表される前者は 組み込み の整数値などのプリミティブ型の値と文字列を指す後者は文字列を除く参照型の値を指す

=&'8>要素は子要素として='8>要素を持ちこの要素以下に記述された値をコ ンストラクタに渡すことで値を生成できることを示している

範囲要素

範囲要素=% >は複数のデータ要素を記述を省力化する要素である子要素として具体値の 開始値と終了値を表す値をもつ

以下に抽象値を の組み込み整数のからに具体化した例を示す

=% 0$%0>

=6%>

! ='8 8 00>

+ =(>

, =%?( 00@>

A =@(>

B =@'8>

C =@6%>

D =>

E ='8 8 0EE0>

=(>

=%?( 00@>

! =@(>

+ =@'8>

, =@>

A =@% >

行目のは"<BC型の属性であり抽象値のデータ要素を指す 行目から;行目は表 すデータの範囲の開始値を示す >行目から行目は表すデータの範囲の終了値を示す =% >

要素を用いることで=>要素の記述を減らし.文書の記述を削減することが可能となる

データドメイン要素

データドメイン要素=>は具体集合となるデータ要素の定義とそのデータドメイン から発展したデータドメインを表す

以下にの具体集合として() 0& '&$をもつの.表現を示す

= 0$%0>

=(>

! =%6%?( 0$%0@>

+ =@(>

, = 0$%0 > =@>

A = 0$%F%0 > =@>

B = 0$%G 0 > =@>

C =>

D =%6>

E = 0.$%0> =@>=@>=@>

=@>

行目の は"型の属性である 行目から行目はデータドメインの型を 表す 6行目から 行目はデータドメインの具体集合となるデータ要素である;行目から

行目は のそれぞれの抽象値を整数値に詳細化することで発展したデータドメイン

%を表している あるデータドメインから発展したデータドメインは=>

要素の子要素になる そしてそのデータドメインの発展の種類によってタグづけが行われる詳 細化しただけならば =%6>組に分割されたならば =>

直和に分割された場合は=%>とそれぞれタグづけられる

クラスドメイン要素

クラスドメイン要素=>は ルートとなるクラス要素とそのクラスから発展したク ラス群を表す=.>要素からなる この要素がプロキシクラスを生成する単位となる

以下に の発展の様子を表す.を示す

= 0 0>

= 0 0 >=@>

! =.>

+ = 0 0 >=@>

, =.>

A = 0 !0 >=@>

B =.>

C = 0 +0 >=@>

D =.>

E = 0 ,0>=@>

=@>

=@>

! =@>

+ =@>

, =@>

行目の は"型の属性である 行目の=>要素がこのクラスドメイン で最も抽象的なオブジェクトを構成するルートクラスとなる 行目から行目まではルートク ラスから発展したクラスを=.>タグで表現している

クラス要素

クラス要素=>は そのクラスで定義されているフィールド要素とメソッド要素で構成さ れる

以下にクラス +を. で表現したものを示す

= 0 +0 0 !0 0!0>

=6 0&0 @>

! =6 0(0 @>

+ =6 00 @>

, = 00 @>

A = 0)0 @>

B = 0*0 @>

C =@>

行目の は"型の属性である は"<BC型の属性でありこのクラスを一 つ抽象化したクラス要素を参照する 属性はプロキシオブジェクトによってクラスドメイ ン内で最も発展したクラスの判定するために使用されるこの属性値ではルートクラスの発展レ ベルをとして考えているためこの属性をマイナスの値にすることによってそのクラスのイン スタンス化を抑制し任意のレベルで抽象実行を行うことが可能となる 行目から行目はこの クラスで定義されているフィールドである また6行目から 行目はこのクラスで定義されてい るメソッドである

フィールド要素

クラス +のフィールド&は以下のように.で表される

=6 0&0 6 0 +&0

0$%0 0 !&0@>

行目の 6は"型の属性であり Fクラス名フィールド名Gで表現される 行目の

属性 は"<BC型でありデータドメイン要素かクラスドメイン要素を参照するしたがっ て属性がクラスドメイン要素を参照している場合はこのフィールドはオブジェクト間の 関連である 属性がデータドメイン要素を参照する場合はこのフィールドはオブジェク トの状態値を保持している

メソッド要素

クラス +のメソッド)は以下のように.で表される

= 0)0 0 +)0

0 !)0 % 0$%0 # 00@>

行目のは"型の属性でありFクラス名メソッド名Gで表現される 行目の 属性は"<BC型であり発展元のメソッド要素を参照する %属性は"<BC型であり 引 数となる複数のデータドメイン要素への参照となる #属性は メソッドが実装済の時 にF+$Gとなり未実装の時はF&Gとなるこの属性によって抽象実行をメソッドレベルでコント ロールすることが可能となるまた戻り値が型でない場合はデータドメイン要素を参照す る"<BC型の%8%属性を記述する必要がある

このメソッドの.表現で注目すべき事は メソッドの発展に関する情報は属性の みであることである したがって メソッドの発展が詳細化 直和分割または直積分割のいずれで あるかは直接は明示されないこの区別は引数のデータドメイン要素を参照する%属性や戻 り値データドメインを参照する%8%属性によって判定される

また にはメソッド名を同じで仮引数の型が異なるメソッドを定義することを可能とする オーバーロード機能があるが本研究では扱っていない しかしこれは本質的に問題があるわけで はないメソッドのオーバーロードは属性に型情報を含ませユニークな"を生成す ることで実現が可能である

抽象実行を実現するクラス

構成した抽象実行処理系のH.クラス図を図に示す

ドキュメント内 Japan Advanced Institute of Science and Technology (ページ 37-42)

関連したドキュメント