(57)【特許請求の範囲】
【請求項１】
少なくとも１つのメンバを含むオブジェクトが複数統合された１つの複合オブジェクトを実行するための、当該１つの複合オブジェクトを形成すべく指定された複数のオブジェクトを特定する情報を、その各々に優先順位を示す情報を付与して記憶するオブジェクト記憶手段と、管理手段と、アクセス処理手段とを備えた複合オブジェクト実行装置におけるオブジェクト実行方法であって、
当該複合オブジェクトの外部の要求元から、オブジェクトの追加を要求する外部アクセスを受けた場合に、該外部アクセスにより指定されたオブジェクトを特定する情報を、該外部アクセスにより優先順位が指定されている場合には該指定された優先順位を示す情報と対応付けて、優先順位が指定されていない場合には予め定められた基準に従って決定された優先順位を示す情報と対応付けて前記記憶手段に追加登録する処理を前記管理手段により行うステップと、
当該複合オブジェクトの外部の要求元から、当該複合オブジェクトに含まれる所望のメンバに対する外部アクセスを受けた場合に、各々のオブジェクトに付与された前記優先順位の高さを選択の基準として、該所望のメンバと同一のものとして識別されるメンバを含むオブジェクトのうちから対象とする１つのオブジェクトを選択し、この選択されたオブジェクトを対象として、該所望のメンバと同一のものとして識別されるメンバに対して外部アクセスする処理を前記アクセス処理手段により行うステップとを有することを特徴とするオブジェクト実行方法。
【請求項２】
当該複合オブジェクトの外部の要求元から、オブジェクトの削除を要求する外部アクセスを受けた場合に、該外部アクセスにより指定されたオブジェクトに関して前記記憶手段に記憶されている情報を削除する処理を前記管理手段により行うステップを更に有することを特徴とする請求項１に記載のオブジェクト実行方法。
【請求項３】
前記メンバはメソッドまたはフィールドであり、前記所望のメンバに対する外部アクセスは、所望のフィールドの値を外部へ取り出すアクセス、所望のフィールドを所望の値に更新するアクセス、または所望のメソッドを呼び出すアクセスであることを特徴とする請求項１に記載のオブジェクト実行方法。
【請求項４】
前記複合オブジェクト実行装置は、統合処理手段を更に備えるものであり、
当該複合オブジェクトを形成する複数のオブジェクトのうちのいずれかのオブジェクトのフィールドの値が更新された場合に、この更新後の値と同一の値を用いて、該更新されたフィールドと同一のものとして識別されるフィールドを含む他のオブジェクトそれぞれに対して、該当するフィールドの値の更新を要求する外部アクセスを行うことによって、全ての該当するフィールドの値を該同一の値に更新させる統合処理を前記統合処理手段により行うステップを更に有することを特徴とする請求項１に記載のオブジェクト実行方法。
【請求項５】
前記統合処理は、当該複合オブジェクトの外部の要求元から、特定の外部アクセスを受けたことを契機としてまたは当該複合オブジェクトを形成する複数のオブジェクトのうちのいずれかのオブジェクトのフィールドの値が更新されたことを契機として、起動されることを特徴とする請求項４に記載のオブジェクト実行方法。
【請求項６】
少なくとも１つのメンバを含むオブジェクトが複数統合された１つの複合オブジェクトを実行するための、当該１つの複合オブジェクトを形成すべく指定された複数のオブジェクトを特定する情報を、その各々に優先順位を示す情報を付与して記憶するオブジェクト記憶手段と、管理手段と、アクセス処理手段とを備えた複合オブジェクト実行装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体であって、
前記プログラムは、
当該複合オブジェクトの外部の要求元から、オブジェクトの追加を要求する外部アクセスを受けた場合に、該外部アクセスにより指定されたオブジェクトを特定する情報を、該外部アクセスにより優先順位が指定されている場合には該指定された優先順位を示す情報と対応付けて、優先順位が指定されていない場合には予め定められた基準に従って決定された優先順位を示す情報と対応付けて前記記憶手段に追加登録する処理を前記管理手段により行うステップと、
当該複合オブジェクトの外部の要求元から、当該複合オブジェクトに含まれる所望のメンバに対する外部アクセスを受けた場合に、各々のオブジェクトに付与された前記優先順位の高さを選択の基準として、該所望のメンバと同一のものとして識別されるメンバを含むオブジェクトのうちから対象とする１つのオブジェクトを選択し、この選択されたオブジェクトを対象として、該所望のメンバと同一のものとして識別されるメンバに対して外部アクセスする処理を前記アクセス処理手段により行うステップとをコンピュータに実行させるプログラムを記録したコンピュータ読取り可能な記録媒体。
【請求項７】
少なくとも１つのメンバを含むオブジェクトが複数統合された１つの複合オブジェクトを実行するための複合オブジェクト実行装置であって、
１つの複合オブジェクトを形成すべく指定された複数のオブジェクトを特定する情報を、その各々に優先順位を示す情報を付与して記憶するオブジェクト記憶手段と、
当該複合オブジェクトの外部の要求元から、オブジェクトの追加を要求する外部アクセスを受けた場合に、該外部アクセスにより指定されたオブジェクトを特定する情報を、該外部アクセスにより優先順位が指定されている場合には該指定された優先順位を示す情報と対応付けて、優先順位が指定されていない場合には予め定められた基準に従って決定された優先順位を示す情報と対応付けて前記記憶手段に追加登録する処理を行う管理手段と、
当該複合オブジェクトの外部の要求元から、当該複合オブジェクトに含まれる所望のメンバに対する外部アクセスを受けた場合に、各々のオブジェクトに付与された前記優先順位の高さを選択の基準として、該所望のメンバと同一のものとして識別されるメンバを含むオブジェクトのうちから対象とする１つのオブジェクトを選択し、この選択されたオブジェクトを対象として、該所望のメンバと同一のものとして識別されるメンバに対して外部アクセスする処理を行うアクセス処理手段とを備えたことを特徴とする複合オブジェクト実行装置。
【請求項８】
前記管理手段は、当該複合オブジェクトの外部の要求元から、オブジェクトの削除を要求する外部アクセスを受けた場合に、該外部アクセスにより指定されたオブジェクトに関して前記記憶手段に記憶されている情報を削除する処理をも行うものであることを特徴とする請求項７に記載の複合オブジェクト実行装置。
【請求項９】
当該複合オブジェクトを形成する複数のオブジェクトのうちのいずれかのオブジェクトのフィールドの値が更新された場合に、この更新後の値と同一の値を用いて、該更新されたフィールドと同一のものとして識別されるフィールドを含む他のオブジェクトそれぞれに対して、該当するフィールドの値の更新を要求する外部アクセスを行うことによって、全ての該当するフィールドの値を該同一の値に更新させる統合処理を行う統合処理手段を更に備えたことを特徴とする請求項７または８に記載の複合オブジェクト実行装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のオブジェクトを統合するためのオブジェクト実行方法及び複合オブジェクト実行装置に関する。
【０００２】
【従来の技術】
従来、オブジェクト指向プログラミング言語環境として広く利用されている“Ｃ++言語”あるいは“ＪＡＶＡ言語”などは、静的なオブジェクトの構造を提供していた。
【０００３】
静的なオブジェクトの構造とは、フィールド（属性あるいはデータとも呼ばれる）やメソッドは（オブジェクトもしくはそのクラスの）コンパイル時に決定されオブジェクトの内部に格納されたものである。この構造は、継承関係の親クラスで宣言されたメソッドやフィールドを子クラスのメンバとして扱う場合にも適応される。
【０００４】
また、この構造を拡張した仮想化技術を用いる方法の場合には、コンパイル時には構造が完全には決定されないが、プログラム中のオブジェクトの初期化時には構造が決定されていた。
【０００５】
このため、このようなプログラミング言語環境を用いたプログラムの実行時には、オブジェクトのフィールドやメソッドの格納領域は変更できなかった。すなわち、プログラム実行時のオブジェクトに対して、宣言されたフィールドの削除あるいは新たなフィールドの追加を行うことができず、しかもプログラム実行時のメソッドの追加や削除や修正を行うこともできなかった。
【０００６】
したがって、例えば新たな特性を持つオブジェクトを記述するために新たなクラスを宣言する、あるいは親クラスの宣言を修正する場合には、システム全体を停止して再コンパイルする等の処理が必要となっていた。すなわち、実行時にオブジェクトのクラス宣言あるいは継承関係を変更することができなかった。
【０００７】
【発明が解決しようとする課題】
上述したように、従来の静的構造を持つオブジェクト指向言語環境では、オブジェクトの修正（フィールドやメソッドの修正）をプログラム実行時に行うことは困難であり、例えば新たな特性を持つ親クラスを宣言する場合にはシステム全体を停止して再コンパイルすることなどが必要であった。
【０００８】
本発明は、上記事情を考慮してなされたもので、実行時に複数のオブジェクトを統合することを可能とし、オブジェクトの実行時修正を可能とするオブジェクト実行方法及び複合オブジェクト実行装置を提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明は、少なくとも１つのメンバを含むオブジェクトが複数統合された１つの複合オブジェクトを実行するための、当該１つの複合オブジェクトを形成すべく指定された複数のオブジェクトを特定する情報を、その各々に優先順位を示す情報を付与して記憶するオブジェクト記憶手段と、管理手段と、アクセス処理手段とを備えた複合オブジェクト実行装置におけるオブジェクト実行方法であって、当該複合オブジェクトの外部の要求元から、オブジェクトの追加を要求する外部アクセスを受けた場合に、該外部アクセスにより指定されたオブジェクトを特定する情報を、該外部アクセスにより優先順位が指定されている場合には該指定された優先順位を示す情報と対応付けて、優先順位が指定されていない場合には予め定められた基準に従って決定された優先順位を示す情報と対応付けて前記記憶手段に追加登録する処理を前記管理手段により行うステップと、当該複合オブジェクトの外部の要求元から、当該複合オブジェクトに含まれる所望のメンバに対する外部アクセスを受けた場合に、各々のオブジェクトに付与された前記優先順位の高さを選択の基準として、該所望のメンバと同一のものとして識別されるメンバを含むオブジェクトのうちから対象とする１つのオブジェクトを選択し、この選択されたオブジェクトを対象として、該所望のメンバと同一のものとして識別されるメンバに対して外部アクセスする処理を前記アクセス処理手段により行うステップとを有することを特徴とする。
また、本発明は、少なくとも１つのメンバを含むオブジェクトが複数統合された１つの複合オブジェクトを実行するための、当該１つの複合オブジェクトを形成すべく指定された複数のオブジェクトを特定する情報を、その各々に優先順位を示す情報を付与して記憶するオブジェクト記憶手段と、管理手段と、アクセス処理手段とを備えた複合オブジェクト実行装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体であって、前記プログラムは、当該複合オブジェクトの外部の要求元から、オブジェクトの追加を要求する外部アクセスを受けた場合に、該外部アクセスにより指定されたオブジェクトを特定する情報を、該外部アクセスにより優先順位が指定されている場合には該指定された優先順位を示す情報と対応付けて、優先順位が指定されていない場合には予め定められた基準に従って決定された優先順位を示す情報と対応付けて前記記憶手段に追加登録する処理を前記管理手段により行うステップと、当該複合オブジェクトの外部の要求元から、当該複合オブジェクトに含まれる所望のメンバに対する外部アクセスを受けた場合に、各々のオブジェクトに付与された前記優先順位の高さを選択の基準として、該所望のメンバと同一のものとして識別されるメンバを含むオブジェクトのうちから対象とする１つのオブジェクトを選択し、この選択されたオブジェクトを対象として、該所望のメンバと同一のものとして識別されるメンバに対して外部アクセスする処理を前記アクセス処理手段により行うステップとをコンピュータに実行させるプログラムを記録したコンピュータ読取り可能な記録媒体である。
また、本発明は、少なくとも１つのメンバを含むオブジェクトが複数統合された１つの複合オブジェクトを実行するための複合オブジェクト実行装置であって、１つの複合オブジェクトを形成すべく指定された複数のオブジェクトを特定する情報を、その各々に優先順位を示す情報を付与して記憶するオブジェクト記憶手段と、当該複合オブジェクトの外部の要求元から、オブジェクトの追加を要求する外部アクセスを受けた場合に、該外部アクセスにより指定されたオブジェクトを特定する情報を、該外部アクセスにより優先順位が指定されている場合には該指定された優先順位を示す情報と対応付けて、優先順位が指定されていない場合には予め定められた基準に従って決定された優先順位を示す情報と対応付けて前記記憶手段に追加登録する処理を行う管理手段と、当該複合オブジェクトの外部の要求元から、当該複合オブジェクトに含まれる所望のメンバに対する外部アクセスを受けた場合に、各々のオブジェクトに付与された前記優先順位の高さを選択の基準として、該所望のメンバと同一のものとして識別されるメンバを含むオブジェクトのうちから対象とする１つのオブジェクトを選択し、この選択されたオブジェクトを対象として、該所望のメンバと同一のものとして識別されるメンバに対して外部アクセスする処理を行うアクセス処理手段とを備えたことを特徴とする。
【００１３】
なお、装置に係る本発明は方法に係る発明としても成立し、方法に係る本発明は装置に係る発明としても成立する。
また、装置または方法に係る本発明は、コンピュータに当該発明に相当する手順を実行させるための（あるいはコンピュータを当該発明に相当する手段として機能させるための、あるいはコンピュータに当該発明に相当する機能を実現させるための）プログラムを記録したコンピュータ読取り可能な記録媒体としても成立する。
【００１４】
本発明によれば、コンパイル済みのオブジェクトであってもそれらを複数統合した複合オブジェクトを、該オブジェクトを利用するアプリケーションプログラム実行中に定義（複合オブジェクトの新規作成、複合オブジェクトへのさらなるオブジェクトの追加、複合オブジェクトからのオブジェクトの削除）することができるようになる。従って、実行時に任意にオブジェクトを追加あるいは削除することによって、フィールドやメソッドの修正された新たなオブジェクト（複合オブジェクト）を生成することができる。また、該アプリケーションプログラムからはこの複合オブジェクトを一般的なオブジェクトと区別なく同様に扱うことができるようになる。また、本発明によれば、複合オブジェクトを外部から操作した場合において、複合オブジェクトに含まれるオブジェクト内のフィールドの一貫性を保証することができる。
【００１５】
【発明の実施の形態】
以下、図面を参照しながら発明の実施の形態を説明する。
【００１６】
図１に、本発明の一実施形態に係る複合オブジェクトの構成例を示す。
【００１７】
この複合オブジェクト１００は、統合対象として指定された複数のオブジェクト２００、複数のオブジェクト２００を管理する層管理機構３００、フィールドアクセス機構４００、メソッドアクセス機構５００、フィールド統合機構６００により構成される。
【００１８】
オブジェクト２００は、それぞれ、０または１または複数のフィールド２１０と、０または１または複数のメソッド２２０から構成される。ただし、各々のオブジェクト２００は、少なくとも１つのフィールドまたはメソッドを含むものとする。
【００１９】
なお、説明の便宜上、複合オブジェクトに対して、既存の仕組みによる一般的なオブジェクトを通常オブジェクトと呼ぶものとする。
【００２０】
層管理機構３００は、当該複合オブジェクトを形成する複数のオブジェクトについて、各オブジェクトに対する参照（例えばオブジェクトＩＤあるいはオブジェクトへのポインタ）を記憶し、また各オブジェクト（に対する参照）にインデックスを付与することによって各オブジェクトの順位付けを行う、などの層管理を行う。
【００２１】
フィールドアクセス機構４００は、外部からの当該複合オブジェクトのフィールドへのアクセスを提供する。
【００２２】
メソッドアクセス機構５００は、外部からの当該複合オブジェクトのメソッドへのアクセスを提供する。
【００２３】
フィールド統合機構６００は、当該複合オブジェクトを形成する複数のオブジェクトのうちの２以上のオブジェクト２００に共通に含まれる同一識別子を持つフィールドを同一化する。
【００２４】
複合オブジェクト１００、オブジェクト２００、層管理機構３００、フィールドアクセス機構４００、メソッドアクセス機構５００、フィールド統合機構６００は、いずれも、ソフトウェアで実現される。
【００２５】
本実施形態では、オブジェクトが複数登録されて複合オブジェクトが作成される前は、層管理機構３００とフィールドアクセス機構４００とメソッドアクセス機構５００とフィールド統合機構６００により構成される、複合オブジェクトを実現するための機構部分（メンバを空とする複合オブジェクトとみることもできる）が存在し、これにオブジェクトが複数登録されることによって図１のような複合オブジェクトが形成される。
【００２６】
また、複合オブジェクトに対して、随意にオブジェクト２００を追加することも、削除することも、可能である。
【００２７】
なお、オブジェクトが１つだけ登録された状態の複合オブジェクトが存在し得るが、これはその登録されたオブジェクトと同一のものとして、利用可能である。
【００２８】
また、層管理機構３００とフィールドアクセス機構４００とメソッドアクセス機構５００とフィールド統合機構６００により構成される機構部分の製作者と利用者とが異なる場合には、例えば、該機構部分に相当するクラスをコンパイルしたものが、単独であるいはライブラリに含まれて、記録媒体あるいは通信媒体を介して、製作者から利用者へ提供される。利用者間で受け渡しする場合も同様である。そして、利用者側では、例えば、当該クラスから空の複合オブジェクトが生成され、これにコンパイル済みのオブジェクトが複数登録されて複合オブジェクトが形成される。
【００２９】
本実施形態の複合オブジェクトは、通常オブジェクトと推移的に扱うことが可能である。すなわち、本実施形態の複合オブジェクトは、オブジェクトを利用するプログラムなどの外部から見た場合（外部からの操作としては）、通常オブジェクトとの区別が発生せず、通常オブジェクトと全く同様に利用可能である。
【００３０】
また、上記の性質から、複合オブジェクトを構成するオブジェクト２００として、他の複合オブジェクトを用いることも可能である。もちろん、この複合オブジェクトの階層構造は何回層に渡っても実現可能である。
【００３１】
図２に、オブジェクト２００の構成例を示す。
【００３２】
フィールド２２０は、そのフィールドが含まれるオブジェクト内で唯一性が保たれたフィールド識別子２２１と組みになり、オブジェクト２００内に格納される。なお、フィールド２２０には、その値自体が格納されてもよいが、その値が格納されたメモリへのポインタが格納されてもよい。また、本実施形態におけるフィールド識別子とは、一般のオブジェクト指向言語におけるシグニチャを意味するものである。
【００３３】
同様に、メソッド２１０は、そのメソッドが含まれるオブジェクト内で唯一性が保たれたメソッド識別子２１１と組みになり、オブジェクト２００内に格納される。なお、メソッド２１０には、そのコード自体が格納されてもよいが、そのコードが格納されたメモリへのポインタが格納されてもよい。また、本実施形態におけるメソッド識別子とは、一般のオブジェクト指向言語におけるシグニチャを意味するものである。
【００３４】
また、オブジェクト２００には、外部からのアクセスを提供するための、メソッド参照機構２０４、メソッド呼び出し機構２０５、フィールド参照機構２０１、フィールド値取り出し機構２０２、フィールド値更新機構２０３が含まれる。
【００３５】
フィールド参照機構２０１は、フィールド識別子２２１をもとに、それと組みとなるフィールド２２０の存在の有無を検出する。
【００３６】
フィールド値更新機構２０３は、フィールド識別子２２１をもとに、それと組みとなるフィールド２２０の値を更新する。
【００３７】
メソッド参照機構２０４は、メソッド識別子２１１をもとに、それと組みとなるメソッド２１０の存在の有無を検出する。
【００３８】
メソッド呼び出し機構２０５は、メソッド識別子２１１をもとに、それと組みとなるメソッド２１０を呼び出す。
【００３９】
図３に、層管理機構３００の構成例を示す。
【００４０】
層管理機構３００は、オブジェクト参照テーブル３０１、オブジェクト参照追加機構３０４、オブジェクト参照削除機構３０５を含む。
【００４１】
オブジェクト参照テーブル３０１は、オブジェクト２００への参照（例えばオブジェクトＩＤあるいはオブジェクトへのポインタ）を示すオブジェクト参照３０３と、それと対になるインデックス３０２との組み合わせを複数保持する機構である。
【００４２】
オブジェクト参照追加機構３０４は、オブジェクト参照テーブル３０１への新たなオブジェクト参照３０３とインデックス３０２との組みを登録するための機構である。
【００４３】
オブジェクト参照削除機構３０５は、オブジェクト参照テーブル３０１からのオブジェクト参照３０３とインデックス３０２との組みを削除するための機構である。
【００４４】
インデックス３０２を基準として複数のオブジェクト参照３０３を一意に順位付け、同じフィールドやメソッドが複数のオブジェクト２００に含まれる場合には最も高順位のインデックス３０２を持つオブジェクト２００に含まれるフィールドやメソッドを使用するものと定めることにより、層状に重ね合わせた複数のオブジェクト２００を外部に提供することが可能となる。
【００４５】
なお、インデックスの順位を決める方法としては、例えば、（１）インデックスの値が小さい程、高順位とする方法、（２）インデックスの値が大きい程、高順位とする方法がある。
【００４６】
また、オブジェクト参照テーブル３０１に保持されるオブジェクト参照３０３は、インデックス３０２を指定することで外部に取り出すことが可能である。
【００４７】
なお、層管理機構３００内に、更に、外部から既登録のインデックスを参照するための機構（例えば、外部からの問い合わせに応答して既登録のインデックスを返す機構）を設けてもよい。この機能は、例えば、後述するように、複合オブジェクトに対して、プログラムなどの外部からインデックスを指定して新規オブジェクトを登録する際に、外部から既登録のインデックスを参照するために用いられる。
【００４８】
図４に、フィールドアクセス機構４００の構成例を示す。
【００４９】
フィールドアクセス機構４００は、層管理機構３００からオブジェクト参照３０３を取り出すオブジェクト参照検出部４０４、取り出されたオブジェクト参照３０３で示されるオブジェクト２００から、指定されたフィールド識別子２２１に示されるフィールド２２０を取り出すフィールド検出部４０３、取り出されたフィールド２２０に対して値を取り出すフィールド値取り出し部４０１、取り出されたフィールド２２０に対して値の更新を行うフィールド値更新部４０２を含む。
【００５０】
図５に、メソッドアクセス機構５００の構成例を示す。
【００５１】
メソッドアクセス機構５００は、層管理機構３００からオブジェクト参照３０３を取り出すオブジェクト参照検出部５０３、取り出されたオブジェクト参照３０３で示されるオブジェクト２００から、指定されたメソッド識別子２１１に示されるメソッド２１０を取り出すメソッド検出部５０２、取り出されたメソッド２１０を呼び出すメソッド呼び出し部５０１を含む。
【００５２】
図６に、フィールド統合機構６００の構成例を示す。
【００５３】
フィールド統合機構６００は、層管理機構３００からオブジェクト参照３０３を取り出すオブジェクト参照検出部６０３、フィールドアクセス機構４００のフィールド値取り出し部４０１からフィールドの値を取り出し保持するフィールド値保持部６０２、フィールド値保持部６０２が保持するフィールドの値をフィールドアクセス機構４００のフィールド値更新部４０２に引き渡すフィールド保持値更新部６０１を含む。
【００５４】
フィールド統合機構６００の起動方法としては、例えば、プログラムなどの外部から起動する方法や、フィールド値が更新されたときに（例えば、外部からフィールド値を更新するアクセスがなされたときや、外部からフィールド値を更新するメソッドが起動されたときなどに）自動起動する方法が考えられる。また、いずれの起動方法を用いても構わないし、複数の起動方法を併用してもよい。
【００５５】
以下では、本実施形態の複合オブジェクトの動作についてより詳しく説明する。
【００５６】
（１）複合オブジェクトに対するフィールド識別子をパラメータとしたフィールド値の取り出しは、フィールドアクセス機構４００のフィールド値取り出し部４０１によって処理される。
【００５７】
図７に、複合オブジェクトに対するフィールド値の取り出しを行う場合の動作手順の一例を示す。
【００５８】
フィールドアクセス機構４００のオブジェクト参照検出部４０４では、層管理機構３００からオブジェクト参照（３０３）を取り出す（ステップＳ７０１）。その際、高順位のインデックス（３０２）を持つオブジェクト参照から順番に取り出す。
【００５９】
次に、オブジェクト参照に示されるオブジェクトを取り出し、フィールド検出部４０３に通知する（ステップＳ７０２）。
【００６０】
フィールド検出部４０３は、通知されたオブジェクトがパラメータとして示されたフォールド識別子を保持しているか否かをフィールド参照機構２０１に問い合わせる（ステップＳ７０３）。
【００６１】
ここで、オブジェクトがフィールド識別子を保持していた場合には、オブジェクトのフィールド値取り出し機構２０２にフィールド識別子を引き渡す。フィールド識別子を受け取ったフィールド値取り出し機構２０２は、フィールド識別子の示すフィールドの値を取り出す（ステップＳ７０４）。取り出されたフィールドの値は、フィールドアクセス機構４００により、アクセス元に提供される。なお、フィールドの値ではなく、その値が格納されたメモリへのポインタをプログラムなどのアクセス元に提供し、そのアクセス元が提供されたポインタをもとにフィールドの値を得るようにしてもよい。
【００６２】
一方、オブジェクトがフィールド識別子を保持していない場合には、次のオブジェクト参照をオブジェクト参照検出部４０４から取り出し（ステップＳ７０５）、ステップＳ７０２に戻って、このオブジェクト参照の示すオブジェクトを取り出し、フィールド検出部４０３に通知する。以降は、指定されたフィールド識別子を保持したオブジェクトが見つかるまで、上記の手順を繰り返す。
【００６３】
（２）複合オブジェクトに対するフィールド識別子と更新値とをパラメータとしたフィールド値の更新は、フィールドアクセス機構４００のフィールド値更新部４０２によって処理される。
【００６４】
図８に、複合オブジェクトに対するフィールド値の更新を行う場合の動作手順の一例を示す。
【００６５】
フィールドアクセス機構４００のオブジェクト参照検出部４０４では、層管理機構３００からオブジェクト参照（３０３）を取り出す（ステップＳ８０１）。その際、高順位のインデックス（３０２）を持つオブジェクト参照から順番に取り出す。
【００６６】
次に、オブジェクト参照に示されるオブジェクトを取り出し、フィールド検出部４０３に通知する（ステップＳ８０２）。
【００６７】
フィールド検出部４０３は、通知されたオブジェクトがパラメータとして示されたフィールド識別子を保持しているか否かをフィールド参照機構２０１に問い合わせる（ステップＳ８０３）。
【００６８】
ここで、オブジェクトがフィールド識別子を保持していた場合には、オブジェクトのフィールド値更新機構２０３にフィールド識別子と更新値とを引き渡す。フィールド識別子と更新値とを受け取ったフィールド値更新機構２０３はフィールド値の更新を行う（ステップＳ８０４）。
【００６９】
一方、オブジェクトがフィールド識別子を保持していない場合には、次のオブジェクト参照をオブジェクト参照検出部４０４から取り出し（ステップＳ８０５）、ステップＳ８０５に戻って、このオブジェクト参照の示すオブジェクトを取り出し、フィールド検出部４０３に通知する。以降は、指定されたフィールド識別子を保持したオブジェクトが見つかるまで、上記の手順を繰り返す。
【００７０】
（３）複合オブジェクトに対するメソッド識別子とメソッドの引数とをパラメータとしたメソッド呼び出しは、メソッドアクセス機構５００のメソッド呼び出し部５０１によって処理される。
【００７１】
図９に、複合オブジェクトに対するメソッド呼び出しを行う場合の動作手順の一例を示す。
【００７２】
メソッドアクセス機構５００のオブジェクト参照検出部５０３では、層管理機構３００からオブジェクト参照（３０３）を取り出す（ステップＳ９０１）。その際、高順位のインデックス（３０２）を持つオブジェクト参照から順番に取り出す。
【００７３】
次に、オブジェクト参照に示されるオブジェクトを取り出し、メソッド検出部５０２に通知する（ステップＳ９０２）。
【００７４】
メソッド検出部５０２は、通知されたオブジェクトがパラメータとして示されたメソッド識別子を保持しているか否かをメソッド参照機構２０４に問い合わせる（ステップＳ９０３）。
【００７５】
ここで、オブジェクトがメソッド識別子を保持していた場合には、オブジェクトのメソッド呼び出し機構２０５にメソッド識別子とメソッドの引数とを引き渡す。メソッド識別子とメソッドの引数とを受け取ったメソッド呼び出し機構２０５はメソッド識別子が示すメソッドを呼び出す（ステップＳ９０４）。
【００７６】
一方、オブジェクトがメソッド識別子を保持していない場合には、次のオブジェクト参照をオブジェクト参照検出部５０３から取り出し（ステップＳ９０５）、ステップＳ９０２に戻って、このオブジェクト参照の示すオブジェクトを取り出しメソッド検出部５０２に通知する。以降は、指定されたメソッド識別子を保持したオブジェクトが見つかるまで、上記の手順を繰り返す。
【００７７】
（４）複合オブジェクトに対する新規オブジェクトの登録は、オブジェクト参照追加機構３０４で実現される。
【００７８】
図１０に、複合オブジェクトに対する新規オブジェクトの登録を行う場合の動作手順の一例を示す。
【００７９】
複合オブジェクトに対する新規オブジェクトの登録は、オブジェクト参照テーブル（３０１）へのインデックス（３０２）がプログラムなどの外部から指定される場合と、指定されない場合とが存在する。
【００８０】
このインデックスの有無を最初に判定する（ステップＳ１００１）。
【００８１】
インデックスが指定されていない場合には、あらかじめシステムで定められたルールを用いて、新たなインデックス番号を生成する（ステップＳ１００５）。
【００８２】
このルールは、任意に定めることが可能である。例えば、小さい値を持つインデックス程、高順位であるものとするシステムで、インデックス指定のない新規オブジェクトは最も低い（高い）順位で登録する、というように取り決める場合には、このルールは、新規のオブジェクトに対して当該複合オブジェクト内で既登録のインデックスよりも大きい（小さい）インデックスを生成する、というようにすればよい。
【００８３】
一方、インデックスが指定されている場合には、オブジェクト参照テーブル（３０１）に、指定されたインデックスが既に登録されているか否かを判定する（ステップＳ１００２）。インデックスが未だ登録されていない場合には、当該指定されたインデックスを採用することが決定される。
【００８４】
これに対して、インデックスが既に登録されている場合には、警告またはエラーを出すという方法もあるが、本実施形態では、同一インデックスを持つ既登録のオブジェクトを削除して、指定されたインデックスを持つ新規オブジェクトとして登録するものとする。そこで、オブジェクト参照テーブルから、指定されたインデックスと、それと組みになるオブジェクト参照（３０３）とを削除するため、オブジェクト参照削除機構３０５に指定されたインデックスを引き渡す（ステップＳ１００３）。
【００８５】
以上の３つのケースのいずれかで新規オブジェクトに付与するインデックスが決定されたならば、当該インデックスと、当該オブジェクトへの参照とを、オブジェクト参照テーブルに登録する（ステップＳ１００４）。
【００８６】
（５）複合オブジェクトに対するオブジェクトの削除は、オブジェクト参照削除機構３０５により実現される。
【００８７】
図１１に、複合オブジェクトに対するオブジェクトの削除を行う場合の動作手順の一例を示す。
【００８８】
オブジェクト参照テーブル（３０１）のインデックス（３０２）をパラメータとして指定されたオブジェクト参照機構２０１は、指定されたインデックスがオブジェクト参照テーブルに存在しているか否かを判定する（ステップＳ１１０１）。
【００８９】
インデックスが存在しない場合は、削除すべきオブジェクトが存在しないものと判断し、終了する。
【００９０】
インデックスが存在する場合は、インデックスと、それと組みとなるオブジェクト参照（３０３）とを、オブジェクト参照テーブル（３０１）から削除する（ステップＳ１１０２）。
【００９１】
（６）複合オブジェクトのフィールド値変更を複合オブジェクトに追加された全てのオブジェクトに反映するための処理は、フィールド統合機構６００により実現される。
【００９２】
本実施形態では、当該複合オブジェクトを形成する複数のオブジェクトのうちの２以上のオブジェクトに共通に含まれる同一識別子を持つフィールドの値が変更される場合、それらのオブジェクトのうちで最も高い順位のインデックスを持つオブジェクト内のフィールドの値が更新され、それ以外のオブジェクトに共通に含まれる同一識別子を持つフィールドの値は、当該フィールド値更新処理においては更新されない。
【００９３】
そこで、本実施形態では、フィールド統合機構６００により、当該フィールド値更新処理においては更新されなかった同一識別子を持つ他のフィールドを同じ値に更新するための機構を設けている。
【００９４】
図１２に、このフィールド統合機構６００の動作手順の一例を示す。
【００９５】
フィールド統合機構６００は、外部からのフィールド統合の指示（アクセス）によってもしくは自動的に起動すると、フィールド値の更新を受けたオブジェクトを示すオブジェクト参照（３０３）に対して組みになるオブジェクト参照テーブル（３０１）のインデックス（３０２）と、更新されたフィールド値と、更新を受けたフィールドのフィールド識別子とをパラメータとして受け取る。
【００９６】
パラメータとして渡されたフィールド値とフィールド識別子とをフィールド値保持部６０２に引き渡し、フィールド値とフィールド識別子とを保持する（ステップＳ１２０１）。
【００９７】
次に、パラメータとして渡されたインデックスと異なるインデックスをオブジェクト参照テーブル（３０１）から取り出す（ステップＳ１２０２）。
【００９８】
取り出したインデックスと、保持されているフィールド値と、フィールド識別子とをパラメータとして、オブジェクトのフィールド値更新機構（２０３）に引き渡す（ステップＳ１２０３）。
【００９９】
パラメータとして指定されたインデックス以外のすべてのインデックスについて、ステップＳ１２０２とステップＳ１２０３を繰り返す（ステップＳ１２０４）。
【０１００】
以下では、本実施形態を具体例を用いながら説明する。
【０１０１】
図１３に、複合オブジェクトの実行時の例を示す。この例のシステムは、２つオブジェクト１，２からなる複合オブジェクトＳと、（通常）オブジェクト３，…と、アプリケーションプログラム１０００とから構成されるものとする。
【０１０２】
アプリケーションプログラムとは、オブジェクト３や複合オブジェクトＳを操作あるいは利用するものである。
【０１０３】
前述したように、アプリケーションプログラムからは、複合オブジェクトとオブジェクトのいずれに対しても、区別なく均一にアクセス可能である。すなわち、層管理機構３００とフィールドアクセス機構４００とメソッドアクセス機構５００とフィールド統合機構６００の働きにより、アプリケーションプログラムから見た場合には、メソッドの起動やフィールド値の参照やあるいはフィールド値の変更が、複合オブジェクトも通常オブジェクトと同様に可能である。
【０１０４】
よって、ユーザは、オブジェクトの代わりに複合オブジェクトを利用することで実行時にオブジェクトの動作を変更することが可能となる。すなわち、アプリケーションプログラムがオブジェクトの機能を利用する場合には、プログラムの動作を実行時にカスタマイズできることになる。
【０１０５】
ここで、複合オブジェクトの実行時の動作について、複合オブジェクトの具体例を用いて説明する。
【０１０６】
図１４は、２種類のメソッドと２種類のフィールドを持つオブジェクトが２個存在することを示している。具体的には、（ａ）のオブジェクト１には、メソッドＡ、メソッドＢ、フィールドａ、フィールドｂが存在し、（ｂ）のオブジェクト２には、メソッドＢ、メソッドＣ、フィールドｂ、フィールドｃが存在する。
【０１０７】
なお、この例では、インデックス番号は小さい値のものが優先して検索されるものと仮定するが、このルールはシステムによって異なってもよいものとする。
【０１０８】
また、オブジェクトのメソッドあるいはフィールドは、それぞれメソッド識別子あるいはフィールド識別子は同一であるが、それらの実際の処理あるいは値は異なっていてもよいものとする。
【０１０９】
なお、ここでは、インデックス番号１の方がインデックス番号２よりも優先される（高順位である）ものとする。
【０１１０】
（１）最初に、オブジェクトを複合オブジェクトに追加する操作について説明する。ここでは、一例として、オブジェクト１を複合オブジェクトに追加し、さらにオブジェクト２を複合オブジェクトに追加する操作について説明する。
【０１１１】
まず、オブジェクト１をインデックス番号１にて複合オブジェクトに追加する。この処理は、図１０に例示した手順で実現できる。この場合、図１０において、インデックス番号として１が指定されており、このインデックス番号が複合オブジェクト内で利用されていない場合の処理に該当する。よって、図１０のステップＳ１００４の処理により、“インデックス１”と“オブジェクト１への参照”との組みが、オブジェクト参照テーブル（３０１）に登録される。これにより、複合オブジェクトには、オブジェクト１の、
メソッドＡ
メソッドＢ
フィールドａ
フィールドｂ
が存在する。
【０１１２】
次に、上記と同様の手順で、オブジェクト２をインデックス番号２にて複合オブジェクトに追加する。これにより、複合オブジェクトには、オブジェクト参照テーブルに登録されたインデックスの順により、
オブジェクト１のメソッドＡ
オブジェクト１のメソッドＢ
オブジェクト２のメソッドＣ
が存在し、さらに、
オブジェクト１のフィールドａ
オブジェクト１のフィールドｂ
オブジェクト２のフィールドｃ
が存在する。これにより、オブジェクト１とオブジェクト２の両特性を併せ持った複合オブジェクトＳ（図１３）が作成される。
【０１１３】
また、同様に、図１１に例示した手順に従うことで、複合オブジェクトに登録されたオブジェクトの削除が可能となる。
【０１１４】
（２）次に、複合オブジェクトに対するメソッド呼び出しについて説明する。ここでは、一例として、上記の複合オブジェクトＳに対するメソッドＡの呼び出しを考える。
【０１１５】
複合オブジェクトＳに対するメソッドＡへのアクセスは、メソッドアクセス機構５００により受け取られる。メソッドアクセス機構５００は、図９に例示した手順に従う。
【０１１６】
この例では、メソッドＡを保持しているのはオブジェクト１である。すなわち、層管理機構３００からオブジェクト１への参照を取り出す。次に、オブジェクト１がメソッドＡを保持しているため、オブジェクト１のメソッドＡに対してメソッド呼び出しを実行する。オブジェクトのメソッドの保持の確認は、オブジェクトのメソッド参照機構２０４により実現される。また、オブジェクトのメソッド呼び出しは、オブジェクトのメソッド呼び出し機構２０５により実現される。
【０１１７】
（３）次に、複合オブジェクトに対するフィールドへのアクセスについて説明する。ここでは、一例として、複合オブジェクトＳに対するフィールドａへのアクセスを考える。フィールドへのアクセスとは、フィールド値の参照とフィールド値の更新とに分けられる。
【０１１８】
まず、フィールド値の参照について説明する。
【０１１９】
複合オブジェクトに対するフィールドへのアクセスは、フィールドアクセス機構４００により受け取られる。この場合、フィールドアクセス機構４００は、図７に例示したフィールド値参照手順に従う。
【０１２０】
この例では、フィールドａを保持しているのは、オブジェクト１である。すなわち、層管理機構３００からオブジェクト１への参照を取り出す。次に、オブジェクト１がフィールドａを保持しているため、オブジェクト１のフィールドａに対して値の取り出しを実行する。オブジェクトのフィールドの保持の確認は、オブジェクトのフィールド参照機構２０１により実現される。また、オブジェクトのフィールド値取り出しは、オブジェクトのフィールド値取り出し機構２０２により実現される。
【０１２１】
次に、フィールド値の更新について説明する。
【０１２２】
複合オブジェクトに対するフィールドへのアクセスは、フィールドアクセス機構４００により受け取られる。この場合、フィールドアクセス機構４００は、図８に例示したフィールド値更新手順に従う。
【０１２３】
この例では、フィールドａを保持しているのは、オブジェクト１である。上記のフィールド値参照の場合と同様に、層管理機構３００からオブジェクト１への参照を取り出す。次に、オブジェクト１がフィールドａを保持しているため、オブジェクト１のフィールドａに対して値の更新を実行する。オブジェクトのフィールドの保持の確認は、オブジェクトのフィールド参照機構２０１により実現される。また、オブジェクトのフィールド値更新は、オブジェクトのフィールド値更新機構２０３により実現される。
【０１２４】
（４）次に、フィールド統合機構６００の動作について説明する。
【０１２５】
ここでは、一例として、上記の複合オブジェクトＳを使用する。さらに、オブジェクト１とオブジェクト２のメソッドＢは、呼び出しによりそれぞれのフィールドｂを更新するものと仮定する。
【０１２６】
この場合、複合オブジェクトＳのメソッドＢが呼び出されると、インデックスの順に従って、オブジェクト１のメソッドＢが呼び出される。これにより、オブジェクト１のフィールド１のフィールドｂが更新され、すなわち複合オブジェクトＳとしてのフィールドｂも更新されたことになる。
【０１２７】
ここで、フィールド統合機構６００が存在しない場合を仮定すると、上記のオブジェクト１のメソッドＢの呼び出し後に、オブジェクト１が複合オブジェクトＳから削除されると、複合オブジェクトＳのフィールドｂはオブジェクト２のものが使われる。この値はオブジェクト１のメソッドＢが呼び出された以前のものとなり、不具合が発生する。
【０１２８】
これに対して、オブジェクト２のフィールドｂの値を、オブジェクト１のメソッドＢ呼び出し後の値に更新するための機構がフィールド統合機構６００である。
【０１２９】
ここで、上記のメソッドＢの呼び出し時のフィールドｂの統合について具体例を用いて説明する。
【０１３０】
まず、複合オブジェクトＳへのメソッドＢの呼び出しは、オブジェクト１のメソッドＢに対して行われたとする。この後、オブジェクト１のフィールドｂをフィールド統合機構６００に指示し、複合オブジェクトのフィールドを統合する。
【０１３１】
この場合、フィールド統合機構６００は、図１２に例示したフィールド統合操作手順に従う。
【０１３２】
フィールド統合機構６００は、まず、オブジェクト１のフィールドｂのフィールド識別子と値を保持する。次に、層管理機構３００からオブジェクト１以外のオブジェクトへの参照を取り出す。すなわち、この例では、オブジェクト２への参照が取り出される。次に、保持されたオブジェクト１のフィールドｂの値によって、オブジェクト２の同一フィールド識別子に対するフィールド値を更新する。すなわち、オブジェクト２のフィールドｂに対し、オブジェクト１のフィールドｂの値で更新する。これにより、更新されたオブジェクト１のフィールド値で複合オブジェクト内の他のオブジェクトのフィールド値に対して更新が行われる。
【０１３３】
このフィールド統合機構６００を、複合オブジェクトのメソッド呼び出し後に、その呼び出されたメソッドを提供するオブジェクトが保持するすべてのフィールドに対しフィールド統合機構６００を利用することで、複合オブジェクトの全てのフィールドを更新することが可能となる。
【０１３４】
また、新規オブジェクトの追加時に、そのオブジェクトが保持するフィールドそれぞれに対して、複合オブジェクトとしてのフィールド値を更新することも可能となる。
【０１３５】
これにより、複合オブジェクトとしてのフィールドの一貫性を保証することが可能となり、実行時のオブジェクトの追加あるいは削除が可能となる。
【０１３６】
以下では、複合オブジェクトを利用する形態に関して説明する。
【０１３７】
図１５（ａ）は、従来のプログラム実行環境を示している。図１５（ａ）に示すオブジェクトは、既存のオブジェクト指向言語環境を用いて作成された静的なもの（通常オブジェクト）である。
【０１３８】
図１６（ａ）は、本実施形態の複合オブジェクトを利用したプログラムの実行環境を示している。図１６（ａ）に示す複合オブジェクトが本実施形態の複合オブジェクトである。すなわち、ユーザの実行環境は、既存のシステムである図１５の実行環境に対して本実施形態の複合オブジェクトを追加することで、図１６に示す実行環境となる。
【０１３９】
図１６（ｂ）は、図１６（ａ）の実行環境について例示したものである。なお、この場合、図１５（ａ）に対する実行環境は図１５（ｂ）のようになる。
【０１４０】
実行環境は、オペレーティングシステム、プログラム実行機能、オブジェクト起動機構から構成される。また、オブジェクトや複合オブジェクトは、通常は、プログラムのソースとして記述される範囲であり、コンパイラー等により計算機が実行可能なコードに変換される。
【０１４１】
オブジェクト起動機構は、ユーザがオブジェクトあるいは複合オブジェクトを含むプログラムを起動した場合に最初に処理される部分であり、初期オブジェクトの生成や処理系の初期化など言語処理系に依存したプログラム部分である。すなわち、オブジェクトを記述したプログラミング言語のコードを実際にプログラムとして走行させる場合に必要となるプログラム部分である。
【０１４２】
プログラム実行機構とは、ユーザが指定した任意のプログラムをオペレーティングシステムがロードして実行するための機構である。また、共有ライブラリなどの読み込み機構などもこの部分に含まれるものとする。
【０１４３】
なお、一般の計算機環境では、図１６（ｂ）に示す階層を持つ実行環境が想定されるが、組み込み機器等を想定した場合にはプログラム実行機構が存在しない場合も考えられる。しかし、そのような場合にも、本発明を適用した複合オブジェクトは同様に動作可能である。
【０１４４】
さて、従来の技術では、ユーザが既存の異なる機能を持つオブジェクトを複数組み合わせて利用しようとした場合に、次のような手順が必要であった。まず、異なる機能を組み合わせたオブジェクトを新たなプログラムとして構築し、さらに実行中のプログラムを停止し、新たなオブジェクトを含むプログラムを実行する。
【０１４５】
従来技術では、このような手順が必要であるのに対して、本実施形態の複合オブジェクトを用いれば、ユーザは複数の異なるオブジェクトをその実行時に統合することができる。
【０１４６】
本実施形態の複合オブジェクトは、既に説明したように、実行時にオブジェクトを追加あるいは削除することが可能であり、また、追加した場合にもフィールドの一貫性を保つことが可能である。よって、図１６に示されるように、複数の既存オブジェクトを、本実施形態の複合オブジェクトを利用して統合することで、実行時に既存オブジェクトの機能を利用することが可能となる。
【０１４７】
すなわち、ユーザは既存のプログラムを実行しながら、新たな機能を既存のプログラムに追加・削除することができる。
【０１４８】
なお、以上の各機能は、ソフトウェアとしても実現可能である。
【０１４９】
また、本実施形態は、コンピュータに所定の手段を実行させるための（あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための）プログラムを記録したコンピュータ読取り可能な記録媒体としても実施することもできる。
【０１５０】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【０１５１】
【発明の効果】
本発明によれば、複合オブジェクトへのオブジェクトの実行時の追加や削除が可能となる。また、複合オブジェクトへのオブジェクトの追加や削除の処理は、コンパイル時に決定する必要はなく、実行時に追加や削除することが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る複合オブジェクトの構成例を示す図
【図２】図１のオブジェクトの構成例を示す図
【図３】図１の層管理機構の構成例を示す図
【図４】図１のフィールドアクセス機構の構成例を示す図
【図５】図１のメソッドアクセス機構の構成例を示す図
【図６】図１のフィールド統合機構の構成例を示す図
【図７】同実施形態に係る複合オブジェクトに対するフィールド値の取り出しを行う場合の動作手順の一例を示すフローチャート
【図８】同実施形態に係る複合オブジェクトに対するフィールド値の更新を行う場合の動作手順の一例を示すフローチャート
【図９】同実施形態に係る複合オブジェクトに対するメソッド呼び出しを行う場合の動作手順の一例を示すフローチャート
【図１０】同実施形態に係る複合オブジェクトに対するオブジェクトの追加を行う場合の動作手順の一例を示すフローチャート
【図１１】同実施形態に係る複合オブジェクトに対するオブジェクトの削除を行う場合の動作手順の一例を示すフローチャート
【図１２】同実施形態に係る複合オブジェクトに対するフィールド値の統合を行う場合の動作手順の一例を示すフローチャート
【図１３】同実施形態に係る複合オブジェクトの実行時の例を示す図
【図１４】オブジェクトの例を示す図
【図１５】従来技術の実行環境を説明するための図
【図１６】同実施形態に係る複合オブジェクトを利用した実行環境を説明するための図
【符号の説明】
１００…複合オブジェクト
２００…オブジェクト
２０１…フィールド参照機構
２０２…フィールド値取り出し機構
２０３…フィールド値更新機構
２０４…メソッド参照機構
２０５…メソッド呼び出し機構
２１０…メソッド
２１１…メソッド識別子
２２０…フィールド
２２１…フィールド識別子
３００…層管理機能
３０１…オブジェクト参照テーブル
３０２…インデックス
３０３…オブジェクト参照
３０４…オブジェクト参照追加機構
３０５…オブジェクト参照削除機構
４００…フィールドアクセス機構
４０１…フィールド値取り出し部
４０２…フィールド値更新部
４０３…フィールド検出部
４０４，５０３…オブジェクト参照検出部
５００…メソッドアクセス機構
５０１…メソッド呼び出し部
５０２…メソッド検出部
６００…フィールド統合機構
６０１…フィールド保持値更新部
６０２…フィールド値保持部
６０３…オブジェクト参照検出部
【図１】
0003682186.tif 000002
【図２】
0003682186.tif 000003
【図３】
0003682186.tif 000004
【図４】
0003682186.tif 000005
【図５】
0003682186.tif 000006
【図６】
0003682186.tif 000007
【図７】
0003682186.tif 000008
【図８】
0003682186.tif 000009
【図９】
0003682186.tif 000010
【図１０】
0003682186.tif 000011
【図１１】
0003682186.tif 000012
【図１２】
0003682186.tif 000013
【図１３】
0003682186.tif 000014
【図１４】
0003682186.tif 000015
【図１５】
0003682186.tif 000016
【図１６】
0003682186.tif 000017