(57)【要約】【課題】本発明は、オブジェクト指向プログラミングに関し、ソフトウェアの再利用性を高め、かつ実行速度を向上させる。【解決手段】オブジェクトＡのデータ格納領域へのポインタが配列されてなるデータ要素リストと、オブジェクトＢのポインタ格納領域へのポインタが配列されてなるポインタ要素リストを生成し、それらデータ要素リストとポインタ要素リストを結合することにより、オブジェクトＡのデータをオブジェクトＢから直接に参照できるようにする。【選択図】        図１３
2006065879.tif 000002
【特許請求の範囲】
【請求項１】
電子化された画像情報に基づく画像を表示画面上に表示する画像表示装置の該表示画面上に、オブジェクト指向プログラミングにより生成される複数のオブジェクトと、これら複数のオブジェクト間のデータおよび制御の流れを示す配線とを表示するオブジェクト間ネットワーク表示方法において、
前記表示画面が複数の升目に区切られてなる升目１つからなる表示領域内、もしくは隣接する複数の升目が連結されてなる表示領域それぞれに、１つのオブジェクトを表示するオブジェクト表示部分領域と、複数のオブジェクト間を結ぶ配線を表示する配線表示部分領域とを、隣接する２つの表示領域それぞれのオブジェクト表示部分領域どうしの間に配線表示部分領域が形成されるように定め、
前記表示画面上に、複数のオブジェクトそれぞれが、各表示領域内のオブジェクト表示部分領域に１つずつ配置されるとともに、これら複数のオブジェクトどうしを結ぶ配線が、複数の表示領域に跨って連なる配線表示部分領域に表示されてなる第１の画像を表示することを特徴とするオブジェクト間ネットワーク表示方法。
【請求項２】
前記第１の画像を構成する複数のオブジェクトのうちの所定のオブジェクトが、該所定のオブジェクトよりも下層側の複数のオブジェクトとこれら複数のオブジェクト間を結ぶ配線とから成るサブネットワークで構成されるものであって、
前記第１の画像に代えて、該第１の画像内の前記所定のオブジェクトの表示に代わり該所定のオブジェクトのサブネットワークが表示されてなる第２の画像を表示するにあたり、前記第１の画像内の、前記所定のオブジェクトの表示領域よりも拡大された表示領域に該サブネットワークが表示されるとともに、該サブネットワークの表示領域の上下および左右に並ぶ表示領域がそれぞれ左右および上下に拡大された表示領域に変更され、さらに、該サブネットワークの表示領域に対し斜めに位置する表示領域については前記第１の画像と同一の寸法で表示されてなる第２の画像を表示することを特徴とする請求項１記載のオブジェクト間ネットワーク表示方法。
【請求項３】
前記第１の画像を構成する複数のオブジェクトのうちの所定のオブジェクトが、該所定のオブジェクトよりも下層側の複数のオブジェクトとこれら複数のオブジェクト間を結ぶ配線とから成るサブネットワークで構成されるものであって、
前記第１の画像に代えて、該第１の画像内の前記所定のオブジェクトの表示に代わり該所定のオブジェクトのサブネットワークが表示されてなる第２の画像を表示するにあたり、前記第１の画像内の、前記所定のオブジェクトの表示領域よりも拡大された表示領域に該サブネットワークが表示されるとともに、該第２の画像の周縁に位置する表示領域、および該表示領域の、該第２の画像の外周に接する辺の位置および寸法が、前記第１の画像の周縁に位置する表示領域、および該表示領域の、該第１の画像の外周に接する辺の位置および寸法と比べ、同一のオブジェクトが表示された表示領域であり、かつ外周に接する辺の位置および寸法も同一となるように、前記サブネットワークの表示領域を除く表示領域が前記第１の画像上の対応する表示領域と比べ変形してなる第２の画像を表示することを特徴とする請求項１記載のオブジェクト間ネットワーク表示方法。
【請求項４】
前記第１の画像を表示するにあたり、前記表示領域内のオブジェクト表示部分領域の形状および寸法が、該表示領域の形状および寸法に応じた形状および寸法に規格化されてなることを特徴とする請求項１記載のオブジェクト間ネットワーク表示方法。
【請求項５】
前記第１の画像を表示するにあたり、先ず複数のオブジェクトを表示し、次いで、これら複数のオブジェクト間を、データもしくは制御の流れの方向が所定長部分毎に繰り返し表示されてなる配線で連結している状態を表示することを特徴とする請求項１記載のオブジェクト間ネットワーク表示方法。
【請求項６】
前記第１の画像を表示するにあたり、中心線と、該中心線の両脇に沿う、該中心線とは異なる表示態様の縁線とからなる配線であって、相互に交差する配線のうち、同一のデータもしくは制御の流れを表わす配線については中心線どうしが連続し、異なるデータもしくは制御の流れを表わす配線については一方の配線の中心線を他方の配線の縁線に接する位置もしくは近接する位置で分断してなる配線を表示することを特徴とする請求項１記載のオブジェクト間ネットワーク表示方法。
【請求項７】
データと処理とを有するオブジェクト複数を、指示に応じて相互に結合するオブジェクト指向プログラミング支援装置において、
オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されたオブジェクトであって１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されたオブジェクトを表示するとともに、複数のオブジェクトの端子間を結ぶ配線を表示する表示手段と、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、
オブジェクトの階層構造を構築する階層構造構築手段と、
前記オブジェクト結合手段に対しオブジェクト間を結ぶ配線を指示入力するとともに、前記階層構造構築手段に対し、オブジェクトの、階層構造上の配置位置を指示入力する操作子とを備え、
前記階層構造構築手段が、前記操作子からの指示に応じて、指定されたオブジェクトである本体オブジェクトを複写して分身オブジェクトを作成し、該分身オブジェクトを、該本体オブジェクトが配置された階層とは異なる階層に配置する手段を有し、
前記オブジェクト結合手段が、前記分身オブジェクトが配置された階層における配線において、前記操作子からの、前記分身オブジェクトと他オブジェクトとの間の配線の指示を受け付けるとともに、該分身オブジェクトと該分身オブジェクトに対応する本体オブジェクトとを１つのオブジェクトとした結合構造を構築するものであることを特徴とするオブジェクト指向プログラミング支援装置。
【請求項８】
データと処理とを有するオブジェクト複数を、指示に応じて相互に結合するオブジェクト指向プログラミング支援装置において、
オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されたオブジェクトであって１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されたオブジェクトを表示するとともに、複数のオブジェクトの端子間を結ぶ配線を表示する表示手段と、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、
オブジェクトの階層構造を構築する階層構造構築手段と、
前記オブジェクト結合手段に対しオブジェクト間を結ぶ配線を指示入力するとともに、前記階層構造構築手段に対し、オブジェクトの、階層構造上の配置位置を指示入力する操作子とを備え、
前記オブジェクト結合手段が、前記操作子からの、オブジェクトの置き換えの指示に応じて、置き換え前のオブジェクトの、他オブジェクトとの結合構造を解除して、置き換え前のオブジェクトの他オブジェクトとの結合構造を、置き換え後のオブジェクトに継承させるものであり、
前記階層構造構築手段が、前記操作子からの、オブジェクトの置き換えの指示に応じて、置き換え前のオブジェクトが配置されていた階層に、該置き換え前のオブジェクトに代えて、置き換え後のオブジェクトを配置するものであることを特徴とするオブジェクト指向プログラミング支援装置。
【請求項９】
データと処理とを有するオブジェクト複数を、指示に応じて相互に結合するオブジェクト指向プログラミング支援装置において、
オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されたオブジェクトであって１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されたオブジェクトを表示するとともに、複数のオブジェクトの端子間を結ぶ配線を表示する表示手段と、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、
オブジェクトの階層構造を構築する階層構造構築手段と、
前記オブジェクト結合手段に対しオブジェクト間を結ぶ配線を指示入力するとともに、前記階層構造構築手段に対し、オブジェクトの、階層構造上の配置位置を指示入力する操作子とを備え、
前記階層構造構築手段が、前記操作子からの、所定の階層に配置されたオブジェクトの中から複数のオブジェクトを指定して該複数のオブジェクトを一段下の階層に再配置する旨の指示に応じて、該複数のオブジェクト相互間の結合構造、および該複数のオブジェクトと、該複数のオブジェクト以外の他オブジェクトとの間の結合構造が保持されるように、該複数のオブジェクトを該一段下の階層に再配置するとともに該所定の階層に該複数のオブジェクトを内包するオブジェクトを生成して配置するものであることを特徴とするオブジェクト指向プログラミング支援装置。
【請求項１０】
データと処理とを有するオブジェクト複数を、指示に応じて相互に結合するオブジェクト指向プログラミング支援装置において、
オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されたオブジェクトであって１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されたオブジェクトを表示するとともに、複数のオブジェクトの端子間を結ぶ配線を表示する表示手段と、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、
オブジェクトの階層構造を構築する階層構造構築手段と、
前記オブジェクト結合手段に対しオブジェクト間を結ぶ配線を指示入力するとともに、前記階層構造構築手段に対し、オブジェクトの、階層構造上の配置位置を指示入力する操作子とを備え、
前記表示手段が、前記操作子による指示に応じて、指定された１つのメッセージ端子に接続されたメソッド端子が複数存在する場合の、これら複数のメソッド端子に対応する複数のメソッドの実行順序をあらわすリストを表示する手段を有し、
前記オブジェクト結合手段が、前記操作子による指示に応じて、前記表示手段に表示されたリストにあらわれた複数のメソッドの実行順序が変更された結合構造を再構築する手段を有するものであることを特徴とするオブジェクト指向プログラミング支援装置。
【請求項１１】
データと処理とを有するオブジェクト複数を相互に結合するオブジェクト指向プログラミングを支援するプログラムが格納されたオブジェクト指向プログラミング用プログラム記憶媒体において、
前記オブジェクトが、オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されるとともに、１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されるオブジェクトであって、複数のオブジェクトの端子間を配線で結ぶ指示がなされるものであり、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、オブジェクトの階層構造を構築する階層構造構築手段とを含むプログラムであって、
前記階層構造構築手段が、指定されたオブジェクトである本体オブジェクトを複写して分身オブジェクトを作成し、該分身オブジェクトを、該本体オブジェクトが配置された階層とは異なる階層に配置する手段を有し、前記オブジェクト結合手段が、前記分身オブジェクトが配置された階層における配線において、前記分身オブジェクトと他オブジェクトとの間の配線の指示を受け付けるとともに、該分身オブジェクトと該分身オブジェクトに対応する本体オブジェクトとを１つのオブジェクトとした結合構造を構築するものであるプログラムが格納されてなることを特徴とするオブジェクト指向プログラミング用プログラム記憶媒体。
【請求項１２】
データと処理とを有するオブジェクト複数を相互に結合するオブジェクト指向プログラミングを支援するプログラムが格納されたオブジェクト指向プログラミング用プログラム記憶媒体において、
前記オブジェクトが、オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されるとともに、１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されるオブジェクトであって、複数のオブジェクトの端子間を配線で結ぶ指示がなされるものであり、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、オブジェクトの階層構造を構築する階層構造構築手段とを含むプログラムであって、
前記オブジェクト結合手段が、オブジェクトの置き換えの指示に応じて、置き換え前のオブジェクトの、他オブジェクトとの結合構造を解除して、置き換え前のオブジェクトの他オブジェクトとの結合構造を、置き換え後のオブジェクトに継承させるものであり、前記階層構造構築手段が、オブジェクトの置き換えの指示に応じて、置き換え前のオブジェクトが配置されていた階層に、該置き換え前のオブジェクトに代えて、置き換え後のオブジェクトを配置するものであるプログラムが格納されてなることを特徴とするオブジェクト指向プログラミング用プログラム記憶媒体。
【請求項１３】
データと処理とを有するオブジェクト複数を相互に結合するオブジェクト指向プログラミングを支援するプログラムが格納されたオブジェクト指向プログラミング用プログラム記憶媒体において、
前記オブジェクトが、オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されるとともに、１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されるオブジェクトであって、複数のオブジェクトの端子間を配線で結ぶ指示がなされるものであり、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、オブジェクトの階層構造を構築する階層構造構築手段とを含むプログラムであって、
前記階層構造構築手段が、所定の階層に配置されたオブジェクトの中から指定された複数のオブジェクトを一段下の階層に再配置する旨の指示に応じて、該複数のオブジェクト相互間の結合構造、および該複数のオブジェクトと、該複数のオブジェクト以外の他オブジェクトとの間の結合構造が保持されるように、該複数のオブジェクトを該一段下の階層に再配置するとともに該所定の階層に該複数のオブジェクトを内包するオブジェクトを生成して配置するものであるプログラムが格納されてなることを特徴とするオブジェクト指向プログラミング用プログラム記憶媒体。
【請求項１４】
データと処理とを有するオブジェクト複数を相互に結合するオブジェクト指向プログラミングを支援するプログラムが格納されたオブジェクト指向プログラミング用プログラム記憶媒体において、
前記オブジェクトが、オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されるとともに、１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されるオブジェクトであって、複数のオブジェクトの端子間を配線で結ぶ指示がなされるものであり、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、該配線に対応した結合構造を構築するオブジェクト結合手段と、オブジェクトの階層構造を構築する階層構造構築手段とを含むプログラムであって、
前記オブジェクト結合手段が、指定された１つのメッセージ端子に接続されたメソッド端子が複数存在する場合の、これら複数のメソッド端子に対応する複数のメソッドの実行順序をあらわすリストを作成する手段と、該リストにあらわれた複数のメソッドの実行順序の変更指示に応じて該複数のメソッドの実行順序が変更された結合構造を再構築する手段とを有するものであるプログラムが格納されてなることを特徴とするオブジェクト指向プログラミング用プログラム記憶媒体。
【請求項１５】
他オブジェクトで発行されたメッセージにより発火して所定の既存ソフトウェアのイベントを発行するメソッドを含む、該既存ソフトウェアと合わせて１つのオブジェクトとして作用するコンポーネントが格納されてなることを特徴とするコンポーネント記憶媒体。
【請求項１６】
前記コンポーネントが、前記メソッドを含むとともに該メソッドの実行により前記イベントが発行されたことを他オブジェクトに向けて通知するメッセージを含むものであることを特徴とする請求項１５記載のコンポーネント記憶媒体。
【請求項１７】
所定の既存ソフトウェアの所定のイベントの発生を受けて該所定のイベントが発生したことを他オブジェクトに向けて通知するメッセージを含む、該既存ソフトウェアと合わせて１つのオブジェクトとして作用するコンポーネントが格納されてなることを特徴とするコンポーネント記憶媒体。
【請求項１８】
メソッドの作成およびメッセージの作成を選択的に指示入力する第１の操作子と、
所定の既存ソフトウェアの所望のイベントの発行を指示入力する第２の操作子と、
前記既存ソフトウェアと合わせて１つのオブジェクトとして作用するコンポーネントを作成するコンポーネント作成手段であって、前記第１の操作子の操作によりメソッドの作成が指示され次いで前記第２の操作子の操作により前記既存ソフトウェアの所定のイベントが発行された場合に、該コンポーネントに、他オブジェクトで発行されたメッセージにより発火して該所定のイベントを発行するメソッドを作成し、前記第１の操作子によりメッセージの作成が指示され次いで前記第２の操作子により前記既存ソフトウェアの所定のイベントの発行が指示された場合に、該コンポーネントに、該所定のイベントの発生に応答して該所定のイベントが発生したことを他オブジェクトに通知するためのメッセージを作成するコンポーネント作成手段とを備えたことを特徴とするコンポーネント作成装置。
【請求項１９】
他オブジェクトで発行されたメッセージにより発火して所定の既存ソフトウェアのイベントを発行するメソッドと、該メソッドの実行により前記イベントが発行されたことを他オブジェクトに向けて通知するメッセージとを含み該所定の既存ソフトウェアと合わせて１つのオブジェクトとして作用するコンポーネントを、１つもしくは複数の既存ソフトウェアに関して格納するコンポーネントファイルと、
既存ソフトウェアについてイベントの発行を指示入力するための操作子と、
前記操作子の操作に応じて順次発行された、１つもしくは複数の既存ソフトウェアに関するイベントのリストを格納するイベントログファイルと、
該イベントログファイルから順次にイベントを取り出して、前回取り出したイベントと同一のイベントが発行されたことを他オブジェクトに向けて通知するメッセージを含むコンポーネントの該メッセージと、今回取り出したイベントと同一のイベントを発行するメソッドを含むコンポーネントの該メソッドとを結合するコンポーネント結合手段とを備えたことを特徴とするオブジェクト指向プログラミング支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト指向プログラミングを行なうオブジェクト指向プログラミング装置、オブジェクト指向プログラミングを支援するオブジェクト指向プログラミング支援装置、オブジェクトの一部をなすコンポーネントを作成するコンポーネント作成装置、オブジェクト指向プログラムが格納されたオブジェクト指向プログラム記憶媒体、オブジェクト指向プログラミングを支援するプログラムが格納されたオブジェクト指向プログラミング用プログラム記憶媒体、コンポーネントが格納されたコンポーネント記憶媒体、および、オブジェクト指向プログラミングにより生成される複数のオブジェクトについて、データの共有によるデータ結合や、オブジェクト間の制御フローの結合などをオブジェクトのネットワークとして視覚的に表示するオブジェクト間ネットワーク表示方法に関する。
【背景技術】
【０００２】
コンピュータに組み込まれて動作するプログラムを記述するにあたり、従前には、関数名（コマンド）と変数を順番に記述してプログラミングを行なっていた。このようなプログラミング方法の場合、全てをコマンドで記述していく必要があるため、コマンドをいちいちマニュアルで調べたり、あるいは多数のコマンドを覚えている必要がある。このようなコマンドはプログラム言語ごとに異なり、あるプログラム言語のコマンドを多数覚えても、他のプログラム言語で記述しようとするときは、そのプログラム言語のコマンドを覚え直さなければならないという不都合もある。さらには、プログラムのフォーマットもプログラム言語毎に異なっている。これらのことが、プログラムの記述を難かしくしており、プログラムの開発は、素人には中々入りこめない特殊な分野であるかのような印象を与えていた。近年、プログラムがますます大規模化、複雑化してきており、プログラムの開発を容易にし、また、一旦開発したプログラムの再利用を図る必要性がますます高まってきている。
【０００３】
このような背景の中で、近年、オブジェクト指向プログラミングが広く採用されてきている。ここで、オブジェクトとは、「データ」と「そのデータに関する処理」とを併せ持ったデータ構造をいい、オブジェクト指向とは、「データ」と「そのデータに関する処理」、すなわちオブジェクトを単位として取り扱う考え方をいう。このオブジェクト指向プログラミングにおいても、もともとは個々のソフトウェア（オブジェクト）を作成する必要はあるか、個々のオブジェクトを一旦作成した後は、あるオブジェクトから別のオブジェクトを呼び出すという、オブジェクトどうしの接続関係を記述することによりプログラミングが完結することになる。このような考え方を取り入れたオブジェクト指向プログラミングにより、大規模化、複雑化するソフトウェアの使い勝手、作り方、メンテナンスが格段に向上すると期待されている。
【０００４】
オブジェクト指向プログラムにおいては、あるオブジェクトから別のオブジェクトを呼び出す処理は、呼び出す側のオブジェクトから呼び出される側のオブジェクトに向けてメッセージを発行し、呼び出される側のオブジェクトではそのメッセージを受け取ってそのメッセージに対応するメソッド（処理）を実行するという、メッセージ、メソッドという概念が用いられる。メソッドの実行に必要なデータは、従来は、メッセージの引数として与えられている。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
オブジェクト指向プログラミングが目指す目標の１つとして、一度作成したソフトウェア（オブジェクト）を、システムが変更されても再利用できるようにすることにある。これを行なうには、比較的小さく単純なオブジェクトを作成する必要がある。
【０００６】
ところが、従来は、受け取ったメッセージにどのメソッドが対応するかを認識するのに時間がかかったり、メッセージを発行するオブジェクトからメソッドを実行するオブジェクトへのデータの受け渡しに時間がかかり、一般に、オブジェクト指向プログラムは実行速度が遅いと言われている。
【０００７】
この実行速度を向上させるために、従来、１つのオブジェクト内での処理を増やし、他のオブジェクトに向けてメッセージを発行する機会を少なくする手法が採られており、この場合、１つのオブジェクト内での処理が複雑化し、オブジェクトが大型化し、上述の再利用性と相反することとなり、オブジェクト指向プログラミングにおいてソフトウェアの再利用性が進まない原因の１つとなっている。
【０００８】
また、オブジェクト指向プログラミングを推進するにあたって大きな問題となるのは、オブジェクト指向という考えには基づいていない、従来から蓄積されてきた多数のソフトウェアの取扱いである。これまでに提案されているオブジェクト指向プログラミング手法では、既存のソフトウェアの再利用性がきわめて低いという問題もある。
【０００９】
本発明は、上記事情に鑑み、複数のオブジェクトを、それら複数のオブジェクト間で情報が効率的に流れるように相互に結合する機能を備えたオブジェクト指向プログラミング装置、複数のオブジェクトと、それら複数のオブジェクトをそれら複数のオブジェクト間で情報が効率的に流れるように相互に結合するためのオブジェクト結合プログラムとが格納されたオブジェクト指向プログラム記憶媒体、オブジェクトどうしの結合関係を定義するオブジェクト指向プログラミングの容易化が図られたオブジェクト指向プログラミング支援装置、オブジェクト指向プログラミングを容易に行なうためのプログラムが格納されたオブジェクト指向プログラミング用プログラム記憶媒体、既存のソフトウェアをオブジェクトとして取り扱うことができるように、その既存のソフトウェアと合わせて１つのオブジェクトとして作用するコンポーネントを作成する機能を備えたコンポーネント作成装置、そのようなコンポーネントが格納されたコンポーネント記憶媒体、および、オブジェクトどうしの結合関係を定義するオブジェクト結合プログラミングを行なうのに好適な、オブジェクトとオブジェクトどうしの結合関係とからなるオブジェクト間ネットワークの表示方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成する本発明のオブジェクト指向プログラミング装置のうちの第１のオブジェクト指向プログラミング装置は、データと処理とを有するオブジェクト複数を相互に結合するオブジェクト指向プログラミング装置において、
他オブジェクトに向けたメッセージの発行処理を行なう出力インストラクションバス部を持つ第１のオブジェクトと、他オブジェクトで発行された自オブジェクト向けのメッセージを受け付けて、自オブジェクトの、そのメッセージに対応するメソッドを起動する入力インストラクションバス部を持つ第２のオブジェクトとの間で、第１のオブジェクトのメッセージと第２のオブジェクトのメソッドとを対応づけることにより、第１のオブジェクトと第２のオブジェクトとの間でのメッセージの授受を可能ならしめるインストラクション結合手段と、
オブジェクトの、データが格納されるデータ格納領域へのポインタが配列されてなるデータ要素リストを生成するデータ要素リスト生成手段と、
オブジェクトの、データへのポインタが格納されるポインタ格納領域へのポインタが配列されてなるポインタ要素リストを生成するポインタ要素リスト生成手段と、
データ要素リストを持つ第３のオブジェクトとポインタ要素リストを持つ第４のオブジェクトとの間で、第４のオブジェクトのポインタ要素リストに配列されたポインタが指し示すポインタ格納領域に、第３のオブジェクトのデータ要素リストに配列されたポインタを書き込むことにより、第３のオブジェクトと第４のオブジェクトとの間でのデータの授受を可能ならしめるデータ結合手段とを備えたことを特徴とする。
【００１１】
ここで、本発明の第１のオブジェクト指向プログラミング装置において、上記インストラクション結合手段が、自オブジェクトのメッセージに対応する他オブジェクトのメソッドを特定するメソッドＩＤと、そのメソッドＩＤにより特定されるメソッドが実行される他オブジェクトへのポインタとを含むメソッド要素の配列であるメソッド要素リストを生成するものであることが好ましい。
【００１２】
また、上記目的を達成する本発明のオブジェクト指向プログラミング装置のうちの第２のオブジェクト指向プログラミング装置は、データと処理とを有するオブジェクト複数を相互に結合するオブジェクト指向プログラミング装置において、
他オブジェクトに向けたメッセージの発行処理を行なう出力インストラクションバス部を持つ第１のオブジェクトと、他オブジェクトで発行された自オブジェクト向けのメッセージを受け付けて、自オブジェクトの、そのメッセージに対応するメソッドを起動する入力インストラクションバス部を持つ第２のオブジェクトとの間で、第１のオブジェクトのメッセージと第２のオブジェクトのメソッドとを対応づけることにより、第１のオブジェクトと第２のオブジェクトとの間でのメッセージの授受を可能ならしめるインストラクション結合手段と、
自オブジェクトの出力インストラクションバス部に、他オブジェクトそれぞれに対応する、他オブジェクトのメッセージと自オブジェクトのメソッドとの対応をあらわす入力インストラクションタグテーブルを生成する入力インストラクションタグテーブル生成手段とを備えたことを特徴とする。
【００１３】
ここで、本発明の第２のオブジェクト指向プログラミング装置において、
上記インストラクション結合手段が、自オブジェクトのメッセージに対応する他オブジェクトのメソッドを特定するメソッドＩＤと、そのメソッドＩＤにより特定されるメソッドが実行される他オブジェクトへのポインタとを含むメソッド要素の配列であるメソッド要素リストを生成するものであり、
上記入力インストラクションタグテーブル生成手段が、入力インストラクションタグテーブルを生成するとともに、その入力インストラクションタグテーブルを、その入力インストラクションタグテーブルに対応する他オブジェクトへの入インタを含むメソッド要素に追加するものであることが好ましい。
【００１４】
ここで、入力インストラクションタグテーブルをメソッド要素に追加する態様の１つとして、そのメソッド要素には、直接的には、その入力インストラクションタグテーブルへのポインタを書き込んでもよい。
【００１５】
また、上記目的を達成する本発明のオブジェクト指向プログラミング装置のうちの第３のオブジェクト指向プログラミング装置は、データと処理とを有するオブジェクト複数を相互に結合するオブジェクト指向プログラミング装置において、
他オブジェクトに向けたメッセージの発行処理を行なう出力インストラクションバス部を持つ第１のオブジェクトと、他オブジェクトで発行された自オブジェクト向けのメッセージを受け付けて、自オブジェクトの、そのメッセージに対応するメソッドを起動する入力インストラクションバス部を持つ第２のオブジェクトとの間で、第１のオブジェクトのメッセージと第２のオブジェクトのメソッドとを対応づけることにより、第１のオブジェクトと第２のオブジェクトとの間でのメッセージの授受を可能ならしめるインストラクション結合手段と、
自オブジェクトの出力インストラクションバス部に、他オブジェクトそれぞれに対応する、他オブジェクトのメソッドと自オブジェクトのメッセージとの対応をあらわす出力インストラクションタグテーブルを生成する出力インストラクションタグテーブル生成手段とを備えたことを特徴とする。
【００１６】
ここで、本発明の第３のオブジェクト指向プログラミング装置においても、
上記インストラクション結合手段が、自オブジェクトのメッセージに対応する他オブジェクトのメソッドを特定するメソッドＩＤと、そのメソッドＩＤにより特定されるメソッドが実行される他オブジェクトへのポインタとを含むメソッド要素の配列であるメソッド要素リストを生成するものであり、
上記出力インストラクションタグテーブル生成手段が、出力インストラクションタグテーブルを生成するとともに、その出力インストラクションタグテーブルを、その出力インストラクションタグテーブルに対応する他オブジェクトへのポインタを含むメソッド要素に追加するものであることが好ましい。
【００１７】
ここで、出力インストラクションタグテーブルをメソッド要素に追加する態様の１つとして、そのメソッド要素には、直接的には、その出力インストラクションタグテーブルへのポインタを書き込んでもよい。
【００１８】
さらに、上記目的を達成する本発明の第４のオブジェクト指向プログラミング装置は、データと処理とを有するオブジェクト複数を相互に結合するオブジェクト指向プログラミング装置において、
他オブジェクトに向けたメッセージの発行処理を行なう出力インストラクションバス部を持つ第１のオブジェクトと、他オブジェクトで発行された自オブジェクト向けのメッセージを受け付けて、自オブジェクトの、そのメッセージに対応するメソッドを起動する入力インストラクションバス部を持つ第２のオブジェクトとの間で、第１のオブジェクトのメッセージと第２のオブジェクトのメソッドとを対応づけることにより、第１のオブジェクトと第２のオブジェクトとの間でのメッセージの授受を可能ならしめるインストラクション結合手段と、
自オブジェクトの出力インストラクションバス部に、他オブジェクトそれぞれに対応する、他オブジェクトの、データが格納されるデータ格納領域へのポインタが配列されるデータ要素リストを特定するデータ要素リストＩＤと、自オブジェクトの、データへのポインタが格納されるポインタ格納領域へのポインタが配列されるポインタ要素リストを特定するポインタ要素リストＩＤとの対応をあらわす入力データタグテーブルを生成する入力データタグテーブル生成手段とを備えたことを特徴とする。
【００１９】
ここで、上記本発明の第４のオブジェクト指向プログラミング装置において、
上記インストラクション結合手段が、自オブジェクトのメッセージに対応する他オブジェクトのメソッドを特定するメソッドＩＤと、そのメソッドＩＤにより特定されるメソッドが実行される他オブジェクトへのポインタとを含むメソッド要素の配列であるメソッド要素リストを生成するものであり、
上記入力データタグテーブル生成手段が、入力データタグテーブルを生成するとともに、その入力データタグテーブルを、その入力データタグテーブルに対応する他オブジェクトへのポインタを含むメソッド要素に追加するものであることが好ましい。
【００２０】
ここで、入力データタグテーブルをメソッド要素に追加する態様の１つとして、そのメソッド要素には、直接的には、その入力データタグテーブルへのポインタを書き込んでもよい。
【００２１】
さらに、上記目的を達成する本発明の第５のオブジェクト指向プログラミング装置は、データと処理とを有するオブジェクト複数を相互に結合するオブジェクト指向プログラミング装置において、
他オブジェクトに向けたメッセージの発行処理を行なう出力インストラクションバス部を持つ第１のオブジェクトと、他オブジェクトで発行された自オブジェクト向けのメッセージを受け付けて、自オブジェクトの、そのメッセージに対応するメソッドを起動する入力インストラクションバス部を持つ第２のオブジェクトとの間で、第１のオブジェクトのメッセージと第２のオブジェクトのメソッドとを対応づけることにより、第１のオブジェクトと第２のオブジェクトとの間でのメッセージの授受を可能ならしめるインストラクション結合手段と、
自オブジェクトの出力インストラクションバス部に、他オブジェクトそれぞれに対応する、他オブジェクトの、データへのポインタが格納されるポインタ格納領域へのポインタが配列されるポインタ要素リストを特定するポインタ要素リストＩＤと、自オブジェクトの、データが格納されるデータ格納領域へのポインタが配列されるデータ要素リストを特定するデータ要素リストＩＤとの対応をあらわす出力データタグテーブルを生成する出力データタグテーブル生成手段と
を備えたことを特徴とする。
【００２２】
ここで、上記本発明の第５のオブジェクト指向プログラミング装置においても、
上記インストラクション結合手段が、自オブジェクトのメッセージに対応する他オブジェクトのメソッドを特定するメソッドＩＤと、そのメソッドＩＤにより特定されるメソッドが実行される第２のオブジェクトへのポインタとを含むメソッド要素の配列であるメソッド要素リストを生成するものであり、
上記出力データタグテーブル生成手段が、出力データタグテーブルを生成するとともに、その出力データタグテーブルを、その出力データタグテーブルに対応する他オブジェクトへのポインタを含むメソッド要素に追加するものであることが好ましい。  ここで、出力データタグテーブルをメソッド要素に追加する態様の１つとして、そのメソッド要素には、直接的には、その出力データタグテーブルへのポインタを書き込んでもよい。
【００２３】
また、上記目的を達成する本発明のオブジェクト指向プログラム記憶媒体のうちの、第１のオブジェクト指向プログラム記憶媒体は、
データと処理とを有するの複数オブジェクトが格納されてなるとともに、
他オブジェクトに向けたメッセージの発行処理を行なう出力インストラクションバス部を持つ第１のオブジェクトと、他オブジェクトで発行された自オブジェクト向けのメッセージを受け付けて、自オブジェクトの、そのメッセージに対応するメソッドを起動する入力インストラクションバス部を持つ第２のオブジェクトとの間で、第１のオブジェクトのメッセージと第２のオブジェクトのメソッドとを対応づけることにより、第１のオブジェクトと第２のオブジェクトとの間でのメッセージの授受を可能ならしめるインストラクション結合手段と、
オブジェクトの、データが格納されるデータ格納領域へのポインタが配列されてなるデータ要素リストを生成するデータ要素リスト生成手段と、
オブジェクトの、データへのポインタが格納されるポインタ格納領域へのポインタが配列されてなるポインタ要素リストを生成するポインタ要素リスト生成手段と、
データ要素リストを持つ第３のオブジェクトとポインタ要素リストを持つ第４のオブジェクトとの間で、第４のオブジェクトのポインタ要素リストに配列されたポインタが指し示すポインタ格納領域に、第３のオブジェクトのデータ要素リストに配列されたポインタを書き込むことにより、第３のオブジェクトと第４のオブジェクトとの間でのデータの授受を可能ならしめるデータ結合手段とを含むオブジェクト結合プログラムが格納されてなることを特徴とする。
【００２４】
ここで、上記第１のオブジェクト指向プログラム記憶媒体において、
上記インストラクション結合手段が、自オブジェクトのメッセージに対応する他オブジェクトのメソッドを特定するメソッドＩＤと、そのメソッドＩＤにより特定されるメソッドが実行されるオブジェクトへのポインタとを含むメソッド要素の配列であるメソッド要素リストを生成するものであり、
出力インストラクションバス部を持つ第１のオブジェクトが、メッセージ発行するにあたり、そのメッセージに対応するメソッド要素リストに配列されたメソッド要素を参照して、そのメソッド要素にポインタが格納されてなる第２のオブジェクトを、そのメソッド要素に格納されてなるメソッドＩＤを引数として呼び出すものであることが好ましい。
【００２５】
その場合に、上記第２のオブジェクトでは、第１のオブジェクトから第２のオブジェクトに向けたメッセージが受け付けられ、そのメッセージの引数であるメソッドＩＤにより特定されるメソッドが実行される。
【００２６】
また、上記目的を達成する本発明のオブジェクト指向プログラム記憶媒体のうちの第２のオブジェクト指向プログラム記憶媒体は、
データと処理とを有する複数のオブジェクトが格納されてなるとともに、
他オブジェクトに向けたメッセージの発行処理を行なう出力インストラクションバス部を持つ第１のオブジェクトと、他オブジェクトで発行された自オブジェクト向けのメッセージを受け付けて、自オブジェクトの、そのメッセージに対応するメソッドを起動する入力インストラクションバス部を持つ第２のオブジェクトとの間で、第１のオブジェクトのメッセージと第２のオブジェクトのメソッドとを対応づけることにより、第１のオブジェクトと第２のオブジェクトとの間でのメッセージの授受を可能ならしめるインストラクション結合手段と、
自オブジェクトの出力インストラクションバス部に、他オブジェクトそれぞれに対応する、他オブジェクトのメッセージと自オブジェクトのメソッドとの対応をあらわす入力インストラクションタグテーブルを生成する入力インストラクションタグテーブル生成手段とを含むオブジェクト結合プログラムが格納されてなることを特徴とする。
【００２７】
ここで、上記第２のオブジェクト指向プログラム記憶媒体において、
上記インストラクション結合手段が、自オブジェクトのメッセージに対応する他オブジェクトのメソッドを特定するメソッドＩＤと、そのメソッドＩＤにより特定されるメソッドが実行される他オブジェクトへのポインタとを含むメソッド要素の配列であるメソッド要素リストを生成するものであり、
上記入力インストラクションタグテーブル生成手段が、入力インストラクションタグテーブルを生成するとともに、その入力インストラクションタグテーブルを、その入力インストラクションタグテーブルに対応する他オブジェクトへのポインタを含むメソッド要素に追加するものであることが好ましい。
【００２８】
ここで、入力インストラクションタグテーブルをメソッド要素に追加する態様の１つとして、そのメソッド要素には、直接的には、その入力インストラクションタグテーブルへのポインタを書き込んでもよい。
【００２９】
入力インストラクションタグテーブルが追加されてなるメソッド要素を持つ第１のオブジェクトは、そのメソッド要素により特定される第２のオブジェクトを呼び出すにあたり、そのメソッド要素に格納されたメソッドＩＤと入力インストラクションタグテーブルとを引数として第２のオブジェクトを呼び出すものであってもよい。
【００３０】
ここで、入力インストラクションタグテーブルを引数として第２のオブジェクトを呼び出す態様の１つとして、直接的には、その入力インストラクションタグテーブルへのポインタを引数として第２のオブジェクトを呼び出してもよい。
【００３１】
このようにして、第１のオブジェクトから第２のオブジェクトに向けてメッセージが発行されると、第２のオブジェクトでは、第１のオブジェクトから第２のオブジェクトに向けたメッセージを受け付け、そのメッセージの引数であるメソッドＩＤにより特定されるメソッドが実行される。
【００３２】
ここで、第２のオブジェクトは、上記のようにして第１のオブジェクトから第２のオブジェクトに向けてメッセージが発行された際、第１のオブジェクトから第２のオブジェクトに向けたメッセージを受け付け、そのメッセージの引数である入力インストラクションタグテーブルを参照し、第２のオブジェクトのメッセージに対応する第１のオブジェクトのメソッドを実行するものであってもよい。
【００３３】
あるいは、第２のオブジェクトが、上記のようにして第１のオブジェクトから第２のオブジェクトに向けてメッセージが発行された際に、第１のオブジェクトから第２のオブジェクトに向けたメッセージを受け付け、そのメッセージの引数である入力インストラクションタグテーブルを参照し、第２のオブジェクトのメッセージに対応する第２のオブジェクトのメソッド要素リストに、その第２のオブジェクトのメッセージに対応づけられた第１のオブジェクトのメソッドに関するメソッド要素を追加するものであることも好ましい形態である。
【００３４】
さらには、第２のオブジェクトが、第３のオブジェクトを生成する手段と、を有し、上記のようにして第１のオブジェクトから第２のオブジェクトに向けてメッセージが発行された際に、第１のオブジェクトから第２のオブジェクトに向けたメッセージを受け付け、そのメッセージの引数である入力インストラクションタグテーブルを参照し、生成した第３のオブジェクトのメッセージに対応する、その第３のオブジェクトのメソッド要素リストに、その第３のオブジェクトのメッセージに対応づけられた第１のオブジェクトのメソッドに関するメソッド要素を追加するものであることも好ましい形態である。
【００３５】
ここで、第２のオブジェクトが第３のオブジェクトを生成するタイミングは、本発明においては特に限定されるものではなく、上記メッセージが発行された際に第３のオブジェクトを生成してもよく、あるいは、前もって生成しておいてもよい。
【００３６】
また、本発明のオブジェクト指向プログラム記憶媒体のうちの第３のオブジェクト指向プログラム記憶媒体は、
データと処理とを有する複数のオブジェクト、が格納されてなるとともに、
他オブジェクトに向けたメッセージの発行処理を行なう出力インストラクションバス部を持つ第１のオブジェクトと、他オブジェクトで発行された自オブジェクト向けのメッセージを受け付けて、自オブジェクトの、そのメッセージに対応するメソッドを起動する入力インストラクションバス部を持つ第２のオブジェクトとの間で、第１のオブジェクトのメッセージと第２のオブジェクトのメソッドとを対応づけることにより、第１のオブジェクトと第２のオブジェクトの間でのメッセージの授受を可能ならしめるインストラクション結合手段と、
自オブジェクトの出力インストラクションバス部に、他オブジェクトそれぞれに対応する、他オブジェクトのメソッドと自オブジェクトのメッセージとの対応をあらわす出力インストラクションタグテーブルを生成する出力インストラクションタグテーブル生成手段とを含むオブジェクト結合プログラムが格納されてなることを特徴とする。
【００３７】
ここで、上記第３のオブジェクト指向プログラム記憶媒体において、
上記インストラクション結合手段が、自オブジェクトのメッセージに対応する他オブジェクトのメソッドを特定するメソッドＩＤと、そのメソッドＩＤにより特定されるメソッドが実行される他オブジェクトへのポインタとを含むメソッド要素の配列であるメソッド要素リストを生成するものであり、
上記出力インストラクションタグテーブル生成手段が、出力インストラクションタグテーブルを生成するとともに、その出力インストラクションタグテーブルを、その出力インストラクションタグテーブルに対応する他オブジェクトへのポインタを含むメソッド要素に追加するものであることが好ましい。
【００３８】
ここで、出力インストラクションタグテーブルをメソッド要素に追加する態様の１つとして、そのメソッド要素には、直接的には、その出力インストラクションタグテーブルへのポインタを書き込んでもよい。
【００３９】
出力インストラクションタグテーブルが追加されてなるメソッド要素を持つ第１のオブジェクトは、そのメソッド要素により特定される第２のオブジェクトを呼び出すにあたり、メソッド要素に格納されたメソッドＩＤと出力インストラクションタグテーブルとを引数として第２のオブジェクトを呼び出すものであってもよい。
【００４０】
ここで、出力インストラクションタグテーブルを引数として第２のオブジェクトを呼び出す態様の１つとして、直接的には、その出力インストラクションタグテーブルへのポインタを引数として第２のオブジェクトを呼び出してもよい。
【００４１】
このようにして、第１のオブジェクトから第２のオブジェクトに向けてメッセージが発行されると、第２のオブジェクトでは、第１のオブジェクトから第２のオブジェクトに向けたメッセージを受け付け、そのメッセージの引数であるメソッドＩＤにより特定されるメソッドが実行される。
【００４２】
ここで、第２のオブジェクトは、上記のようにして第１のオブジェクトから第２のオブジェクトに向けてメッセージが発行された際、第１のオブジェクトから第２のオブジェクトに向けたメッセージを受け付け、そのメッセージの引数である出力インストラクションタグテーブルを参照し、第１のオブジェクトのメッセージに対応する第１のオブジェクトのメソッド要素リストに、その第１のオブジェクトのメッセージに対応づけられた第２のオブジェクトのメソッドに関するメソッド要素を追加するものであってもよい。
【００４３】
あるいは、第２のオブジェクトが、第３のオブジェクトを生成する手段と、を有し、上記のようにして第１のオブジェクトから第２のオブジェクトに向けてメッセージが発行された際に、第１のオブジェクトから第２のオブジェクトに向けたメッセージを受け付け、そのメッセージの引数である出力インストラクションタグテーブルを参照し、第１のオブジェクトのメッセージに対応する第１のオブジェクトのメソッド要素リストに、その第１のオブジェクトのメッセージに対応づけられた第３のオブジェクトのメソッドに関するメソッドを追加するものであることも好ましい形態である。
【００４４】
ここで、この第３のオブジェクト指向プログラム記憶媒体においても、前述した第２のオブジェクト指向プログラム記憶媒体の場合と同様、第２のオブジェクトが第３のオブジェクトを生成するタイミングは特に限定されるものではなく、上記メッセージが発行された際に第３のオブジェクトを生成してもよく、あるいは前もって生成しておいてもよい。
【００４５】
また、本発明のオブジェクト指向プログラム記憶媒体のうちの第４のオブジェクト指向プログラム記憶媒体は、
データと処理とを有する複数のオブジェクト、が格納されてなるとともに、
他オブジェクトに向けたメッセージの発行処理を行なう出力インストラクションバス部を持つ第１のオブジェクトと、他オブジェクトで発行された自オブジェクト向けのメッセージを受け付けて、自オブジェクトの、そのメッセージに対応するメソッドを起動する入力インストラクションバス部を持つ第２のオブジェクトとの間で、第１のオブジェクトのメッセージと第２のオブジェクトのメソッドとを対応づけることにより、第１のオブジェクトと第２のオブジェクトとの間でのメッセージの授受を可能ならしめるインストラクション結合手段と、
自オブジェクトの出力インストラクションバス部に、他オブジェクトそれぞれに対応する、他オブジェクトの、データが格納されるデータ格納領域へのポインタが配列されるデータ要素リストを特定するデータ要素リストＩＤと、自オブジェクトの、データへのポインタが格納されるポインタ格納領域へのポインタが配列されるポインタ要素リストを特定するポインタ要素リストＩＤとの対応をあらわす入力データタグテーブルを生成する入力データタグテーブル生成手段と、を含むオブジェクト結合プログラムとが格納されてなることを特徴とする。
【００４６】
ここで、上記本発明の第４のオブジェクト指向プログラム記憶媒体において、
上記インストラクション結合手段が、自オブジェクトのメッセージに対応する他オブジェクトのメソッドを特定するメソッドＩＤと、そのメソッドＩＤにより特定されるメソッドが実行される他オブジェクトへのポインタとを含むメソッド要素の配列であるメソッド要素リストを生成するものであり、
上記入力データタグテーブル生成手段が、入力データタグテーブルを生成するとともに、その入力データタグテーブルを、その入力データタグテーブルに対応する他オブジェクトへのポインタを含むメソッド要素に追加するものであることが好ましい。
【００４７】
ここで、入力データタグテーブルをメソッド要素に追加する態様の１つとして、そのメソッド要素には、直接的には、その入力データタグテーブルへのポインタを書き込んでもよい。
【００４８】
入力データタグテーブルが追加されてなるメソッド要素を持つ第１のオブジェクトは、そのメソッド要素により特定される第２のオブジェクトを呼び出すにあたり、そのメソッド要素に格納されたメソッドＩＤと入力データタグテーブルとを引数として第２のオブジェクトを呼び出すものであってもよい。
【００４９】
ここで、入力データタグテーブルを引数として第２のオブジェクトを呼び出す態様の１つとして、直接的には、その入力データタグテーブルへのポインタを引数として第２のオブジェクトを呼び出してもよい。
【００５０】
このようにして第１のオブジェクトから第２のオブジェクトに向けてメッセージが発行されると、第２のオブジェクトでは、第１のオブジェクトから第２のオブジェクトに向けたメッセージを受け付け、そのメッセージの引数であるメソッドＩＤにより特定されるメソッドが実行される。
【００５１】
ここで、第２のオブジェクトは、上記のようにして第１のオブジェクトから第２のオブジェクトに向けてメッセージが発行された際、第１のオブジェクトから第２のオブジェクトに向けたメッセージを受け付け、そのメッセージの引数である入力データタグテーブルを参照し第１のオブジェクトのポインタ要素リストＩＤを取得して、第１のオブジェクトの、そのポインタ要素リストＩＤにより特定されるポインタ要素リストを生成するとともに、第２のオブジェクトの、そのポインタ要素リストＩＤに対応するデータ要素リストＩＤにより特定されるデータ要素リストを生成し、第１のオブジェクトのポインタ要素リストに配列されたポインタが指し示すポインタ格納領域に、第２のオブジェクトのデータ要素リストに配列されたポインタを書き込むものであってもよい。
【００５２】
あるいは、第２のオブジェクトが、第３のオブジェクトを生成する手段と、を有し、上記のようにして第１のオブジェクトから第２のオブジェクトに向けてメッセージが発行された際に、第１のオブジェクトから第２のオブジェクトに向けたメッセージを受け付け、そのメッセージの引数である入力データタグテーブルを参照し第１のオブジェクトのポインタ要素リストＩＤを取得して、第１のオブジェクトの、そのポインタ要素リストＩＤにより特定されるポインタ要素リストを生成するとともに、第３のオブジェクトの、そのポインタ要素リストＩＤに対応するデータ要素リストＩＤにより特定されるデータ要素リストを生成し、第１のオブジェクトのポインタ要素リストに配列されたポインタが指し示すポインタ格納領域に、第３のオブジェクトのデータ要素リストに配列されたポインタを書き込むものであることも好ましい形態である。
【００５３】
この第４のオブジェクト指向プログラム記憶媒体においても、第２のオブジェクトが第３のオブジェクトを生成するタイミングは特に限定されるものではなく、上記メッセージが発行された際に第３のオブジェクトを生成してもよく、あるいは前もって生成しておいてもよい。
【００５４】
さらに、本発明のオブジェクト指向プログラム記憶媒体のうちの第５のオブジェクト指向プログラム記憶媒体は、
データと処理とを有する複数のオブジェクトが格納されてなるとともに、
他オブジェクトに向けたメッセージの発行処理を行なう出力インストラクションバス部を持つ第１のオブジェクトと、他オブジェクトで発行された自オブジェクト向けのメッセージを受け付けて、自オブジェクトの、そのメッセージに対応するメソッドを起動する入力インストラクションバス部を持つ第２のオブジェクトとの間で、第１のオブジェクトのメッセージと第２のオブジェクトのメソッドとを対応づけることにより、第１のオブジェクトと第２のオブジェクトとの間でのメッセージの授受を可能ならしめるインストラクション結合手段と、
自オブジェクトの出力インストラクションバス部に、他オブジェクトそれぞれに対応する、他オブジェクトの、データへのポインタが格納されるポインタ格納領域へのポインタが配列されるポインタ要素リストを特定するポインタ要素リストＩＤと、自オブジェクトの、データが格納されるデータ格納領域へのポインタが配列されるデータ要素リストを特定するデータ要素リストＩＤとの対応をあらわす出力データタグテーブルを生成する出力データタグテーブル生成手段と、を含むオブジェクト結合プログラムとが格納されてなることを特徴とする。
【００５５】
ここで、上記本発明の第５のオブジェクト指向プログラム記憶媒体において、  上記インストラクション結合手段が、自オブジェクトのメッセージに対応する他オブジェクトのメソッドを特定するメソッドＩＤと、そのメソッドＩＤにより特定されるメソッドが実行される他オブジェクトへのポインタとを含むメソッド要素の配列であるメソッド要素リストを生成するものであり、
上記出力データタグテーブル生成手段が、出力データタグテーブルを生成するとともに、その出力データタグテーブルを、その出力データタグテーブルに対応する他オブジェクトへのポインタを含むメソッド要素に追加するものであることが好ましい。
【００５６】
ここで、出力データタグテーブルをメソッド要素に追加する態様の１つとして、そのメソッド要素には、直接的には、その出力データタグテーブルへのポインタを書き込んでもよい。
【００５７】
出力データタグテーブルが追加されてなるメソッド要素を持つ第１のオブジェクトは、そのメソッド要素により特定される第２のオブジェクトを呼び出すにあたり、そのメソッド要素に格納されたメソッドＩＤと出力データタグテーブルとを引数として第２のオブジェクトを呼び出すものであってもよい。
【００５８】
ここで、出力データタグテーブルを引数として第２のオブジェクトを呼び出す態様の１つとして、直接的には、その出力データタグテーブルへのポインタを引数として第２のオブジェクトを呼び出してもよい。
【００５９】
このようにして第１のオブジェクトから第２のオブジェクトに向けてメッセージが発行されると、第２のオブジェクトでは、第１のオブジェクトから第２のオブジェクトに向けたメッセージを受け付け、そのメッセージの引数であるメソッドＩＤに対応するメソッドが実行される。
【００６０】
ここで、第２のオブジェクトは、上記のようにして第１のオブジェクトから第２のオブジェクトに向けてメッセージが発行された際、第１のオブジェクトから第２のオブジェクトに向けたメッセージを受け付け、そのメッセージの引数である出力データタグテーブルを参照し第１のオブジェクトのデータ要素リストＩＤを取得して、第１のオブジェクトの、そのデータ要素リストＩＤにより特定されるデータ要素リストを生成するとともに、第２のオブジェクトの、そのデータ要素リストＩＤに対応するポインタ要素リストＩＤにより特定されるポインタ要素リストを生成し、第２のオブジェクトのポインタ要素リストに配列されたポインタが指し示すポインタ格納領域に、第１のオブジェクトのデータ要素リストに配列されたポインタを書き込むものであってもよい。
【００６１】
あるいは、第２のオブジェクトが、第３のオブジェクトを生成する手段を有し、上記のようにして第１のオブジェクトから第２のオブジェクトに向けてメッセージが発行された際に、第１のオブジェクトから第２のオブジェクトに向けたメッセージを受け付け、メッセージの引数である出力データタグテーブルを参照し第１のオブジェクトのデータ要素リストＩＤを取得して、第１のオブジェクトの、そのデータ要素リストＩＤにより特定されるデータ要素リストを生成するとともに、第３のオブジェクトの、そのデータ要素リストＩＤに対応するポインタ要素リストＩＤにより特定されるポインタ要素を生成し、第３のオブジェクトのポインタ要素リストに配列されたポインタが指し示すポインタ格納領域に、第１のオブジェクトのデータ要素リストに配列されたポインタを書き込むものであることも好ましい形態である。
【００６２】
この第５のオブジェクト指向プログラム記憶媒体においても、第２のオブジェクトが第３のオブジェクトを生成するタイミングは特に限定されるものではなく、上記メッセージが発行された際に第３のオブジェクトを生成してもよく、あるいは前もって生成しておいてもよい。
【００６３】
また、上記目的を達成する本発明のオブジェクト間ネットワーク表示方法は、電子化された画像情報に基づく画像を表示画面上に表示する画像表示装置の表示画面上に、オブジェクト指向プログラミングにより生成される複数のオブジェクトと、これら複数のオブジェクト間のデータおよび制御の流れを示す配線とを表示するオブジェクト間ネットワーク表示方法において、
上記表示画面が複数の升目に区切られてなる升目１つからなる表示領域内、もしくは隣接する複数の升目が連結されてなる表示領域それぞれに、１つのオブジェクトを表示するオブジェクト表示部分領域と、複数のオブジェクト間を結ぶ配線を表示する配線表示部分領域とを、隣接する２つの表示領域それぞれのオブジェクト表示部分領域どうしの間に配線表示部分領域が形成されるように定め、
上記表示画面上に、複数のオブジェクトそれぞれが、各表示領域内のオブジェクト表示部分領域に１つずつ配置されるとともに、これら複数のオブジェクトどうしを結ぶ配線が、複数の表示領域に跨って連なる配線表示部分領域に表示されてなる第１の画像を表示することを特徴とする。
【００６４】
本発明のオブジェクト間ネットワーク表示方法によれば、整然と並んだオブジェクトの配置が得られ、しかもオブジェクトを表示する領域と配線を表示する領域を分けたためオブジェクトと配線が重なることのない見やすい表示を得ることができる。
【００６５】
ここで、上記本発明のオブジェクト間ネットワーク表示方法において、上記第１の画像を構成する複数のオブジェクトのうちの所定のオブジェクトが、その所定のオブジェクトよりも下層側の複数のオブジェクトとそれら複数のオブジェクト間を結ぶ配線とから成るサブネットワークで構成されるものであって、
上記第１の画像に代えて、その第１の画像内の上記所定のオブジェクトの表示に代わりその所定のオブジェクトのサブネットワークが表示されてなる第２の画像を表示するにあたり、上記第１の画像内の、上記所定のオブジェクトの表示領域よりも拡大された表示領域にサブネットワークが表示されるとともに、そのサブネットワークの表示領域の上下および左右に並ぶ表示領域がそれぞれ左右および上下に拡大された表示領域に変更され、さらに、サブネットワークの表示領域に対し斜めに位置する表示領域については第１の画像と同一の寸法で表示されてなる第２の画像を表示するものであることが好ましい。
【００６６】
このような表示方法を採用することによって、サブネットワークと、そのサブネットワークの周囲のネットワークとの接続状態を容易に確認することが可能となる。
【００６７】
あるいは、上記本発明のオブジェクト間ネットワーク表示方法において、上記第１の画像を構成する複数のオブジェクトのうちの所定のオブジェクトが、その所定のオブジェクトよりも下層側の複数のオブジェクトとこれら複数のオブジェクト間を結ぶ配線とから成るサブネットワークで構成されるものであって、
上記第１の画像に代えて、その第１の画像内の上記所定のオブジェクトの表示に代わりその所定のオブジェクトのサブネットワークが表示されてなる第２の画像を表示するにあたり、上記第１の画像内の、上記所定のオブジェクトの表示領域よりも拡大された表示領域にサブネットワークが表示されるとともに、その第２の画像の周縁に位置する表示領域、およびその表示領域の、第２の画像の外周に接する辺の位置および寸法が、上記第１の画像の周縁に位置する表示領域、およびその表示領域の、第１の画像の外周に接する辺の位置および寸法と比べ、同一のオブジェクトが表示された表示領域であり、かつ外周に接する辺の位置および寸法も同一となるように、サブネットワークの表示領域を除く表示領域が第１の画像上の対応する表示領域と比べ変形してなる第２の画像を表示するものであってもよい。
【００６８】
この表示方法を採用することによって、サブネットワークとその周囲のオブジェクトのネットワークとの接続状態を容易に確認することができる。この表示方法の場合さらに、変形してはいるものの、サブネットワークを表示した状態で、サブネットワーク表示前（第１の画像）に表示されていたネットワーク全体を確認することができる。
【００６９】
また、本発明のオブジェクト間ネットワーク表示方法において、上記第１の画像を表示するにあたり、表示領域内のオブジェクト表示部分領域の形状および寸法が、その表示領域の形状および寸法に応じた形状および寸法に規格化されてなることが好ましい。
【００７０】
このような規格化により、一層見やすい表示画面となる。
【００７１】
さらに、本発明のオブジェクト間ネットワーク表示方法において、上記第１の画像を表示するにあたり、先ず複数のオブジェクトを表示し、次いで、これら複数のオブジェクト間を、データもしくは制御の流れの方向が所定長部分毎に繰り返し表示されてなる配線で連結している状態を表示することが好ましい。
【００７２】
このような配線を採用すると、オブジェクトが表示画面の外にはみ出している場合であっても、その配線のどちら側に入力または出力が存在するかを容易に判断することが可能となる。尚、配線終了後はこのような配線に代えて、通常の配線、例えば線の終端または両端のみに矢印をつけた配線に変更してもよい。
【００７３】
さらに、本発明のオブジェクト間ネットワーク表示方法において、上記第１の画像を表示するにあたり、中心線と、その中心線の両脇に沿う、中心線とは異なる表示態様の縁線とからなる配線であって、相互に交差する配線のうち、同一のデータもしくは制御の流れを表わす配線については中心線どうしが連続し、異なるデータもしくは制御の流れを表わす配線については一方の配線の中心線を他方の配線の縁線に接する位置で分断してなる配線を表示することも好ましい形態である。
【００７４】
このような配線を採用することにより、交差する配線が相互に接続されているのかあるいは単に交差しているだけなのかを容易に判断することができる。
【００７５】
このような配線を採用すると、オブジェクトが表示画面の外にはみ出している場合であっても、その配線のどちら側に入力または出力が存在するかを容易に判断することが可能となる。尚、配線終了後はこのような配線に代えて、通常の配線、例えば線の終端または両端のみに矢印をつけた配線に変更してもよい。
【００７６】
さらに、本発明のオブジェクト間ネットワーク表示方法において、上記第１の画像を表示するにあたり、中心線と、その中心線の両脇に沿う、中心線とは異なる表示態様の縁線とからなる配線であって、相互に交差する配線のうち、同一のデータもしくは制御の流れを表わす配線については中心線どうしが連続し、異なるデータもしくは制御の流れを表わす配線については一方の配線の中心線を他方の配線の縁線に接する位置で分断してなる配線を表示することも好ましい形態である。
【００７７】
このような配線を採用することにより、交差する配線が相互に接続されているのかあるいは単に交差しているだけなのかを容易に判断することができる。
【００７８】
また、上記目的を達成する本発明のオブジェクト指向プログラミング支援装置のうちの第１のオブジェクト指向プログラミング支援装置は、データと処理とを有するオブジェクト複数を、指示に応じて相互に結合するオブジェクト指向プログラミング支援装置において、
オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されたオブジェクトであって１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されたオブジェクトを表示するとともに、複数のオブジェクトの端子間を結ぶ配線を表示する表示手段と、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、
オブジェクトの階層構造を構築する階層構造構築手段と、
オブジェクト結合手段に対しオブジェクト間を結ぶ配線を指示入力するとともに、階層構造構築手段に対し、オブジェクトの、階層構造上の配置位置を指示入力する操作子とを備え、
上記階層構造構築手段が、操作子からの指示に応じて、指定されたオブジェクトである本体オブジェクトを複写して分身オブジェクトを作成し、その分身オブジェクトを、その本体オブジェクトが配置された階層とは異なる階層に配置する手段を有し、
上記オブジェクト結合手段が、分身オブジェクトが配置された階層における配線において、操作子からの、分身オブジェクトと他オブジェクトとの間の配線の指示を受け付けるとともに、その分身オブジェクトとその分身オブジェクトに対応する本体オブジェクトとを１つのオブジェクトとした結合構造を構築するものであることを特徴とする。
【００７９】
このような分身オブジェクトを作成し、結合構造を構築するにあたって分身オブジェクトとその本体オブジェクトとを１つのオブジェクトとした結合構造を構築することにより、１つのオブジェクトを所望の複数の階層に自由に配置して配線（結合の指示）を行なうことができ、異なる階層どうしのオブジェクト間の配線が容易になり、視覚的にも見やすい表示が可能となる。
【００８０】
また、上記目的を達成する本発明のオブジェクト指向プログラミング支援装置のうちの第２のオブジェクト指向プログラミング支援装置は、データと処理とを有するオブジェクト複数を、指示に応じて相互に結合するオブジェクト指向プログラミング支援装置において、
オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されたオブジェクトであって１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されたオブジェクトを表示するとともに、複数のオブジェクトの端子間を結ぶ配線を表示する表示手段と、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、
オブジェクトの階層構造を構築する階層構造構築手段と、
オブジェクト結合手段に対しオブジェクト間を結ぶ配線を指示入力するとともに、前記階層構造構築手段に対し、オブジェクトの、階層構造上の配置位置を指示入力する操作子とを備え、
上記オブジェクト結合手段が、操作子からの、オブジェクトの置き換えの指示に応じて、置き換え前のオブジェクトの、他オブジェクトとの結合構造を解除して、置き換え前のオブジェクトの他オブジェクトとの結合構造を、置き換え後のオブジェクトに継承させるものであり、
上記階層構造構築手段が、操作子からの、オブジェクトの置き換えの指示に応じて、置き換え前のオブジェクトが配置されていた階層に、置き換え前のオブジェクトに代えて、置き換え後のオブジェクトを配置するものであることを特徴とする。
【００８１】
オブジェクトを置き換えるには、通常であれば、先ず置き換え前のオブジェクトの配線を外し、置き換え後のオブジェクトに対しあらためて配線を行なうことになるが、置き換え前のオブジェクトの配線（結合関係）を置き換え後のオブジェクトにそのまま踏襲させることにより、置き換え後のオブジェクトと他オブジェクトの間の配線の手間が省け、オブジェクトの置き換えが極めて容易となり、その分オブジェクト指向プログラミングが容易化される。
【００８２】
さらに、上記目的を達成する本発明の第３のオブジェクト指向プログラミング支援装置は、データと処理とを有するオブジェクト複数を、指示に応じて相互に結合するオブジェクト指向プログラミング支援装置において、
オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されたオブジェクトであって１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されたオブジェクトを表示するとともに、複数のオブジェクトの端子間を結ぶ配線を表示する表示手段と、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、
オブジェクトの階層構造を構築する階層構造構築手段と、
オブジェクト結合手段に対しオブジェクト間を結ぶ配線を指示入力するとともに、階層構造構築手段に対し、オブジェクトの、階層構造上の配置位置を指示入力する操作子とを備え、
上記階層構造構築手段が、操作子からの、所定の階層に配置されたオブジェクトの中から複数のオブジェクトを指定してそれら複数のオブジェクトを一段下の階層に再配置する旨の指示に応じて、それら複数のオブジェクト相互間の結合構造、およびそれら複数のオブジェクトと、それら複数のオブジェクト以外の他オブジェクトとの間の結合構造が保持されるように、それら複数のオブジェクトをそれら一段下の階層に再配置するとともに上記所定の階層にそれら複数のオブジェクトを内包するオブジェクトを生成して配置するものであることを特徴とする。
【００８３】
上記のように、複数のオブジェクトを、配線（結合関係）を保ったまま別の階層に配置替えすることができるようにするとプログラムを作成しながら作成したプログラムを整理することができ、また階層化された部分が１つのオブジェクトとして作用するため、そのオブジェクトを１つのプログラム部品と再利用することができる。
【００８４】
さらに、本発明の第４のオブジェクト指向プログラミング支援装置は、データと処理とを有するオブジェクト複数を、指示に応じて相互に結合するオブジェクト指向プログラミング支援装置において、
オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されたオブジェクトであって１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されたオブジェクトを表示するとともに、複数のオブジェクトの端子間を結ぶ配線を表示する表示手段と、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、
オブジェクトの階層構造を構築する階層構造構築手段と、
オブジェクト結合手段に対しオブジェクト間を結ぶ配線を指示入力するとともに、階層構造構築手段に対し、オブジェクトの、階層構造上の配置位置を指示入力する操作子とを備え、
上記表示手段が、操作子による指示に応じて、指定された１つのメッセージ端子に接続されたメソッド端子が複数存在する場合の、これら複数のメソッド端子に対応する複数のメソッドの実行順序をあらわすリストを表示する手段を有し、  上記オブジェクト結合手段が、操作子による指示に応じて、表示手段に表示されたリストにあらわれた複数のメソッドの実行順序が変更された結合構造を再構築する手段を有するものであることを特徴とする。
【００８５】
本発明の第４のオブジェクト指向プログラミング支援装置によれば、１つのメッセージに対する複数のメソッドの実行順序を容易にかつ正確に知ることができ、またその実行順序を容易に変更することができる。
【００８６】
尚、本発明のオブジェクト指向プログラミング支援装置には、第５のオブジェクト指向プログラミング支援装置も存在するが、この第５のオブジェクト指向プログラミング支援装置については後述する。
【００８７】
また、上記目的を達成する本発明のオブジェクト指向プログラミング用プログラム記憶媒体のうちの第１のオブジェクト指向プログラミング用プログラム記憶媒体は、データと処理とを有するオブジェクト複数を相互に結合するオブジェクト指向プログラミングを支援するプログラムが格納されたオブジェクト指向プログラミング用プログラム記憶媒体において、
上記オブジェクトが、オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されるとともに、１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されるオブジェクトであって、複数のオブジェクトの端子間を配線で結ぶ指示がなされるものであり、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、オブジェクトの階層構造を構築する階層構造構築手段とを含むプログラムであって、
上記階層構造構築手段が、指定されたオブジェクトである本体オブジェクトを複写して分身オブジェクトを作成し、その分身オブジェクトを、その本体オブジェクトが配置された階層とは異なる階層に配置する手段を有し、上記オブジェクト結合手段が、分身オブジェクトが配置された階層における配線において、その分身オブジェクトと他のオブジェクトとの間の配線の指示を受け付けるとともに、その分身オブジェクトとその分身オブジェクトに対応する本体オブジェクトとを１つのオブジェクトとした結合構造を構築するものであるプログラムが格納されてなることを特徴とする。
【００８８】
また、上記目的を達成する本発明のオブジェクト指向プログラミング用プログラム記憶媒体のうちの第２のオブジェクト指向プログラミング用プログラム記憶媒体は、データと処理とを有するオブジェクト複数を相互に結合するオブジェクト指向プログラミングを支援するプログラムが格納されたオブジェクト指向プログラミング用プログラム記憶媒体において、
上記オブジェクトが、オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されるとともに、１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されるオブジェクトであって、複数のオブジェクトの端子間を配線で結ぶ指示がなされるものであり、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、オブジェクトの階層構造を構築する階層構造構築手段とを含むプログラムであって、
上記オブジェクト結合手段が、オブジェクトの置き換えの指示に応じて、置き換え前のオブジェクトの、他オブジェクトとの結合構造を解除して、置き換え前のオブジェクトの他オブジェクトとの結合構造を、置き換え後のオブジェクトに継承させるものであり、上記階層構造構築手段が、オブジェクトの置き換えの指示に応じて、置き換え前のオブジェクトが配置されていた階層に、置き換え前のオブジェクトに代えて、置き換え後のオブジェクトを配置するものであるプログラムが格納されてなることを特徴とする。
【００８９】
さらに、本発明のオブジェクト指向プログラミング用プログラム記憶媒体のうちの第３のオブジェクト指向プログラミング用のプログラム記憶媒体は、データと処理とを有するオブジェクト複数を相互に結合するオブジェクト指向プログラミングを支援するプログラムが格納されたオブジェクト指向プログラミング用プログラム記憶媒体において、
上記オブジェクトが、オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されるとともに、１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されるオブジェクトであって、複数のオブジェクトの端子間を配線で結ぶ指示がなされるものであり、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築するオブジェクト結合手段と、オブジェクトの階層構造を構築する階層構造構築手段とを含むプログラムであって、
上記階層構造構築手段が、所定の階層に配置されたオブジェクトの中から指定された複数のオブジェクトを一段下の階層に再配置する旨の指示に応じて、それら複数のオブジェクト相互間の結合構造、およびそれら複数のオブジェクトと、それら複数のオブジェクト以外の他オブジェクトとの間の結合構造が保持されるように、その複数のオブジェクトを一段下の階層に再配置するとともにそれら所定の階層にそれら複数のオブジェクトを内包するオブジェクトを生成して配置するものであるプログラムが格納されてなることを特徴とする。
【００９０】
さらに、本発明のオブジェクト指向プログラミング用プログラム記憶媒体のうちの第４のオブジェクト指向プログラミング用のプログラム記憶媒体は、データと処理とを有するオブジェクト複数を相互に結合するオブジェクト指向プログラミングを支援するプログラムが格納されたオブジェクト指向プログラミング用プログラム記憶媒体において、
上記オブジェクトが、オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されるとともに、１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されるオブジェクトであって、複数のオブジェクトの端子間を配線で結ぶ指示がなされるものであり、
複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、該配線に対応した結合構造を構築するオブジェクト結合手段と、オブジェクトの階層構造を構築する階層構造構築手段とを含むプログラムであって、
上記オブジェクト結合手段が、指定された１つのメッセージ端子に接続されたメソッド端子が複数存在する場合の、これら複数のメソッド端子に対応する複数のメソッドの実行順序をあらわすリストを作成する手段と、そのリストにあらわれた複数のメソッドの実行順序の変更指示に応じてそれら複数のメソッドの実行順序が変更された結合構造を再構築する手段とを有するものであるプログラムが格納されてなることを特徴とする。
【００９１】
また、本発明のコンポーネント記憶媒体のうちの第１のコンポーネント記憶媒体は、他オブジェクトで発行されたメッセージにより発火して所定の既存ソフトウェアのイベントを発行するメソッドを含む、該既存ソフトウェアと合わせて１つのオブジェクトとして作用するコンポーネントが格納されてなることを特徴とする。
【００９２】
このようなコンポーネントにより、既存ソフトウェアがいわば‘包み込まれる’形となり、既存ソフトウェアの仕組みによらず、また、この既存ソフトウェアを改変することなく、既存ソフトウェアをオブジェクトとして取り込むことができ、既存ソフトウェアの再利用性が格段に向上する。
【００９３】
ここで、上記コンポーネントが、上記メソッドを含むとともにそのメソッドの実行により上記イベントが発行されたことを他オブジェクトに向けて通知するメッセージを含むものであることが好ましい。
【００９４】
この場合、メソッドとメッセージとの間の接続による連鎖的な処理が可能となる。
【００９５】
また、本発明のコンポーネント記憶媒体のうちの第２のコンポーネント記憶媒体は、所定の既存ソフトウェアの所定のイベントの発生を受けてそのイベントが発生したことを他オブジェクトに向けて通知するメッセージを含む、その既存ソフトウェアと合わせて１つのオブジェクトとして作用するコンポーネントが格納されてなることを特徴とする。
【００９６】
このようなコンポーネントにより、既存ソフトウェアを‘包み込む’ことにより、既存ソフトウェアに対するイベントが発生したのを受けて他オブジェクトのメソッドを連動して実行させるなどといった拡張機能を、既存ソフトウェア自体の拡張性に依存せずに実現することができる。
【００９７】
また、本発明のコンポーネント作成装置は、
メソッドの作成およびメッセージの作成を選択的に指示入力する第１の操作子と、
所定の既存ソフトウェアの所望のイベントの発行を指示入力する第２の操作子と、
既存ソフトウェアと合わせて１つのオブジェクトとして作用するコンポーネントを作成するコンポーネント作成手段であって、第１の操作子の操作によりメソッドの作成が指示され次いで第２の操作子の操作により既存ソフトウェアの所定のイベントが発行された場合に、そのコンポーネントに、他オブジェクトで発行されたメッセージにより発火してそのイベントを発行するメソッドを作成し、第１の操作子によりメッセージの作成が指示され次いで第２の操作子により既存ソフトウェアの所定のイベントの発行が指示された場合に、そのコンポーネントに、そのイベントの発生に応答してそのイベントが発生したことを他オブジェクトに通知するためのメッセージを作成するコンポーネント作成手段とを備えたことを特徴とする。
【００９８】
このようなコンポーネント作成装置を用いることによって、上述の第１のコンポーネント記憶媒体や第２のコンポーネント記憶媒体に格納されるコンポーネントを、プログラミングについての深い知識を要求することなく、対話的に容易に作成することができる。
【００９９】
また、本発明のオブジェクト指向プログラミング支援装置のうちの第５のオブジェクト指向プログラミング支援装置は、
他オブジェクトで発行されたメッセージにより発火して所定の既存ソフトウェアのイベントを発行するメソッドと、そのメソッドの実行により上記イベントが発行されたことを他オブジェクトに向けて通知するメッセージとを含みその既存ソフトウェアと合わせて１つのオブジェクトとして作用するコンポーネントを、１つもしくは複数の既存ソフトウェアに関して格納するコンポーネントファイルと、
既存ソフトウェアについてイベントの発行を指示入力するための操作子と、
その操作子の操作に応じて順次発行された、１つもしくは複数の既存ソフトウェアに関するイベントのリストを格納するイベントログファイルと、
イベントログファイルから順次にイベントを取り出して、前回取り出したイベントと同一のイベントが発行されたことを他オブジェクトに向けて通知するメッセージを含むコンポーネントのメッセージと、今回取り出したイベントと同一のイベントを発行するメソッドを含むコンポーネントのメソッドとを結合するコンポーネント結合手段とを備えたことを特徴とする。
【０１００】
本発明の第５のオブジェクト指向プログラミング支援装置によれば、１つもしくは複数の既存ソフトウェアの複数のイベントの発行を実際に動作させたい順に順次指示することにより、既存ソフトウェアをコンポーネントで包み込んだオブジェクト間のメッセージとメソッドとが結合され、プログラミングについての深い知識を要求することなく、既存アプリケーションの複数のイベントの自動操作が可能となる。
【発明の効果】
【０１０１】
以上説明したように、本発明によれば、ソフトウェアの再利用性が格段に高められ、かつ実行速度の速いソフトウェアを実現することができる。
【発明を実施するための最良の形態】
【０１０２】
以下、本発明の実施形態について説明する。
【０１０３】
ここでは、本発明の実施形態を総合したオブジェクトウェアプログラミングシステムの概要について先ず説明し、その後個々の実施形態の説明に移る。
【０１０４】
図１は、本発明のオブジェクト指向プログラミング装置、オブジェクト指向プログラミング支援装置、コンポーネント作成装置、オブジェクト指向プログラム記憶媒体、オブジェクト指向プログラミング用プログラム記憶媒体、コンポーネント記憶媒体、およびオブジェクト間ネットワーク表示方法の各実施形態を包含するコンピュータシステムの外観図である。
【０１０５】
図１に示すコンピュータシステム１００は、ＣＰＵやＭＯ（光磁気ディスク）ドライブ装置等が内蔵された本体部１０１、本体部１０１からの指示により、表示画面１０２ａ上に画像を表示する画像表示部１０２、このコンピュータシステム１００に種々の情報を入力するためのキーボード１０３、画像表示部１０２の表示画面１０２ａ上の任意の位置を指定するマウス１０４、以下において説明するオブジェクトやオブジェクト結合プログラム等を格納しておく記憶部１０５が備えられている。
【０１０６】
プログラムの開発は、この図１に示すコンピュータシステムでも行なうことができ、また、他の同種のコンピュータシステムを用いて開発されたものを可搬型記憶媒体であるＭＯ（光磁気ディスク）１１０に格納し、そのＭＯ１１０をこの図１に示すコンピュータシステム１００に装填して、このコンピュータシステム１００に入力することもできる。またそれと同様に、この図１に示すコンピュータシステム１００を用いて開発したプログラムを、ＭＯ１１０を介して他のコンピュータシステムに移すこともできる。
【０１０７】
図２は、図１に示すコンピュータシステム内に実現されたオブジェクトウェアプログラミングシステムの概要図である。
【０１０８】
このオブジェクトウェアプログラミングシステム１２０は、オブジェクトや、既存ソフトウェアを‘包み込む’コンポーネントを作成するオブジェクトビルダ部１２１、オブジェクト間の配線（結合関係）を表示し、編集するオブジェクト間配線エディタ部１２２、および、オブジェクトビルダ部１２１で作成されたオブジェクト（既存ソフトウェアとコンポーネントとの組合せからなるオブジェクトを含む）を、オブジェクト間配線エディタ部１２２で定義されたオブジェクト間の配線（接続関係）のとおりに接続して実行するインタプリンタ部１２３から構成されている。
【０１０９】
オブジェクトビルダ部１２１では、図１に示すコンピュータシステム１００のキーボード１０３やマウス１０４の操作によりオブジェクトを最初から作成することもできるが、このオブジェクトウェアプログラミングシステム１２０には、このオブジェクトウェアプログラミングシステム１２０とは全く独立に、かつ、各種の異なるプログラム言語で開発された既存の各種のアプリケーションプログラム（以下、アプリケーションプログラムをアプリケーションと略記することがある）が格納された既存アプリケーションファイル１３１が備えられており、このオブジェクトビルダ１２１では、この既存アプリケーションファイル１３１に格納された既存アプリケーションを‘包み込み’、その既存アプリケーションと合わせて１つのオブジェクトとして作用するコンポーネントを作成することもできる。ここでは、特に断らない限り、このコンポーネントとそのコンポーネントにより‘包み込まれた’既存アプリケーションとを合わせたオブジェクトを含めて、オブジェクトと表現する。
【０１１０】
オブジェクトビルダ部１２１で作成されたオブジェクトは、オブジェクトデータファイル１３２と実行型オブジェクトファイル１３３に格納される。オブジェクトデータファイル１３２には、オブジェクトビルダ部１２１で作成されたオブジェクトをあらわす情報のうち、以下において説明するオブジェクト間配線エディタ部１２２における、オブジェクトの表示およびオブジェクト間の配線（結合関係の定義）に必要な情報が抽出されて格納される。一方、実行型オブジェクトファイル１３３には、オブジェクトビルダ部１２１で作成されたオブジェクトがコンパイラにより実行形式に変換され、その実行形式に変換されたオブジェクトが格納される。
【０１１１】
オブジェクト間配線エディタ部１２２は、オブジェクトデータファイル１３２に格納されたオブジェクトの情報を受け取って図１に示す画像表示部１０２の表示画面１０２ａにそのオブジェクトを模式的に表示し、キーボード１０３やマウス１０４の操作に応じてオブジェクト間の結合状態を定義する。ここでは、後述するように、表示画面１０２ａ上に、ハードウェアとしてのＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）の表示形式に近い表示形式で表示し、それら複数のＬＳＩの端子どうしを信号線で配線するような感覚でオブジェクト間の結合状態の定義が行なわれる。このため、以下では、オブジェクトのことを「ＬＳＩ」と称し、オブジェクト間の結合状態を定義することを「配線」と称する場合がある。
【０１１２】
オブジェクト間配線エディタ部１２２でオブジェクト間の配線を行なう際は、配線の途中結果をセーブしておき、またその途中結果をロードして表示することなどの目的で、オブジェクト間配線データファイル１３４が使用される。このオブジェクト間配線データファイル１３４には、マン・マシンインターフェイスとして都合の良い配線情報が格納される。例えばこのシステムでは、配線を行なうユーザの配線の理解の容易のためにオブジェクトが階層構造化されるが、オブジェクト間配線データファイル１３４には、そのような階層構造に関するデータも格納される。
【０１１３】
このようにして、オブジェクト間配線エディタ部１２２で配線が完了すると、オブジェクト間の結合状態をあらわす情報（以下、これを「配線データ」と称することがある）は、インタプリンタ用配線データファイル１３５に格納される。配線データをインタプリンタ用配線データファイル１３５に格納するにあたっては、例えばオブジェクトの階層構造の情報など、単にユーザの理解のための情報は捨象され、オブジェクト（ソフトウェア）を実際に動作させるにあたって必要となる配線データのみが抽出されてインタプリンタ用配線データファイル１３５に格納される。
【０１１４】
インタプリンタ部１２３では、実行型オブジェクトファイル１３３に格納された実行形式のオブジェクトがインタプリンタ用配線データファイル１３５に格納された配線データのとおりに結合されて実行される。
【０１１５】
以下、各実施形態について説明するが、説明の都合上および理解の容易のために、図２に示すオブジェクトウェアシステム１２０全体の中の位置付けからすると、先ずインタプリンタ部１２３およびその周辺部に関連した実施形態について説明し、次いでオブジェクト間配線エディタ部１２２およびその周辺部に関連して実施形態について説明し、最後にオブジェクトビルダ部１２１およびその周辺部に関連した実施形態について説明する。
【０１１６】
以下、先ず、インタプリンタ部１２３およびその周辺部に関連した実施形態について説明する。
【０１１７】
図３は、図１に示すコンピュータシステム内に実現されたソフトウェアシステムの第１例を示す模式図である。ここでは、この図３を参照して本発明の第１のオブジェクト指向プログラミング装置および本発明の第１のオブジェクト指向プログラム記憶媒体の一実施形態の全体構成について概括し、その後、図４以降の図を参照してその内容について詳細に説明する。
【０１１８】
この図３に示すソフトウェアシステムと本発明との対応関係は以下のとおりである。すなわち、この図３に示すソフトウェアシステムが記憶された状態の記憶部１０５（図１参照）が本発明の第１のオブジェクト指向プログラム記憶媒体の一実施形態に相当し、図１に示すコンピュータシステム１００のハードウェアと、そのコンピュータシステム１００内で動作可能な状態にあるオブジェクト結合部１０の組合せが、本発明の第１のオブジェクト指向プログラミング装置に相当する。尚、この図３に示すソフトウェアシステムがＭＯ１１０にダウンロードされたときは、この図３に示すソフトウェアシステムを格納した状態にあるＭＯ１１０も、本発明の第１のオブジェクト指向プログラム記憶媒体の一例に相当する。
【０１１９】
ここでは、代表的に、それぞれがデータと処理（メソッド）とからなる２つのオブジェクトＡ，Ｂを考える。
【０１２０】
オブジェクト結合部１０を構成する出力インストラクションバス部生成部１１は、オブジェクト（ここでは代表的にオブジェクトＡとする）の、他オブジェクト（ここでは代表的にオブジェクトＢとする）に対するメッセージの発行処理を行なう出力インストラクションバス部の核となる部分を生成する。
【０１２１】
また、オブジェクト結合部１０を構成する入力インストラクションバス部生成部１２は、オブジェクト（ここでは代表的にオブジェクトＢとする）の入力インストラクションバス部を生成する。入力インストラクションバス部は、他オブジェクト（ここでは代表的にオブジェクトＡとする）で発行された自オブジェクト（ここではオブジェクトＢ）向けのメッセージを受け付けて、自オブジェクト（オブジェクトＢ）の、その受け付けたメッセージに対応するメソッドを起動する部分である。
【０１２２】
尚、本実施形態では、オブジェクト結合部１０に出力インストラクションバス部生成部１１および入力インストラクションバス部生成部１２が備えられているが、オブジェクトＡ，Ｂが、出力インストラクションバス部ないし入力インストラクションバス部に相当する構造をもともともっているものであってもよく、オブジェクト結合部１０には、必ずしも出力インストラクションバス部生成部１１および入力インストラクションバス部生成部１２は備えられていなくてもよい。
【０１２３】
オブジェクト結合部１０を構成するインストラクション結合部１３は、オブジェクト相互間（ここでは、代表的にオブジェクトＡ，Ｂ間）で、オブジェクトＡのメッセージとオブジェクトＢのメソッドとを対応づける経路１３ａを生成することにより、オブジェクトＡとオブジェクトＢとの間でのメッセージの授受を可能ならしめる。
【０１２４】
オブジェクト結合部１０を構成するデータ要素リスト生成部１４は、オブジェクト（ここでは代表的にオブジェクトＡとする）の、データが格納されるデータ格納領域へのポインタが配列されてなるデータ要素リストを生成する。
【０１２５】
また、これと同様に、オブジェクト結合部１０を構成するポインタ要素リスト生成部１５は、オブジェクト（ここでは代表的にオブジェクトＢとする）の、データへのポインタが格納されるポインタ格納領域へのポインタが配列されてなるポインタ要素リストを生成する。
【０１２６】
オブジェクト結合部１０を構成するデータ結合部１６は、オブジェクトＡ，Ｂ間で、ポインタ要素リスト生成部１５により生成されたオブジェクトＢのポインタ要素リストに配列されたポインタが指し示すポインタ格納領域に、データ要素リスト生成部１４により生成されたオブジェクトＡのデータ要素リストに配列されたポインタを書き込むことにより、オブジェクトＡ，Ｂ間でのデータの授受の経路１６ａを生成し、それらのオブジェクトＡ，Ｂ間でのデータの授受を可能ならしめる。
【０１２７】
図４は、図３に示すオブジェクトＡの出力インストラクションバス部とオブジェクトＢの入力インストラクションバス部のデータ構造の一例を示す模式図である。
【０１２８】
オブジェクトＡには、オブジェクトＡのメッセージの最大数ＭＡA MAX の配列からなるメッセージテーブルが備えられており、このメッセージテーブルには、各メッセージのメッセージ番号ＭＡA（ここではメッセージ番号をＭＡであらわし、オブジェクトＡのメッセージのメッセージ番号であることを添字Ａであらわす）に対応して、以下に説明するメソッド要素リストへのポインタが格納されている。
【０１２９】
メソッド要素リストは、１つもしくは複数のメソッド要素の配列からなり、各メソッド要素は、メソッドを特定するメソッド番号ＭＥと、そのメソッド番号ＭＥにより特定されるメソッドが実行されるオブジェクトへのポインタと、次のメソッド要素へのポインタとにより構成されている。ここでは、メソッド番号をＭＥであらわし、そのメソッド番号ＭＥにより特定されるメソッドが実行されるオブジェクトを添字であらわす。すなわち、図４に示す、最上段のメソッド要素には、オブジェクトＢのメソッドのメソッド番号ＭＥBと、オブジェクトＢへのポインタが格納されている。
【０１３０】
最後段のメソッド要素の、次のメソッド要素へのポインタの欄には、自分が最後段であって自分の後ろに並ぶメソッド要素がないことをあらわす情報（ここではこの情報を‘ヌル’と称する）が格納されている。
【０１３１】
このメソッド要素リストは、最も多くは、オブジェクトＡのメッセージの数に対応した数だけ生成され、各メソッド要素リストは、オブジェクトＡの各メッセージに対応しており、そのメッセージを発行する際に対応するメソッド要素リストが参照される。
【０１３２】
尚１つのメッセージに対し１つのメソッド要素リストが対応しているが、１つのメソッド要素リストに配列されたメソッド要素は、ある１つのオブジェクト（例えばオブジェクトＢ）に関するメソッド要素のみとは限らず、１つのメソッド要素リストには、複数のオブジェクトの複数のメソッドに関するメソッド要素が配列され得る。
【０１３３】
また、ここでは、オブジェクトＡの出力インストラクションバス部の構造について説明しているが、出力インストラクションバス部は、他のオブジェクトに対しメッセージを発行するオブジェクトそれぞれが持っている。
【０１３４】
オブジェクトＢには、オブジェクトＢのメソッドＭＥBの最大数ＭＥB MAXの配列からなるメソッドテーブルが備えられており、このメソッドテーブルには、各メソッドのメソッド番号ＭＥBに対応して、そのメソッド番号ＭＥBで特定されるメソッドへのポインタが格納されている。
【０１３５】
尚、ここでは、オブジェクトＢの入力インストラクションバス部の構造について説明しているが、入力インストラクションバス部は、出力インストラクションバス部と同様に、他のオブジェクトで発行されたメッセージを受け付けて、そのメッセージに対応するメソッドを実行するオブジェクトそれぞれが持っている。また１つのオブジェクトが出力インストラクションバス部と入力インストラクションバス部との双方を持つことも多々あり得ることである。
【０１３６】
図５は、メッセージの発行処理を示すフローチャートである。
【０１３７】
オブジェクトＡで実行中のある処理においてメッセージを発行しようとしたとき、メッセージテーブルが参照され、その発行しようとしているメッセージのメッセージ番号ＭＡAから、そのメッセージ番号ＭＡAに対応するメソッド要素リストへのポインタが取得され（ステップ５＿１）、そのポインタにより指示されたメソッド要素リストに配列された各メソッド要素がそれぞれ参照される。例えば図４の最上段のメソッド要素が参照されると、そのメソッド要素に格納されたポインタにより指示されるオブジェクトＢが、そのメソッド要素に格納されたメソッド番号ＭＥBを引数として呼び出される（ステップ５＿２）。このようなメッセージ発行処理が、１つのメッセージの発行に対し、１つのメソッド要素リストに並ぶ各メソッド要素に関して行なわれる（ステップ５＿３，５＿４）。
【０１３８】
メソッド番号ＭＥBを引数として呼び出されたオブジェクトＢでは、その引数であるメソッド番号ＭＥBを取得し（ステップ５＿５）、メソッドテーブルを参照して、その取得したメソッド番号ＭＥBにより特定されるメソッドへのポインタを取得し、そのポインタにより指示されるメソッドの処理が行なわれる（ステップ５＿５）。
【０１３９】
図６は、図３に示すオブジェクト結合部１０の出力インストラクションバス部生成部１１の処理を示すフローチャートである。
【０１４０】
ここでは、図４に示すＭＡA MAX幅のメッセージテーブルの枠が生成される（ステップ６＿１）。
【０１４１】
尚、本実施形態では、オブジェクトＡがメッセージを発行する際、メッセージテーブルを介してメソッド要素リストのポインタを知るように構成されているが、例えば、オブジェクトＡの処理（メソッド）内に直接にメソッド要素へのポインタが書き込まれていてもよく、その場合メッセージテーブルは不要である。すなわち、本発明においては、図６に示す処理、すなわち、図３に示す出力インストラクションバス部生成部１１は必ずしも必要ではない。
【０１４２】
図７は、図３に示すオブジェクト結合部１０の入力インストラクションバス部生成部１２の処理を示すフローチャートである。
【０１４３】
ここでは、図４に示す、ＭＥB MAX幅のメソッドテーブルの枠が生成され（ステップ７＿１）、その枠内の各メソッド番号ＭＥBの欄に、各メソッド番号ＭＥBに対応するメソッドへのポインタが格納される（ステップ７＿２）。
【０１４４】
尚、本実施形態では、メソッドテーブルを介してメソッドへのポインタを認識するように構成しているが、メソッド番号ＭＥBとメソッドへのポインタとをメソッドテーブルの形式で対応づける必要はかならずしも必要ではなく、したがって図７に示す処理、すなわち図３に示す入力インストラクションバス部生成部１２は必ずしも必要ではない。
【０１４５】
図８は、図３に示すオブジェクト結合部１０におけるインストラクション結合部１３の処理を示すフローチャートである。ここでも、オブジェクトＢを他オブジェクトの代表としている。
【０１４６】
ここでは、メソッド要素が生成されるが、このメソッド要素の生成にあたっては、図１に示すコンピュータシステムを操作する操作者によりメッセージとメソッドとの対応関係が指定される。この対応関係は、
（ａ）オブジェクトＡのポインタ
（ｂ）オブジェクトＢのポインタ
（ｃ）オブジェクトＡのメッセージ番号ＭＡA
（ｄ）オブジェクトＢのメソッド番号ＭＥB                              の指定により定められる。尚、上記（ａ）〜（ｄ）は直接的なアドレスや番号を操作者が指定するのではなく、そのオブジェクトの名前やそのオブジェクトでの処理（例えば表計算プログラム、表計算結果を画面に表示せよ）といった指定を、例えば表示画面１０２ａ（図１参照）に表示されたアイコンを、マウス１０４を操作してクリックすること等によりその指定が行なわれる。さらに詳細には、後述するように、オブジェクトをＬＳＩの形式で表示しており、マウス１０４を用いてＬＳＩの端子どうしを配線する操作を行なうことによりその指定が行なわれる。
【０１４７】
ここに示す図８の処理では、先ずメソッド要素の枠が生成され（ステップ８＿１）。そのメソッド要素の枠内に、メソッド番号ＭＥBとオブジェクトＢへのポインタが格納され（ステップ８＿２）、対応するメッセージ番号ＭＡAのメソッド要素リストに追加される（ステップ８＿３）。すなわち、そのメソッド要素リストに並ぶ最終段のメソッド要素の、次のメソッド要素へのポインタの欄に、追加されるメソッド要素へのポインタが格納され、追加されるメソッド要素の、次のメソッド要素へのポインタの欄に‘ヌル’が格納される。必要に応じてこの図８に示す処理が繰り返され、メソッド要素リストが生成される。
【０１４８】
尚、そのメソッド要素リストには未だ１つもメソッド要素が並んでいないときは、本実施形態では、メッセージテーブルの、対応するメッセージ番号ＭＡAの欄に、登録しようとするメソッド要素へのポインタが格納される。
【０１４９】
本実施形態では、このようにメソッド要素リストを作成することにより、オブジェクトＡのメッセージとオブジェクトＢのメソッドとを対応づけているため、メッセージとメソッドとの対応関係が解りやすく、メッセージに対応したメソッドを直ちに認識することができ、高速処理が可能となる。
【０１５０】
図９は、図３に示すオブジェクトＡのデータ要素リストのデータ構造の一例を示す模式図である。
【０１５１】
オブジェクトＡの内部には、オブジェクトＢに受け渡す必要のある多数（ここではｎ個）のデータが存在し、図３に示すオブジェクト結合部１０のデータ要素リスト生成部１４により、図９に示すデータ要素リストが生成される。
【０１５２】
このデータ要素リストは、データの数ｎに対応した数のデータ要素の配列であり、各データ要素は、データが格納されるデータ格納領域へのポインタと、次のデータ要素へのポインタとにより構成されている。最終段のデータ要素の、次のデータ要素へのポインタの欄には‘ヌル’が書き込まれている。尚、図９において、例えばデータ格納領域１に対応するポインタをポインタ１と表記せずにポインタ１＿１と表記したのは、後述するポインタとの区別のためである。
【０１５３】
図９における‘ＯＵＴA ’は、データ要素リスト番号を示している。データ要素リストは、データを受け渡す相手先の数などに応じて多数生成される可能性があり、ここでは、各データ要素リストはデータ要素リスト番号ＯＵＴA（添字ＡはオブジェクトＡをあらわす）で互いに識別されている。
【０１５４】
図１０は、図３に示すオブジェクト結合部１０のデータ要素リスト生成部１４の処理を示すフローチャートである。
【０１５５】
データ要素リストを生成するには、先ずデータ要素の枠が生成され（ステップ１０＿１）、その枠にデータ格納領域へのポインタが代入され（ステップ１０＿２）、データ要素リストに追加される（１０＿３）。データ要素リストに追加するにあたっては、そのデータ要素リストの最終段に既に並んでるデータ要素の、次のデータ要素へのポインタを格納する欄に、追加しようとするデータ要素リストへのポインタを格納され、追加しようとするデータ要素リストの、次のデータ要素へのポインタが格納する欄に‘ヌル’が格納される。
【０１５６】
図１０に示す処理が必要に応じて複数回繰り返されることにより、データ要素リストが生成される。
【０１５７】
図１１は、図３に示すオブジェクトＢのポインタ要素リストのデータ構造の一例を示す模式図である。
【０１５８】
オブジェクトＢの内部には、オブジェクトＡからデータを受け取る必要のある部分が多数（ここではｎ個）存在し、各部分には、ポインタ格納領域が確保されている。各ポインタ格納領域１〜ｎには、データ要素とポインタ要素とが結合される前の現段階では、それぞれ勝手な、データへのポインタ１＿３，２＿３，…，ｎ＿３が格納されている。ここでは、図３に示すオブジェクト結合部１０のポインタ要素リスト生成部１５により、図１１に示すポインタ要素リストが生成される。
【０１５９】
このポインタ要素リストは、ポインタ格納領域の数ｎに対応した数のポインタ要素の配列であり、各ポインタ要素は、対応するポインタ格納領域へのポインタと、次のポインタ要素へのポインタとにより構成されている。この図１１では、例えばポインタ格納領域１へのポインタをポインタ１と表記せずにポインタ１＿２と表記しており、さらにそのポインタ格納領域１に格納されている勝手なポインタをポインタ１＿３と表記している。これは、図９に示すデータ要素に格納されたポインタを含めポインタを相互に区別するためである。
【０１６０】
ポインタ要素リストも、データ要素リストの場合と同様に、データを受け取る相手の数などに応じて多数生成される可能性があり、ここでは各ポインタ要素リストはポインタ要素リスト番号ＩＮB （添字ＢはオブジェクトＢをあらわす）で互いに識別されている。
【０１６１】
図１２は、図３に示すオブジェクト結合部１０のポインタ要素リスト生成部１５の処理を示すフローチャートである。図１０に示すデータ要素リスト生成部１４の処理とほぼ同様であり、簡単に説明するにとどめる。
【０１６２】
先ずポインタ要素の枠を生成し（ステップ１２＿１）、その枠内に、対応するポインタ格納領域へのポインタを格納し（ステップ１２＿２）、ポインタ要素リストに追加する（ステップ１２＿３）。この処理を必要に応じて複数回繰り返すことによりポインタ要素リストが生成される。
【０１６３】
図１３は、図３に示すオブジェクト結合部１０のデータ結合部１６の処理が実行された後の構造を示す模式図である。
【０１６４】
ここでは、オブジェクトＢのポインタ格納領域１〜ｎに、図９に示すデータ要素リストに配列されたデータ要素に格納されていたポインタ１＿１〜ｎ＿１が格納されており、オブジェクトＡのデータをオブジェクトＢから直接参照できる構造となっている。
【０１６５】
図１４は、図３に示すオブジェクト結合部１０のデータ結合部１６の処理を示すフローチャートである。
【０１６６】
先ず、図９に示すデータ要素リストの先頭に並ぶデータ要素に格納されたポインタ１＿１が作業領域Ｐに格納され（ステップ１４＿１）、これと同様に、図１１に示すポインタ要素リストの先頭に並ぶポインタ要素に格納されたポインタ１＿２が作業領域Ｐに格納される（ステップ１４＿２）。
【０１６７】
次に、Ｄが空か否か、すなわち、図９に示すデータ要素リストに並ぶ最終段のデータ要素まで、ステップ１４＿５において説明する対応付けが終了しているか否かが判定され（ステップ１４＿３）、Ｄが空のときは、この図１４に示す処理を終了する。
【０１６８】
これと同様に、Ｐが空か否か、すなわち、図１１に示すポインタ要素リストに並ぶ、最終段のポインタ要素まで対応付けが終了しているか否かが判定され（ステップ１４＿４）、Ｐが空のときは、この図１４に示す処理を終了する。
【０１６９】
ステップ１４＿５では、Ｐに格納されたポインタ（ここでは図１１に示すポインタ１＿２）が指し示す先のポインタ格納領域（ここではポインタ格納領域１）に格納されているポインタ（ここではポインタ１＿３）に代えて、Ｄに格納されたポインタ（ここでは図９に示すポインタ１＿１）が代入される。これにより、図１３に示す、オブジェクトＡのデータ１とオブジェクトＢのポインタ１＿１との対応が成立する。
【０１７０】
ステップ１４＿６では、図９に示すデータ要素リストの、次に並ぶデータ要素に格納されたポインタ（ここではポインタ２＿１）が作業領域Ｄに格納され、これとともに、図１１に示すポインタ要素リストの、次に並ぶポインタ要素に格納されたポインタ（ここではポインタ２＿２）が作業領域Ｐに格納され、ステップ１４＿３に戻る。これを繰り返し、ステップ１４＿５において、図９に示すデータ要素リストの最終段のデータ要素と、図１１に示すポインタ要素リストの最終段のポインタ要素との対応付けが行なわれると、次のステップ１４＿６では作業領域Ｄと作業領域Ｐが空にされてステップ１４＿３に戻り、この図１４に示す処理を終了する。ここではデータ要素リストに並ぶデータ要素の数とポインタ要素リストに並ぶポインタ要素の数が同数であるとして説明したが、それらの数に相違があったときは数の少ない方の対応づけが終了した時点でＤもしくはＰが空になり、この図１４の処理を終了する。
【０１７１】
この図１４の処理、すなわちデータ要素リストとポインタ要素リストとの対応づけが終了した後は、データ要素リストおよびポインタ要素リストは不要となり、消去される。
【０１７２】
尚、図９〜図１４を参照して説明したデータ結合処理においては、図１に示すコンピュータシステム１００の操作者により、
（ａ）オブジェクトＡのポインタ
（ｂ）オブジェクトＢのポインタ
（ｃ）オブジェクトＡのデータ要素リスト番号ＯＵＴA
（ｄ）オブジェクトＢのポインタ要素リスト番号ＩＮA
が入力される。尚、これらの情報の入力にあたっては、図８を参照して説明したメッセージとメソッドとの対応関係の入力の場合と同様に、操作者にとって解りやすい表現であらわされた、表示画面１０２ａ（図１参照）上のアイコンのクリック等により、ＬＳＩを配線するイメージで行なわれる。
【０１７３】
図１４の処理では、データ要素リストに並ぶデータ要素とポインタ要素リストに並ぶポインタ要素を、その配列順に対応づけを行なったが、例えばオブジェクトＡ，Ｂを作成する際に対応するデータ格納領域とポインタ格納領域に同一の名前、あるいは対応する名前を付けるというルール、あるいは、同一もしくは対応する名前の配列であって対応するものどうしが同一の順序となるように配列するというルールを定めておくことにより、その名前や配列の順序を参照して、互いに対応するデータ要素とポインタ要素どうしが同一順に並んだデータ要素リストとポインタ要素リストを生成することができ、図１４の処理に示すように配列順に対応づけることが可能となる。
【０１７４】
本実施形態によれば、図３に示すように、オブジェクトＡのデータをオブジェクトＢから直接参照することができ、したがってオブジェクト間のデータの受け渡しが極めて効率的に行なわれ、複数のオブジェクトに跨る処理動作速度が大幅に改善されることとなり、処理速度の低下を懸念して大きなオブジェクトを作成する必要がなく、小さな単位のオブジェクトを多数作成することができ、ソフトウェアの再利用性を大幅に向上させることができる。
【０１７５】
以上に説明した実施形態は、図３に示すオブジェクト結合部１０により、初期化の段階、すなわち複数のオブジェクトからなるソフトウェアシステムを構築する段階で複数のオブジェクトを結合するものであり、その構築したソフトウェアシステムが動作を開始した後のオブジェクトどうしの再結合は考慮されていない。
【０１７６】
そこで、次に、上述した実施形態をベースにして、一旦構築したソフトウェアシステムが動作を開始した後、動的な再結合が行なわれる実施形態について説明する。
【０１７７】
以下では、先ず図１５〜図１８を順次参照しながら、本発明の第２〜第５のオブジェクト指向プログラミング装置および本発明の第２〜第５のオブジェクト指向プログラム記憶媒体の各実施形態の全体構成について概括し、その後、図１９〜図３５を参照して、それら第２〜第５のオブジェクト指向プログラミング装置および第２〜第５のオブジェクト指向プログラム記憶媒体を総合した実施形態について詳細に説明する。
【０１７８】
図１５は、図１に示すコンピュータシステム内に実現されたソフトウェアシステムの第２例を示す模式図である。
【０１７９】
この図１５に示すソフトウェアシステムと本発明との対応関係は以下のとおりである。すなわち、この図１５に示すソフトウェアシステムが記憶された状態の記憶部１０５（図１参照）が本発明の第２のオブジェクト指向プログラム記憶媒体の一実施形態に相当し、図１に示すコンピュータシステム１００のハードウェアと、そのコンピュータシステム１００内で動作可能な状態にあるオブジェクト結合部２０との組合せが、本発明の第２のオブジェクト指向プログラミング装置の一実施形態に相当する。また、図１５に示すソフトウェアシステムが図１に示すＭＯ１１０にダウンロードされたときは、図１５に示すソフトウェアシステムを格納した状態にあるＭＯ１１０も、本発明の第２のオブジェクト指向プログラム記憶媒体の一実施形態に相当する。
【０１８０】
この図１５においても、多数のオブジェクトを代表して、２つのオブジェクトＡ，Ｂが示されている。
【０１８１】
この図１５に示すオブジェクト結合部２０における、出力インストラクションバス部生成部２１、入力インストラクションバス部生成部２２、およびインストラクション結合部２３の各処理は、図３に示すオブジェクト結合部１０の、出力インストラクションバス部生成部１１、入力インストラクションバス部生成部１２、およびインストラクション結合部１３の各処理と同一であり、インストラクション結合部２３により、オブジェクトＡのメッセージとオブジェクトＢのメソッドとを対応づける経路２３ａが生成される。出力インストラクションバス部生成部２１および入力インストラクションバス部生成部２２は、本発明において必ずしも必要ではない点も前述と同様である。
【０１８２】
入力インストラクションタグテーブル生成部２４は、オブジェクトＡの出力インストラクションバス部に、他オブジェクトそれぞれ（ここでは代表的にオブジェクトＢ）に対応する、オブジェクトＢのメッセージとオブジェクトＡのメソッドとの対応をあらわす入力インストラクションタグテーブルを生成する。
【０１８３】
この入力インストラクションタグテーブルは、後述するように、オブジェクトＡからオブジェクトＢに向けて発行されたメッセージの引数としてオブジェクトＢに渡され、オブジェクトＢでは、そのオブジェクトＢの処理中において、いわば動的に、例えばオブジェクトＢからオブジェクトＡへのメッセージの発行の経路が生成される。
【０１８４】
図１６は、図１に示すコンピュータシステムに実現されたソフトウェアシステムの第３例を示す模式図である。
【０１８５】
この図１６に示すソフトウェアシステムと本発明との対応関係は以下のとおりである。すなわち、この図１６に示すソフトウェアシステムが記憶された状態の記憶部１０５（図１参照）が本発明の第３のオブジェクト指向プログラム記憶媒体の一実施形態に相当し、図１に示すコンピュータシステム１００のハードウェアと、そのコンピュータシステム１００内で動作可能な状態にあるオブジェクト結合部３０との組合せが、本発明の第３のオブジェクト指向プログラミング装置の一実施形態に相当する。また、図１６に示すソフトウェアシステムが図１に示すＭＯ１１０にダウンロードされたときは、図１６に示すソフトウェアシステムを格納した状態にあるＭＯ１１０も、本発明の第３のオブジェクト指向プログラム記憶媒体の一実施形態に相当する。
【０１８６】
この図１６においても、多数のオブジェクトを代表して、２つのオブジェクトＡ，Ｂが示されている。
【０１８７】
この図１６に示すオブジェクト結合部３０における、出力インストラクションバス部生成部３１、入力インストラクションバス部生成部３２、およびインストラクション結合部３３の各処理は、図３に示すオブジェクト結合部１０の、出力インストラクションバス部生成部１１、入力インストラクションバス部生成部１２、およびインストラクション結合部１３の各処理と同一であり、インストラクション結合部３３により、オブジェクトＡのメッセージとオブジェクトＢのメソッドとを対応付ける経路３３ａが生成される。出力インストラクションバス部生成部３１および入力インストラクションバス部生成部３２は、本発明において必ずしも必要ではない点も前述と同様である。
【０１８８】
出力インストラクションタグテーブル生成部３４は、オブジェクトＡの出力インストラクションバス部に、他オブジェクトそれぞれ（ここでは代表的にオブジェクトＢ）に対応する、オブジェクトＢのメソッドとオブジェクトＡのメッセージとの対応をあらわす出力インストラクションタグテーブルを生成する。
【０１８９】
この出力インストラクションタグテーブルは、後述するように、オブジェクトＡからオブジェクトＢに向けて発行されたメッセージの引数としてオブジェクトＢに渡され、そのオブジェクトＢの処理中において、いわば動的に、例えばオブジェクトＡからオブジェクＢＡへのメッセージの発行の経路が再編成される。
【０１９０】
図１７は、図１に示すコンピュータシステムに実現されたソフトウェアシステムの第４例を示す模式図である。
【０１９１】
この図１７に示すソフトウェアシステムと本発明との対応関係は以下のとおりである。すなわち、この図１７に示すソフトウェアシステムが記憶された状態の記憶部１０５（図１参照）が本発明の第４のオブジェクト指向プログラム記憶媒体の一実施形態に相当し、図１に示すコンピュータシステム１００のハードウェアと、そのコンピュータシステム１００内で動作可能な状態にあるオブジェクト結合部４０との組合せが、本発明の第４のオブジェクト指向プログラミング装置の一実施形態に相当する。また、図１７に示すソフトウェアシステムが図１に示すＭＯ１１０にダウンロードされたときは、図１７に示すソフトウェアシステムを格納した状態にあるＭＯ１１０も、本発明の第４のオブジェクト指向プログラム記憶媒体の一実施形態に相当する。
【０１９２】
この図１７においても、多数のオブジェクトを代表して、２つのオブジェクトＡ，Ｂが示されている。
【０１９３】
この図１７に示すオブジェクト結合部４０における、出力インストラクションバス部生成部４１、入力インストラクションバス部生成部４２、およびインストラクション結合部４３の各処理は、図３に示すオブジェクト結合部１０の、出力インストラクションバス部生成部１１、入力インストラクションバス部生成部１２、およびインストラクション結合部１３の各処理と同一であり、インストラクション結合部４３により、オブジェクトＡのメッセージとオブジェクトＢのメソッドとを対応付ける経路４３ａが生成される。出力インストラクションバス部生成部４１および入力インストラクションバス部生成部４２は、本発明において必ずしも必要ではない点も前述と同様である。
【０１９４】
入力データタグテーブル生成部４４は、オブジェクトＡの出力インストラクションバス部に、他オブジェクトそれぞれ（ここでは代表的にオブジェクトＢ）に対応する、オブジェクトＢのデータ格納領域へのポインタが配列されるデータ要素リストを特定するデータ要素リスト番号ＯＵＴB と、オブジェクトＡのポインタ格納領域へのポインタが配列されるポインタ要素リストを特定するポインタ要素リスト番号ＩＮAとの対応をあらわす入力データタグテーブルを生成する。
【０１９５】
データ要素リスト番号ＯＵＴBおよびポインタ要素リスト番号ＩＮAは、それぞれ、オブジェクトＢおよびオブジェクトＡを作成する段階で定められるが、この入力データタグテーブルが生成されただけの段階では、データ要素リスト自体およびポインタ要素リスト自体は未だ生成されていない。入力データタグテーブルはオブジェクトＡからオブジェクトＢに向けて発行されたメッセージの引数としてオブジェクトＢに渡され、オブジェクトＢでは、そのオブジェクトＢの処理中において、いわば動的に、自分（オブジェクトＢ）のデータ要素リストを生成するとともにオブジェクトＡのポインタ要素リストを生成し、それらのデータ要素リストとポインタ要素リストを結合する。詳細は後述する。
【０１９６】
図１８は、図１に示すコンピュータシステムに実現されたソフトウェアシステムの第５例を示す模式図である。
【０１９７】
この図１８に示すソフトウェアシステムと本発明との対応関係は以下のとおりである。すなわち、この図１８に示すソフトウェアシステムが記憶された状態の記憶部１０５（図１参照）が本発明の第５のオブジェクト指向プログラム記憶媒体の一実施形態に相当し、図１に示すコンピュータシステム１００のハードウェアと、そのコンピュータシステム１００内で動作可能な状態にあるオブジェクト結合部５０との組合せが、本発明の第５のオブジェクト指向プログラミング装置の一実施形態に相当する。また、図１８に示すソフトウェアシステムが図１に示すＭＯ１１０にダウンロードされたときは、図１８に示すソフトウェアシステムを格納した状態にあるＭＯ１１０も、本発明の第５のオブジェクト指向プログラム記憶媒体の一実施形態に相当する。
【０１９８】
この図１８においても、多数のオブジェクトを代表して、２つのオブジェクトＡ，Ｂが示されている。
【０１９９】
この図１８に示すオブジェクト結合部５０における、出力インストラクションバス部生成部５１、入力インストラクションバス部生成部５２、およびインストラクション結合部５３の各処理は、図３に示すオブジェクト結合部１０の、出力インストラクションバス部生成部１１、入力インストラクションバス部生成部１２、およびインストラクション結合部１３の各処理と同一であり、インストラクション結合部５３により、オブジェクトＡのメッセージとオブジェクトＢのメソッドとを対応づける経路５３ａが生成される。インストラクションバス部生成部５１および入力インストラクションバス部生成部５２は、本発明において必ずしも必要ではない点も前述と同様である。
【０２００】
出力データタグテーブル生成部５４は、オブジェクトＡの出力インストラクションバス部に、他オブジェクトそれぞれ（ここでは代表的にオブジェクトＢ）に対応する、オブジェクトＢのポインタ格納領域へのポインタが配列されるポインタ要素リストを特定するポインタ要素リスト番号ＩＮBと、オブジェクトＡのデータ格納領域へのポインタが配列されるデータ要素リストを特定するデータ要素リスト番号ＯＵＴAとの対応をあらわす出力データタグテーブルを生成する。
【０２０１】
ポインタ要素リスト番号ＩＮBおよびデータ要素リスト番号ＯＵＴAは、それぞれ、オブジェクトＢおよびオブジェクトＡを作成する段階で定められるが、この出力データタグテーブルが生成されただけの段階では、ポインタ要素リスト自体およびデータ要素リスト自体は未だ生成されていない。出力データタグテーブルはオブジェクトＡからオブジェクトＢに向けて発行されたメッセージの引数としてオブジェクトＢに渡され、オブジェクトＢでは、そのオブジェクトＢの処理中において、いわば動的に、オブジェクトＡのデータ要素リストを生成するとともに、自分（オブジェクトＢ）のポインタ要素リストを生成し、それらのデータ要素リストとポインタ要素リストを結合する。詳細は後述する。
【０２０２】
図１９は、図１５〜図１８に示すオブジェクトＡの、データ構造の一部を示す模式図である。この図１９には、図４に示すデータ構造のうちのメソッド要素１つ分と、そのメソッド要素に結合した入力インストラクションタグテーブル、出力インストラクションタグテーブル、入力データタグテーブル、および出力データタグテーブルが示されている。この図１９には、各図１５〜１８を参照してそれぞれ説明した各実施形態の特徴を全て備えた、総合的な実施形態のデータ構造が示されている。
【０２０３】
この図１９に示すメソッド要素には、図４に示すメソッド要素の構成、すなわち、他オブジェクト（ここでは代表的にオブジェクトＢ）のメソッド番号ＭＥB、そのメソッド番号ＭＥBにより特定されるメソッドを実行するオブジェクト（ここではオブジェクトＢ）へのポインタ、および次のメソッド要素へのポインタに、さらに、入力インストラクションタグテーブルへのポインタ（以下、Ｐ１と称することがある）、出力インストラクションタグテーブルへのポインタ（以下、Ｐ２と称することがある）、入力データタグテーブルへのポインタ（以下、Ｐ３と称することがある）、および出力データタグテーブルへのポインタ（以下、Ｐ４と称することがある）、および自分自身（オブジェクトＡ）へのポインタ（以下、Ｐ５と称することがある）が付加されている。
【０２０４】
入力インストラクションタグテーブルは、他オブジェクト（ここではオブジェクトＢ）のメッセージの最大数ＭＡB MAXと同じ幅の配列であって、オブジェクトＢのメッセージ番号ＭＡBに対応して、オブジェクトＡのメソッド番号ＭＥA が格納されている。
【０２０５】
また、出力インストラクションタグテーブルは、他オブジェクト（ここではオブジェクトＢ）のメソッドの最大数ＭＥB MAXと同じ幅の配列であって、オブジェクトＢのメソッド番号ＭＥBに対応して、オブジェクトＡのメッセージ番号ＭＡAが格納されている。
【０２０６】
入力データタグテーブル１０は、他オブジェクト（ここではオブジェクトＢ）のデータ要素リストの最大数ＯＵＴB MAXと同じ幅の配列であって、オブジェクトＢのデータ要素リスト番号ＯＵＴBに対応して、オブジェクトＡのポインタ要素リスト番号ＩＮAが格納されている。
【０２０７】
さらに出力データタグテーブルは、他オブジェクト（ここではオブジェクトＢ）のポインタ要素リストの最大数ＩＮB MAXと同じ幅の配列であって、オブジェクトＢのポインタ要素リスト番号ＩＮBに対応して、オブジェクトＡのデータ要素リスト番号ＯＵＴAが格納されている。
【０２０８】
尚、この図１９には、オブジェクトＡの出力インストラクションバス部に関し、さらにオブジェクトＢに関する４つのタグテーブルが示されているが、一般的には、これら４つのタグテーブルは、オブジェクトＡの出力インストラクションバス部全体としては、オブジェクトＡで発行するメッセージを受け取る相手のオブジェクトの数だけ保持される。すなわち、これら４つのタグテーブルは、相手のオブジェクトそれぞれに対応している。オブジェクトＡに限らず他のオブジェクトの出力インストラクションバス部に関しても同様である。
【０２０９】
オブジェクトＡが図１９に示すメソッド要素を参照しオブジェクトＢに向けてメッセージを発行するにあたっては、オブジェクトＢのメソッド番号ＭＥBのほか、必要に応じてＰ１〜Ｐ５のうちの一部もしくは全部が引数としてオブジェクトＢに渡される。あるいは、常に、メソッド番号ＭＥB、Ｐ１〜Ｐ５の全てを引数としてもよい。
【０２１０】
以下、特に断らない限り、図４に示すデータ構造が図１９に示すように変更されたデータ構造を前提にして説明する。
【０２１１】
図２０は、オブジェクトＡのメッセージ発行処理の一例を示すフローチャートである。
【０２１２】
ステップ２０＿１，２０＿３，２０＿４は、図５のステップ５＿１，５＿３，５＿４と同一であり、説明は省略する。
【０２１３】
ステップ２０＿２では、メソッド番号ＭＥBに加え、ここに示す例では、Ｐ１，Ｐ２，Ｐ５を引数としてオブジェクトＢに渡され、このメッセージを受け取ったオブジェクトＢでは、図５（Ｂ）に示すフローに従ってメソッド番号ＭＥBにより特定されるメソッドの処理が実行される。
【０２１４】
図２１は、オブジェクトＢの処理中における部分処理の第１例を示すフローチャートである。この部分処理は、引数としてオブジェクトＢに渡されたメソッド番号ＭＥBにより特定されるメソッドの処理中で実行される。
【０２１５】
ここでは、オブジェクトＢに引数として渡された入力インストラクションバステーブルが参照され、オブジェクトＢのメッセージ番号ＭＡBからオブジェクトＡのメソッド番号ＭＥAが取得され（ステップ２１＿１）、オブジェクトＢの処理中で、その取得したオブジェクトＡのメソッド番号ＭＥAのメソッドの処理が実行される。
【０２１６】
図２２は、オブジェクトＢの処理中における部分処理の第２例を示すフローチャートである。
【０２１７】
ここでは、引数としてオブジェクトＢに渡された入力インストラクションタグテーブルが参照され、オブジェクトＢのメッセージ番号ＭＡBからオブジェクトＡのメソッド番号ＭＥAが取得され（ステップ２２＿１）、自分（オブジェクトＢ）のメッセージテーブルのメッセージ番号ＭＡBに対応するメソッド要素リストに、オブジェクトＡのメソッド番号ＭＥAに関するメソッド要素を追加する（ステップ２２＿２）。こうすることにより、以後、オブジェクトＢでメッセージ番号ＭＡBのメッセージを発行すると、オブジェクトＡのメソッド番号ＭＥAのメソッドが実行されるようになる。
【０２１８】
図２３は、オブジェクトＢの処理中における部分処理の第３例を示すフローチャートである。ただしこの部分処理は直接にはオブジェクトＡで発行されたメッセージの引数は参照されていない。
【０２１９】
ここでは、オブジェクトＢの処理によりオブジェクトＣが生成される（ステップ２３＿１）。１つのオブジェクト中で、他のオブジェクトを生成する処理自体は、オブジェクト指向プログラミングにおける通常の処理の１つであり、ここではオブジェクトＣを生成する手法についての説明は省略する。
【０２２０】
図２４は、オブジェクトＢの処理中における部分処理の第４例を示すフローチャートである。
【０２２１】
この図２４に示す部分処理は、その実行に先立って図２３に示す部分処理が実行され、オブジェクトＣが生成されている必要がある。ただし、このオブジェクトＣの生成タイミングは、特に限定されるものではなく、オブジェクトＢにおける今回の一連処理中でオブジェクトＣを生成してもよく、あるいはオブジェクトＢにおける前回、あるいはそれ以前の処理においてオブジェクトＣが生成されていてもよい。
【０２２２】
図２４の部分処理中では、引数としてオブジェクトＢに渡された入力インストラクションタグテーブルが参照され、もともとはオブジェクトＢのメッセージ番号であって、オブジェクトＣに引き継がれたたメッセージ番号ＭＡBに対応する、オブジェクトＡのメソッド番号ＭＥAが取得される（ステップ２４＿１）。そして、今度は、オブジェクトＣのメッセージテーブルのメッセージ番号ＭＡBに対応するオブジェクトＣのメソッド要素リストに、オブジェクトＡのメソッド番号ＭＥAのメソッド要素が追加される（ステップ２４＿２）。これにより、オブジェクトＣからオブジェクトＡへのメッセージの経路が形成される。
【０２２３】
図２５は、オブジェクトＢの処理中における部分処理の第５例を示すフローチャートである。
【０２２４】
ここでは出力インストラクションタグテーブルが参照されて、オブジェクトＢのメソッド番号ＭＥBに対応するオブジェクトＡのメッセージ番号ＭＡAが取得され（ステップ２５＿１）、オブジェクトＡのメッセージテーブルのメッセージ番号ＭＡAに対応するメソッド要素リストに、オブジェクトＢのメソッド番号ＭＥBのメソッド要素が追加される（ステップ２５＿２）。こうすることにより、以後、オブジェクトＡでメッセージ番号ＭＡAのメッセージが発行されると、オブジェクトＢのメソッド番号ＭＥBのメソッドが実行される。
【０２２５】
図２６は、オブジェクトＢの処理中における部分処理の第６例を示すフローチャートである。
【０２２６】
この図２６に示す部分処理を実行するには、それに先立って、オブジェクトＣの生成処理（図２３参照）が実行されている必要があるが、オブジェクトＣの生成処理は、オブジェクトＢにおける今回の一連の処理中で行われていてもよく、あるいは前回もしくはそれ以前の処理でオブジェクトＣが生成されていてもよい。
【０２２７】
図２６の部分処理では、引数としてオブジェクトＢに渡された出力インストラクションタグテーブルが参照され、もともとはオブジェクトＢのメソッド番号であってオブジェクトＣに引き継がれたメソッド番号ＭＥBに対応するオブジェクトＡのメッセージ番号ＭＡAが取得され（ステップ２６＿１）、オブジェクトＡのメッセージテーブルのメッセージ番号ＭＡAに対応するメソッド要素リストに、メソッド番号ＭＥBと、オブジェクトＣへのポインタとが格納されたメソッド要素が追加される（ステップ２６＿２）。
【０２２８】
こうすることにより、これ以後、オブジェクトＡから、新たに生成されたオブジェクトＣに対しメッセージを発行することができるようになる。
【０２２９】
図２７は、オブジェクトＡのメッセージ発行処理の、図２０に示すメッセージ発行処理例とは異なる例を示すフローチャートである。
【０２３０】
ステップ２７＿１，２７＿３，２７＿４は、図２０のステップ２０＿１，２０＿３，２０＿４、および図５のステップ５＿１，５＿３，５＿４と同様であり、説明は省略する。
【０２３１】
ステップ２７＿２では、メソッド番号ＭＥBに加え、Ｐ３，Ｐ４，Ｐ５を引数として、オブジェクトＢが呼び出される。
【０２３２】
このメッセージを受け取ったオブジェクトＢでは、メソッド番号ＭＥBにより特定されるメソッドの処理が実行される。
【０２３３】
図２８は、オブジェクトＢの処理中における部分処理の第７例を示すフローチャートである。
【０２３４】
ここでは、引数としてオブジェクトＢに引き渡された入力データタグテーブルが参照され、オブジェクトＢのデータ要素リスト番号ＯＵＴBから、オブジェクトＡのポインタ要素リスト番号ＩＮAが取得され（ステップ２８＿１）、その取得したポインタ要素リスト番号ＩＮAに対応する、オブジェクトＡのポインタ要素リスト（図１１参照。ただし、図１１にはオブジェクトＢのポインタ要素リストが示されている）が生成され（ステップ２８＿２）、データ要素リスト番号ＯＵＴBに対応する、オブジェクトＢのデータ要素リスト（図９参照。ただし図９にはオブジェクトＡのデータ要素リストが示されている）が生成され（ステップ２８＿３）、これらデータ要素リストとポインタ要素リストの結合処理（図１３参照。ただし、図１３では、オブジェクトＢのポインタがオブジェクトＡのデータを指し示しており、ここでの説明と比べると、オブジェクトＡとオブジェクトＢの立場が逆である）が行なわれる（ステップ２８＿４）。
【０２３５】
このようにして、本実施形態では、処理の実行中に、いわば動的に、オブジェクト間でのデータ授受の経路が形成される。
【０２３６】
図２９は、オブジェクトＢの処理中の部分処理の第８例を示すフローチャートである。
【０２３７】
この図２９に示す部分処理を実行するには、それに先立って、オブジェクトＣの生成処理（図２３参照）が実行されている必要がある。ただし、そのオブジェクトＣの生成処理の実行は、この図２９に示す部分処理以前であればいつであってもよい。
【０２３８】
図２９に示す部分処理では、引数としてオブジェクトＢに引き渡された入力データタグテーブルが参照され、もともとはオブジェクトＢのデータ要素リスト番号であってオブジェクトＣに引き継がれたデータ要素リスト番号ＯＵＴBから、オブジェクトＡのポインタ要素リスト番号ＩＮAが取得され（ステップ２９＿１）、その取得したポインタ要素リスト番号ＩＮAに対応する、オブジェクトＡのポインタ要素リストが生成される（ステップ２９＿２）。さらに、データ要素リスト番号ＯＵＴBに対応する、オブジェクトＣのデータ要素リストが生成され（ステップ２９＿３）、それらオブジェクトＣのデータ要素リストと、オブジェクトＡのポインタ要素リストとの結合処理が行なわれる（ステップ２９＿４）。
【０２３９】
このようにして、処理実行中に、いわば動的に、オブジェクトＡから、新たに生成されたオブジェクトＣのデータを直接に参照する経路が生成される。
【０２４０】
図３０は、オブジェクトＢの処理中の部分処理の第９例を示すフローチャートである。
【０２４１】
この図３０に示す部分処理では、まず、オブジェクトＢに引数として渡された出力データタグテーブルが参照され、オブジェクトＢのポインタ要素リスト番号ＩＮBから、オブジェクトＡのデータ要素リスト番号ＯＵＴAが取得される（ステップ（３０＿１）。次いで、その取得したデータ要素リスト番号ＯＵＴAに対応する、オブジェクトＡのデータ要素リストが生成され（ステップ３０＿２）、また、ポインタ要素リスト番号ＩＮBに対応する、自分（オブジェクトＢ）のポインタ要素リストが生成され（ステップ３０＿３）、それらオブジェクトＡのデータ要素リストとオブジェクトＢのポインタ要素リストとの結合処理が行なわれる（ステップ３０＿４）。このようにして、処理実行中に、動的に、オブジェクトＢからオブジェクトＡのデータを直接に参照する経路が形成される。
【０２４２】
図３１はオブジェクトＢの処理中の部分処理の第１０例を示すフローチャートである。ここでは、図３１に示す部分処理に先立ってオブジェクトＣが生成されている必要がある（図２３参照）。オブジェクトＣの生成タイミングは、この図３１に示す部分処理の実行前であればいつであってもよい。
【０２４３】
この図３１に示す部分処理では、オブジェクトＢに引数として渡された出力データタグテーブルが参照され、もともとはオブジェクトＢのポインタ要素リスト番号であってオブジェクトＣに引き継がれたポインタ要素リスト番号ＩＮBから、オブジェクトＡのデータ要素リスト番号ＯＵＴAが取得される（ステップ３１＿１）。次いで、その取得したデータ要素リスト番号ＯＵＴAに対応する、オブジェクトＡのデータ要素リストが生成され（ステップ３１＿２）、さらにポインタ要素リスト番号ＩＮBに対応する、オブジェクトＣのポインタ要素リストが生成され（ステップ３１＿３）、それらオブジェクトＡのデータ要素リストとオブジェクトＣのポインタ要素リストとの結合処理が行なわれる（ステップ３１＿４）。
【０２４４】
このようにして、処理実行中に、いわば動的に、新たに生成されたオブジェクトＣから、オブジェクトＡのデータを直接に参照する経路が生成される。
【０２４５】
尚、ここでは、オブジェクトＢの処理中の各種の部分処理について説明したが、これら各種の部分処理は必ずしもそれぞれが単独で実行されるとは限らず、必要に応じて複数の部分処理が連続的に、あるいは組み合わされて実行される。
【０２４６】
図３２は、図１５に示すオブジェクト結合部２０における入力インストラクションタグテーブル生成部２４の処理を示すフローチャートである。
【０２４７】
ここでは、コンピュータシステム１００（図１参照）の操作者により、ＬＳＩ間を配線で結ぶ要領で以下の指定が行なわれる。
【０２４８】
（ａ）オブジェクトＡのポインタ
（ｂ）オブジェクトＢのポインタ
（ｃ）オブジェクトＡのメソッド番号ＭＥA
（ｄ）オブジェクトＢのメッセージ番号ＭＡB
図３２の処理では、上記の指定を受けて、オブジェクトＢのメッセージの最大数ＭＡBMAXと同一幅の入力インストラクションタグテーブルの枠が生成され（ステップ３２＿１）、その枠のオブジェクトＢのメッセージ番号ＭＡBの欄にオブジェクトＡのメソッド番号ＭＥAが格納され（ステップ３２＿２）、オブジェクトＡの、オブジェクトＢに関する全てのメソッド要素（例えば図１９に示すメソッド要素）に、その生成した入力インストラクションタグテーブルへのポインタが登録される（ステップ３２＿３）。図１９には、入力インストラクションタグテーブルへのポインタ（Ｐ１）が既に登録された状態の図が示されている。
【０２４９】
ここでは代表的にオブジェクトＢを取り上げているが、オブジェクトＡの出力インストラクションバス部にはオブジェクトＡから発行されたメッセージを受け取る可能性のある全てのオブジェクトに関する入力インストラクションタグテーブルが生成され、その入力インストラクションタグテーブルに対応するオブジェクトに関するメソッド要素全てに、その入力インストラクションタグテーブルへのポインタが登録される。以下に説明する出力インストラクションタグテーブル、入力データタグテーブル、および出力データタグテーブルの場合も同様である。
【０２５０】
図３３は、図１６に示すオブジェクト結合部３０における出力インストラクションタグテーブル生成部３４の処理を示すフローチャートである。
【０２５１】
ここでは、コンピュータシステム１００（図１参照）の操作者により、ＬＳＩ間を配線で結ぶ要領で以下の指定が行なわれる。
【０２５２】
（ａ）オブジェクトＡのポインタ
（ｂ）オブジェクトＢのポインタ
（ｃ）オブジェクトＡのメッセージ番号ＭＡA
（ｄ）オブジェクトＢのメソッド番号ＭＥB
図３３の処理では、上記の入力を受けて、オブジェクトＢのメソッドの最大数ＭＥB  MAXと同一幅の出力インストラクションタグテーブルの枠が生成され（ステップ３３＿１）、その枠の、オブジェクトＢのメソッド番号ＭＥBの欄にオブジェクトＡのメッセージ番号ＭＡAが格納され（ステップ３３＿２）、さらに、オブジェクトＡの、オブジェクトＢに関する全てのメソッド要素に、その生成した出力インストラクションタグテーブルへのポインタが登録される（ステップ３３＿３）。図１９は、出力インストラクションタグテーブルに関しても、既にその出力インストラクションタグテーブルへのポインタ（Ｐ２）が登録された後の状態の図である。
【０２５３】
図３４は、図１７に示すオブジェクト結合部４０における入力データタグテーブル生成部４４の処理を示すフローチャートである。
【０２５４】
ここでは、コンピュータシステム１００（図１参照）の操作者により、ＬＳＩ間を配線で結ぶ要領で以下の指定が行なわれる。
【０２５５】
（ａ）オブジェクトＡのポインタ
（ｂ）オブジェクトＢのポインタ
（ｃ）オブジェクトＡのポインタ要素リスト番号ＩＮA
（ｄ）オブジェクトＢのデータ要素リスト番号ＯＵＴB
図３４に示す処理では、上記の指定を受けて、オブジェクトＢのデータ要素リストの最大数ＯＵＴB MAXと同一幅の入力データタグテーブルの枠が生成され（ステップ３４＿１）、その枠の、オブジェクトＢのデータ要素リスト番号ＯＵＴBの欄に、オブジェクトＡのポインタ要素リスト番号ＩＮAが格納され（ステップ３４＿２）、さらに、オブジェクトＡの、オブジェクトＢに関する全てのメソッド要素に、その生成した入力データタグテーブルへのポインタが登録される（ステップ３４＿３）。図１９は、入力データタグテーブルについても、その入力データタグテーブルへポインタ（Ｐ３）が登録された後の状態の図である。
【０２５６】
図３５は、図１８に示すオブジェクト結合部５０における出力データタグテーブル生成部５４の処理を示すフローチャートである。
【０２５７】
ここでは、コンピュータシステム１００（図１参照）の操作者により、ＬＳＩ間を配線で結ぶ要領で以下の指定が行なわれる。
【０２５８】
（ａ）オブジェクトＡのポインタ
（ｂ）オブジェクトＢのポインタ
（ｃ）オブジェクトＡのデータ要素リスト番号
（ｃ）オブジェクトＢのポインタ要素リスト番号
図３５の処理では、上記の入力を受けて、オブジェクトＢのポインタ要素リストの最大数ＩＮB MAXと同一幅の出力データタグテーブルの枠が生成され（ステップ３５＿１）、その枠の、オブジェクトＢのポインタ要素リスト番号ＩＮBの欄に、オブジェクトＡのデータ要素リスト番号ＯＵＴBが格納され（ステップ３５＿２）、さらに、オブジェクトＡの、オブジェクトＢに関する全てのメソッド要素に、その生成した出力データタグテーブルへのポインタが登録される（ステップ３５＿３。図１９は、出力データタグテーブルについても、その出力データタグテーブルへのポインタ（Ｐ４）が登録された後の状態の図である。
【０２５９】
尚、図３２〜図３５はそれぞれが単独に実行され、図１９に示す４つのタグテーブルのうちの１つのみがメソッド要素に登録されてもよいが、必要に応じて、または常に、これら４つのタグテーブルのうち２つ以上あるいは全てが１つのメソッド要素に登録されてもよい。また、これら図３２〜図３５には明示的に示されていないが、これら図３２〜図３５に示す処理のうちのいずれかが実行された場合に、オブジェクトＡ自身へのポインタ（Ｐ５）もメソッド要素に登録される。
【０２６０】
図１５〜図３５を参照して説明した実施形態によれば、オブジェクトどうしが初期状態として結びつけられるだけでなく、処理の実行中に動的に、メッセージとメソッドとの結合、データとポインタとの結合が行なわれる。新たなオブジェクトが生成されると、その新たなオブジェクトに関しても同様に、動的な結合が行なわれる。このように、そのときそのときの状況に応じて新たな結合が行なわれ、複数のオブジェクト間でのメッセージやデータの授受が極めて高速化される。
【０２６１】
次に、図２に示すオブジェクトウェアプログラミングシステム１２０のオブジェクト間配線エディタ部１２２およびその周辺部に関連した実施形態について説明する。ここでは、オブジェクト間配線エディタ部１２２およびその周辺部に関連した実施形態のうち、図１に示すコンピュータシステム１００の画像表示部１０２の表示画面１０２ａへの、オブジェクトと  オブジェクト間の配線とからなるオブジェクト間ネットワークの表示形態について説明する。
【０２６２】
前述したように、ソフトウェアの再利用性が低いことや実行速度が遅いことなど種々の欠点を持ってはいたものの、オブジェクト指向プログラミングという考え方が従来より存在し、オブジェクトどうしの接続関係を記述するためにオブジェクト間を配線するという考え方が存在していた。しかしながら、従来は、前述したように、データをメッセージの引数として他のオブジェクトに渡すなど、オブジェクト間の接続関係は極めて単純なものであった。ところが、前述したインタプリンタ部１２３（図２参照）に関連した実施形態に示すようにオブジェクトどうしの配線というよりもさらに複雑に、オブジェクトの中のポインタどうしを配線する必要がある場合に、配線が複雑となり、従来のような表示方法では、オブジェクト間の接続関係を容易に理解し効率良く配線するのが難しいという問題がある。
【０２６３】
例えば従来は、オブジェクト間ネットワークを表示する際は、オブジェクトの表示位置とオブジェクト間の配線を表示する位置に区別がなく、自由にオブジェクトの配置及び配線を行っている。このため、ある表示装置ではオブジェクトと配線が重なることを許しており、ユーザが重なりを回避しながら配線を行わなければならないという問題がある。また、ある表示装置では、配線をしても、結果として出来上がるネットワークを表示しないため、オブジェクト間の関係を容易には理解できないという問題がある。
【０２６４】
また、表示されているオブジェクトが階層構造になっており、あるオブジェクトを構成するサブネットワークを表示する装置においては、従来は、新たな画面（ウインドウ）にそのネットワークを表示している。そのため、親オブジェクトのネットワークとサブネットワークのつながりを確認することが困難であるという問題と、新たなウインドウにより親オブジェクトのネットワークが隠れてしまうという問題がある。
【０２６５】
さらに、従来のオブジェクト間ネットワーク表示装置においては、オブジェクトの大きさは固定あるいは自由に変更できるようになっている。しかし、大きさが固定の場合では、オブジェクトの入出力端子の数が可変の場合、端子間隔が狭くなり端子名を表示することが困難になる。また、自由に変更できる場合でもユーザが調整をしなければならず、作業量が増すという問題がある。
【０２６６】
さらに、従来のオブジェクト間ネットワーク表示装置においては、ネットワーク配線内のデータや指令の流れる方向を示す場合、線の終端にのみ、または両端にのみ矢印をつけるようにしている。従って線の途中では流れの方向を確認することが出来ず、線両端のオブジェクトが表示画面からはみ出している場合には、始端または終端となるオブジェクトの端子が入力端子であるか出力端子であるかの判断が出来ないという問題がある。
【０２６７】
さらに、線が交差する場合、２つの線が交わっているのか分離しているのかを判断するために、交差点に黒い点などの印を付したり、円弧を利用している。しかし、黒い点などの印では接続状態を示す表示のルールをユーザが理解していることが必要となり、円弧では１本の線に対して半径分の幅が必要になるという問題がある。
【０２６８】
以下に説明する実施形態は、上述のオブジェクト間ネットワークの表示に伴う問題に鑑み、ユーザに理解しやすい表示方法を提供するものである。
【０２６９】
以下、本発明のオブジェクト間ネットワーク表示方法の実施形態について説明する。ここでは、先ず本発明のオブジェクト間ネットワーク表示方法の基本的な実施形態についてひと通り説明し、次いでさらに具体的な実施形態について説明する。
【０２７０】
図３６は、本発明のオブジェクト間ネットワーク表示方法の一実施形態の表示画面例を示す模式図である。尚、ここに示す表示画面１０２ａは、図１に示すコンピュータシステム１００に備えられた画像表示部１０２の表示画面１０２ａであり、その表示画面１０２ａ上に、この図では格子２０１が示されているが、この格子２０１は表示画面１０２ａが複数の表示領域に区分けされていることを明示するためのものであり、表示画面１０２ａには実際には表示されない。
【０２７１】
格子２０１で区切られた各升目１つずつからなる各表示領域には、オブジェクト指向プログラミングにより生成される複数のオブジェクトのうちのいずれか１つのオブジェクトを表示するオブジェクト表示部分領域２０３と、複数のオブジェクト間を結ぶ配線を表示する配線表示部分領域２０４が示されている。ここで配線とは、図３、図１５〜図１８に示すメッセージの授受の経路１３ａ，２３ａ，３３ａ，４３ａ，５３ａや、図３に示すデータの授受の経路１６ａなどをあらわす線である。配線表示部分領域２０４は、隣接する２つの表示領域それぞれのオブジェクト表示部分領域２０３どうしの間にその配線表示部分領域２０４が形成されるようにその領域が定められている。
【０２７２】
ここでは、表示画面１０２ａ上に、ネットワークを構成する複数のオブジェクトそれぞれが各表示領域内のオブジェクト表示部分領域２０３に１つずつ配置されるとともに、これら複数のオブジェクトどうしを結ぶ配線が複数の表示領域に跨って連なる配線表示部分領域２０４に表示されてなる画像が表示される。
【０２７３】
このような表示方法によれば、整然と並んだオブジェクトの配置が得られ、しかもオブジェクトを表示する領域と配線を表示する領域を分けたためオブジェクトと配線が重なることのない見やすい表示を得ることができる。
【０２７４】
次にネットワークを構成するオブジェクトが階層化されている場合のネットワークの表示方法について説明する。
【０２７５】
図３７は、階層化されたネットワークの説明図である。
【０２７６】
この図３７には、オブジェクト１，２がそれぞれサブネットワーク１，２で構成されている例が示されている。各サブネットワークは、それぞれが複数のオブジェクトと、それら複数のオブジェクトどうしを結ぶ配線とで構成されている。ここでは二段の階層構造が示されているが、三段以上の階層を持っていてもよい。
【０２７７】
図３８は、多数のオブジェクトと配線からなる表示画像例を示す図であり、図３８（Ａ）は表示画像全体、図３８（Ｂ）は、オブジェクト２０５を中心とした部分画像を示している。
【０２７８】
また、図３９は、図３８に示すオブジェクト２０５に代えて、そのオブジェクト２０５を構成するサブネットワーク２０６を表示した表示画像例を示す図であり、図３９（Ａ）は表示画像全体、図３９（Ｂ）はサブネットワーク２０６を中心とした部分画像を示している。
【０２７９】
図３８に示す表示画像２０７に含まれるオブジェクト２０５に代えて、上述したような下層の複数のオブジェクトとそれらのオブジェクト間の配線とで構成されたサブネットワークを表示するにあたり、このサブネットワーク２０６には、オブジェクト２０５の表示領域よりも広い表示領域が割り当てられ、このサブネットワーク２０６の表示領域の上下に並ぶ表示領域は左右に拡大され、このサブネットワーク２０６の表示領域の左右に並ぶ表示領域は上下に拡大させ、さらにサブネットワーク２０６の表示領域に対し斜めに位置する表示領域については、そのサブネットワーク２０６と等価な要素であるオブジェクト２０５が表示された図３８の表示画像中の表示領域と同一の寸法が割り当てられている。
【０２８０】
図３９（Ｂ）に示すように、サブネットワーク２０６を構成する複数のオブジェクト間には配線が表示されており、かつそのサブネットワーク２０６とそのサブネットワーク２０６の周囲のネットワークとの間の配線も表示されている。
【０２８１】
このような表示方法を採用すると、従来例のように独立したウインドウにサブネットワーク２０６を表示する場合と比べ、サブネットワークとその周囲のオブジェクトのネットワークとの接続状態を容易に確認することが可能となる。
【０２８２】
図４０は、サブネットワークの表示方法の他の例を示す図であり、図４０（Ａ）はサブネットワークを表示する前の、そのサブネットワークと等価なオブジェクトを含む表示画像例、図４０（Ｂ）はそのオブジェクトをサブネットワークに置き換えたときの表示画像例を示している。
【０２８３】
図４０（Ａ）に示す表示画像２０７に含まれるオブジェクト２０５を、図４０（Ｂ）に示すように、そのオブジェクト２０５と等価なサブネットワーク２０６に置き換えるものとする。
【０２８４】
このとき、サブネットワーク２０６には、もとのオブジェクト２０５の表示領域よりも広い表示領域が割り当てられる。ただしオブジェクト２０５に代えてサブネットワーク２０６を表示した図４０（Ｂ）に示す表示画像の周縁に位置する表示領域は図４０（Ａ）に示す表示画像の周縁に位置する表示領域と比べ同一のオブジェクトが表示された表示領域である。また、それら周縁に位置する表示領域の、表示画像２０７の外周に接する辺の位置および寸法は図４０（Ａ）と図４０（Ｂ）とで同一である。すなわち、図４０（Ａ）と図４０（Ｂ）は、オブジェクト２０５がサブネットワーク２０６に置きかわった点を除き、そのサブネットワーク２０６を除く表示領域は図４０（Ｂ）ではゆがんではいるものの、図４０（Ａ）と同一の情報が表示されており、図３９（Ａ）と比べた図３９（Ａ）のときのように、オブジェクト２０５に代えてサブネットワーク２０６を表示したことによってサブネットワーク２０６から離れた部分の表示領域が表示画面から外れてしまうことが防止される。
【０２８５】
したがってこの表示方法を採用すると、図３９の例と同様にサブネットワークとその周囲のオブジェクトのネットワークとの接続状態を容易に確認することができ、それに加えて、変形してはいるものの、サブネットワークを表示した状態で、サブネットワーク表示前（第１の画像）に表示されていたネットワーク全体を確認することができる。
【０２８６】
図４１は、複数の升目が連結された表示領域を有する表示画像例を示す図であり、図４１（Ａ）は全体画像を示す図、図４１（Ｂ），（Ｃ）は部分画像を拡大して示す図である。
【０２８７】
この表示画像には各種の寸法のオブジェクト２１０〜２１５が示されている。これらのオブジェクト２１０〜２１５のうちオブジェクト２１０は、升目１つ分で区切られた表示領域内に配置されており、他の寸法のオブジェクト２１１〜２１５は、隣接する複数の升目が連結されて１つの表示領域を構成した、拡大された表示領域内に配置されている。各オブジェクトは、図４１（Ｂ），図４１（Ｃ）に示すように、各表示領域の形状および寸法に応じた形状および寸法に規格化されている。
【０２８８】
このような表示方法を採用すると、種々の寸法のオブジェクトを見やすい寸法で表示することができるとともに、規格化によってさらに見やすい表示画面が表示されることになる。
【０２８９】
次にオブジェクト間をつなぐ配線の表示方法について説明する。
【０２９０】
図４２は、配線の表示方法に特徴を持つ表示画像例を示す図である。
【０２９１】
表示画面１０２ａにはオブジェクト２１６〜２１９が表示されており、出力端子２２０と入力端子２２１が配線２２２で結ばれている。ここで、出力端子は、そのオブジェクトのデータあるいは指令（メッセージ）を他のオブジェクトに向けて出力することを示しており、入力端子は、他のオブジェクトのデータあるいは指令（メッセージ）を受け取ることを示している。
【０２９２】
配線２２２は、出力端子２２０から入力端子２２１に向かう向きの情報を持った線であり、データあるいは指令流れの向きが、その配線を構成する短かい線分毎に繰り返し表示されている。
【０２９３】
このような配線の表示方法を採用すると、その配線で結ばれるべきオブジェクトの一方もしくは双方が表示画面１０２ａからはみ出している場合であってもデータあるいは指令の流れる方向を一見して理解することができる。
【０２９４】
図４３は、配線の表示方法の他の例を示す図である。
【０２９５】
この配線２２３は、中心線２２３ａと、その中心線２２３ａの両脇に沿う縁線２２３ｂとで構成されている。中心線２２３ａと縁線２２３ｂは互いに異なる表示態様、例えば互いに異なる色相、明度、あるは彩度の線である。
【０２９６】
このような中心線２２３ａと縁線２２３ｂとからなる配線２２３を採用し、２本の配線２２３が交差する場合において、それら２本の配線が互いに異なるデータもしくは制御の流れを表わすものである場合は、図４３（Ａ）に示すように一方の配線の中心線を他方の配線の縁線に接する位置もしくは近接する位置（この実施形態では接する位置）で分断して立体交差のように表示する。一方、それら２本の配線が同一のデータもしくは制御の流れを表わす配線である場合は、図４３（Ｂ）に示すように、双方の配線の中心線２２３ａどうしが連続するように表示する。このような表示方法を採用すると、交差する配線が相互に接続されているのか、あるいは単に交差しているだけなのかを、容易に判断することができる。
【０２９７】
以上で、本発明のオブジェクト間ネットワーク表示方法の基本的な実施形態についての説明を終了し、以下、本発明のオブジェクト間ネットワーク表示方法の、さらに具体的な実施形態について説明する。
【０２９８】
図４４は、オブジェクトのネットワークを表示するための表示領域を作成する手順の説明図である。図４４（Ａ）では表示画面の縦と横が４分割によって格子が作成されている。図４４（Ｂ）では作成した格子のひと升に対し、縦横とも５０％の長さで構成される領域をオブジェクトを配置する領域とし、これを升目の中央に位置するように構成されている。図４４（Ｂ）では画面を等分割し、オブジェクトの領域を升目の中心に位置させたが、升目の幅を指定してもよく、図４４（Ｃ）のようにオブジェクトの領域を升目の角に位置させてもよい。
【０２９９】
図４５は、ユーザにより表示画面上にオブジェクトが配置されているときの様子を示す図、図４６はユーザにより、表示画面上に配置されたオブジェクト間の配線が行われているときの様子を示す図である。
【０３００】
図４５に示すように、ユーザがオブジェクト２２４を配置するとき、本実施形態では、ユーザにより配置されたオブジェクト２２４は、その配置位置に一番近い、オブジェクト配置専用の領域２２５に、自動的に位置決めされる。従って、ユーザはオブジェクトを適当に配置するだけで整然と並べられたオブジェクトの配置が得られる。また、本実施形態では、図４６（Ａ）に示すように、ユーザはオブジェクト２２６とオブジェクト２２７の端子間を直線的に結ぶ操作２２８を行うだけで、図４６（Ｂ）に示すように、ネットワークの配線を表示する領域２０４の中で自動的に配線２２９が形成される。従って、オブジェクトと配線が重なるようなことがなく、ユーザに見やすいネットワークを表示することが可能となる。
【０３０１】
図４７は、サブネットワーク表示前（Ａ）および表示後（Ｂ）のオブジェクト間ネットワークの表示画面例を示す図、図４８は、図４７（Ａ）の表示から図４７（Ｂ）の表示への変更の手順を示すフローチャートである。
【０３０２】
表示画面上に図４７（Ａ）の画像が表示されている段階で、例えば図示しないマウス等を操作してサブネットワークを有するオブジェクトを指定し（ステップ４８＿１）、さらにそのサブネットワークを表示するよう指定する（ステップ４８＿２）。すると画像表示装置内では、選択したオブジェクトの位置する升目とその上下左右に並ぶ格子を、選択したオブジェクトの升目の左上の角を起点としてサブネットワークの表示に必要な領域分縦横に拡大し（ステップ４８＿３）、この拡大に伴って、上下左右に並ぶオブジェクトの変形と配線の延長を行い（ステップ４８＿４）、サブネットワーク表示用に拡大した升目内に新たな格子を形成してそこにサブネットワークを表示し（ステップ４８＿５）、さらに、サブネットワークのオブジェクトと周囲のネットワークのオブジェクトとを接続する（ステップ４８＿６）。
【０３０３】
このような手順により、図４７（Ａ）に示す画像から図４７（Ｂ）に示す画像への変換が行われる。尚ここでは升目の拡大起点を升目の左上の角としているが、他の角であってもよく、あるいは升目の中心であってもよい。
【０３０４】
図４９は、サブネットワーク表示手順の説明図であり、図４９（Ａ）はサブネットワーク表示前のオブジェクト間ネットワークを示した図、図４９（Ｂ）はサブネットワークの拡大表示と拡大した升の上下左右に台形の升目を作成した状態を示した図、図４９（Ｃ）はサブネットワークの拡大表示と周囲のオブジェクトの升目を変形してネットワーク全体を画面内に表示した状態を示した図である。  また、図５０は、サブネットワーク表示手順を示すフローチャートである。
【０３０５】
図５０に示すように、例えばマウス等の操作子を操作して、サブネットワークを有するオブジェクトを選択し（ステップ５０＿１）、そのサブジェクトに対応するサブネットワークを表示するよう指定する（ステップ５０＿２）。すると画像表示装置内では、以下の手順で、図４９（Ａ）に示す画像から図４９（Ｃ）に示す画像への変換が行われる。
【０３０６】
先ず、ステップ５０＿３においてサブネットワークが表示画面に収まるか否かが判定され、収まらないときは図４９（Ａ）の画像から図４９（Ｂ）の画像への変換は行わない。サブネットワークが表示画面内に収まると判定されると、ステップ５０＿４に進み、選択したオブジェクトの位置する升目の中心（図４９（Ａ）参照）を起点として、その升目をサブネットワークの表示に必要な領域分、縦横に拡大する。
【０３０７】
次いで、図４９（Ｂ）に示すように、拡大された升目の角から升目の上下左右の画面端の升目の角へ直線を引き、台形を作る（ステップ５０＿５）。さらに、その台形を必要な分割数で分割し、台形の升目を作成する（ステップ５０＿６）。次いで、台形の升目の角から画面端の升目の角へ直線を引き、残りの升目を作成する（ステップ５０＿７）。さらに升目が変形されたことに伴うオブジェクトの変形と配線を行う（ステップ５０＿８）。最後に、サブネットワークのオブジェクトと周囲のネットワークのオブジェクトを接続する（ステップ５０＿９）。
【０３０８】
このような手順により、図４９（Ａ）に示す画像から図４９（Ｃ）に示す画像への変換が行われる。
【０３０９】
尚、ここではサブネットワークの上下左右の升目を台形にしているが、曲線を使った升目にしてもよい。
【０３１０】
図５１は、オブジェクトを表示する表示領域を１つもしくは複数の連結された升目で形成した例を示す模式図である。ここでは、オブジェクトの端子の数によって使用する升目の数を変更している。図５１（Ａ）は１升目を１つ使用した場合であって最大１２端子、図５１（Ｂ）は２升目を２つ使用した場合で最大３０端子、図５１（Ｃ）は４升目を４つを使用した場合であって最大４８端子のオブジェクトを表現している。端子数のより多いオブジェクトに対しては使用する升目の数を増やして対応することができる。
【０３１１】
図５２は、配線中（Ａ）および配線後（Ｂ）の配線の表示方法の例を示す模式図である。
【０３１２】
図５２（Ａ）中、画面１はオブジェクト１（ｏｂｊ１）の出力端子からオブジェクト２（ｏｂｊ２）の入力端子へ配線をしている途中を示している。画面１からはオブジェクト１が見えなくなっているが、引出した線の形状から、接続すべき端子は入力端子であることが判断できる。画面２についても同様に、オブジェクト４（ｏｂｊ４）の入力端子からオブジェクト３（ｏｂｊ３）の出力端子に配線する場合、画面２からオブジェクト４が見えなくなっても、線の形状から、接続すべき端子は出力端子であることがわかる。図５２（Ｂ）は配線終了後のネットワークを示しており、配線は通常の実線に変更されている。ここでは、配線が全て終了した時点で通常の実線に変更しているが、１つの配線が終了する毎に変更してもよい。
【０３１３】
図５３は配線の表示例を示す模式図、図５４は、図５３に示す配線を描く手順を示すフローチャートである。
【０３１４】
ここでは、図４３を参照して説明した、中心線とを緑線とからなる配線が採用されており、ユーザが接続すべき出力端子と入力端子を選択すると、図５４に示す手順で自動配線が行なわれる。
【０３１５】
ユーザが、接続すべき出力端子と入力端子を選択すると（ステップ５４＿１）、先ず出力端子側に縦レーンＡを作成し（ステップ５４＿２）、出力端子から縦レーンＡまで出力端子の横レーンを線で上書きする（ステップ５４＿３）。この上書きにより、表示画面上には、上書きされた部分について配線が表示される。ステップ５４＿４では、入力端子と出力端子が対向するか否かが判定される。入力端子と出力端子が対向するとは、例えば出力端子１と入力端子ｑのように、出力端子と入力端子が互いに向き合った辺に存在することを意味し、例えば出力端子７と入力端子ｒの場合は対向していないものと判断される。
【０３１６】
入力端子と出力端子が対向していると判断された場合は、ステップ５４＿５に進み、入力端子の横レーンまで、縦レーンＡに線を上書きする。例えば出力端子８と入力端子Ｃとの間の配線が既に行なわれ、今回出力端子８と入力端子ｅとの間の配線を行なう場合のように、既に横レーンと繋がっている部分があれば、図４３（Ｂ）に示すような結合処理を行ない（ステップ５４＿５）、入力端子の横レーンに、入力端子まで線を上書きする（ステップ５４＿６）。
【０３１７】
ステップ５４＿４において入力端子と出力端子が対向していないと判定されると、ステップ５４＿７に進んで、入力端子側に縦レーンＢを作成し、さらにステップ５４＿８においてオブジェクトに挟まれていない横レーンＣを作成し、さらにステップ５４＿９において横レーンＣまで縦レーンＡに線を上書きする。ここで、既に横レーンと繋がっている部分があれば結合処理を行なう。
【０３１８】
さらにステップ５４＿１０に進んで横レーンＣを縦レーンＢまで線を上書きし、ステップ５４＿１１において入力端子の横レーンまで縦レーンＢに線を上書きする。既に横レーンと繋がっている部分があれば結合処理を行なう。
【０３１９】
その後ステップ５４＿６に進んで、入力端子の横レーンに、入力端子まで線を上書きする。
【０３２０】
図５５〜図５７は、配線手順の他の例を示すフローチャート、図５８〜図６２、および図６３は図５５〜図５７に示す配線手順に従って配線を行なった結果を示す模式図である。ここに示す配線手順を採用すると、図５４に示す配線手順を採用した場合と異なり、不揃いの形状のオブジェクトが存在していても、それを回避して自動配線することができる。
【０３２１】
図５５に示すように、接続すべき出力端子と入力端子を選択すると（ステップ５５＿１）、出力端子のある配線領域に、出力端子に直角なレーン１（図５８〜図６２参照）を設け（ステップ５５＿２）、出力端子のレーンであるレーン２（図５８〜図６１参照）上を、出力端子からレーン１まで線を引く（ステップ５５＿３）。次に、出力端子と入力端子が対向するか否か判定される（ステップ５５＿４）。図５８〜図６１のうちの図５８に示すように出力端子と入力端子が対向する場合、ステップ５５＿５に進み、レーン１とレーン２との交点ａから入力端子のレーンであるレーン３まで線を引き、さらにレーン１とレーン３との交点である交点ｂから入力端子まで線を引く（ステップ５５＿６）。これにより、図５８のように出力端子を入力端子が対向する場合の配線が完了する。
【０３２２】
ステップ５５＿４において出力端子と入力端子が対向していないと判定された場合、ステップ５５＿７に進み、レーン１とレーン２との交点ａから、レーン１上を、入力端子のあるオブジェクトの方向へ線を引く。この線を引きながら、その線が既存のオブジェクトとぶつかったか否か（図５６ステップ５６＿１）、その線が入力端子を持つオブジェクトの配線領域に到達したか否か（ステップ５６＿２）、その線が入力端子の配線領域に到達したか否か（ステップ５６＿３）、およびその線が入力端子のレーンであるレーン３と直角の位置まで到達したか否か（ステップ５６＿４）が判定される。
【０３２３】
ステップ５６＿１において既存のオブジェクトにぶつかったことが判定されると、ステップ５６＿１０に進み、図６３（Ａ）に示すように、その線の現在の先端が存在する位置の配線領域に線に直角なレーンＡを設けてその線と接続し、さらに、入力端子に近い配線領域にその線に平行のレーンＢを設けて、レーン１からレーンＢまで、レーンＡに沿って線をつなぎ（ステップ５６＿１１）、レーンＡとレーンＢとの交点ｋから入力端子のあるオブジェクトの方向へ、レーンＢに沿って線を引く（５６＿１３）。
【０３２４】
ステップ５６＿２は、入力端子を持つオブジェクトの領域（オブジェクト自身の配置領域だけでなくそのまわりの配線領域も含む。例えば図５８における、入力端子を持つオブジェクトの領域とは、部分領域ｐ，ｑ，ｒ，ｓ，ｕ，ｖ，ｗ，ｘの全てを指す）を上下および左右に延ばした十字の領域内まで、レーン１に沿って線を引いた段階で判定する。このステップ５６＿２において、その線が入力端子を持つオブジェクトの配線領域（図５８の例では部分領域ｐ，ｑ，ｒ，ｓ，ｕ，ｖ，ｗ，ｘを指す）に到達していないときは、ステップ５６＿１２に進み、図６３（Ｃ）に示すように、線の先端が現在存在する位置の配線領域に、その線に直角なレーンＣを設けて線をつなぎ、ステップ５６＿１３において、その交点ｋからレーンＣに沿って入力端子のあるオブジェクトの方向ヘ線を引く。
【０３２５】
ステップ５６＿３において線が入力端子の配線領域（図５８に示す例では部分領域ｐ，ｓ，ｖが、入力端子の配線領域に相当する）に到達していないと判定されたときは、図５７のステップ５７＿１に進む。この場合については後述する。  ステップ５６＿４において線と入力端子のレーン３とが直角か否か判定され、直角の場合、図５９に示すように、線をレーン３まで延長し（ステップ５６＿５）、レーン３との交点Ｃからレーン３上を入力端子まで線を引く（ステップ５６＿６）。以上により、例えば図５９に示す配線が完了する。
【０３２６】
一方、ステップ５６＿４において、線と入力端子のレーン３とが直角ではないと判定された場合、図６０に示すように、入力端子の配線領域に、線に直角なレーン４を設け（ステップ５６＿７）、交点ｄからレーン３まで線を引き（ステップ５６＿８）、交点ｅから入力端子まで線を引く（ステップ５６＿９）。以上により例えば、図６０に示す配線が完成する。
【０３２７】
ステップ５６＿３において線が入力端子の配線領域に到達しないと判定されると、図５７のステップ５７＿１に進み、線と入力端子のレーン３とが直角か否か判定される。直角であると判定されると、図６１に示すように、現在の配線領域にレーン５を設け（ステップ５７＿２）、入力端子の配線領域にレーン６を設け（ステップ５７＿３）、交点ｆからレーン５に沿ってレーン６まで線を引き（ステップ５７＿４）、交点ｇからレーン３まで線を引き（５７＿５）、交点ｈから入力端子まで線を引く（ステップ５７＿６）。これにより、例えば図６１に示すような配線が完成する。
【０３２８】
ステップ５７＿１において線と入力端子のレーン３が直角ではないと判定されると、図６２に示すように、入力端子の配線領域に直に直角なレーン７を設け（ステップ５７＿７）、線を交点ａからレーン７まで延長し（ステップ５７＿８）、交点ｉからレーン３まで線を引き（ステップ５７＿９）、現在の配線領域に線に直角なレーンを設けて線と接続し（ステップ５７＿１０）、交点ｊから入力端子に線を引く（ステップ５７＿１１）。これにより、例えば図６２に示すような配線が完成する。
【０３２９】
図５５〜図５７の配線手順を踏むと、図６３（Ａ）〜（Ｄ）の各オブジェクト配置状態の場合も、そこに示す配線が完成する。
【０３３０】
以上説明したとおり、本発明のオブジェクト間ネットワーク表示表法の実施形態によれば、理解しやすいオブジェクト間のネットワークを表示することができ、ユーザの作業能率の向上に大きく寄与することができる。
【０３３１】
以上で、図２に示すオブジェクトウェアプログラミングシステム１２０のオブジェクト間配線エディタ部１２２およびその周辺部に関連した実施形態のうち、図１に示すコンピュータシステム１００の画像表示部１０２の表示画面１０２ａへのオブジェクト間ネットワークの表示方法に関する実施形態の説明は終了し、次いで、そのオブジェクト間配線エディタ部１２２およびその周辺部における、プログラミングに関する実施形態について説明する。このオブジェクト間配線エディタ部１２２におけるプログラミングは、表示画面上に、これまで説明したようなオブジェクト間ネットワークを表示しておき、その表示を見ながら、オブジェクト間を‘配線する’ことにより行なわれる。
【０３３２】
前述したように、ソフトウェアの再利用性や実行速度に問題を残しつつも、従来よりオブジェクト指向プログラミングという考え方が存在し、オブジェクトどうしの接続関係を記述するために、表示画面上にオブジェクトを模式的に表示しそれらのオブジェクト間を‘配線する’という考え方が存在していた。そのような‘配線’においては、以下のような問題がある。
【０３３３】
オブジェクトが階層化されている場合において、異なる階層間のオブジェクトを直接接続することができず下層のオブジェクト（これを「子オブジェクト」と称する）を包含する一段上層のオブジェクト（これを「親オブジェクト」と称する）を経由して同一の階層内でのみ配線を行なうことができるようにした方式の場合、接続しようとするオブジェクトが離れた階層にあったときに、接続のために中継用の端子を多数作ることになり、配線に多くの手順を必要とし煩らわしい。
【０３３４】
一方、オブジェクトが階層化されている場合において、異なる階層内のオブジェクトを直接に接続することを可能にした方式の場合、階層を無視した配線図となり、見にくく、全体としての配線構造を把握しにくくなってしまうという問題がある。
【０３３５】
また、一旦配線したオブジェクトを他のオブジェクトに置き換える必要を生じたとき、この置き換えを実現するためには、置き換え前のオブジェクトの配線を外し、置き換え後のオブジェクトに対しあらためて配線し直す必要があり、置き換えのために多くの手順を必要とすることになる。
【０３３６】
ある階層に一旦配置して配線したオブジェクトを他の階層、例えば一段下の階層に移動させる場合も同様であり、移動前のオブジェクトの配線を外し、そこに親オブジェクトを配置して配線し、移動したオブジェクトをその親オブジェクトの子オブジェクトとして配置し、その親オブジェクトと子オブジェクトとの間を配線するといった多くの手順が必要となる。
【０３３７】
さらに、従来の方式では、オブジェクト間配線が複雑になるにつれ、オブジェクト間の接続関係が配線図表示からは理解しにくくなるという問題がある。特に、処理の依頼の流れをあらわすバス（このバスを「インストラクションバス」と称する）が複数のオブジェクトに分岐して接続されているような場合に、それら複数のオブジェクトどうしでの処理の実行順序を配線図表示から把握することは困難であり、したがってその実行順序をその配線図上で変更することも困難である。
【０３３８】
以下に説明する実施形態は、上述のオブジェクト間の配線に伴う問題に鑑み、配線作業を容易にするための手法に関する実施形態である。
【０３３９】
図６４は、本発明のオブジェクト指向プログラミング支援装置およびオブジェクト指向プログラミング用プログラム記憶媒体の基本構成図である。
【０３４０】
オブジェクト指向プログラミング支援装置３００は、データと処理とを有するオブジェクト複数を指示に応じて相互に結合するオブジェクト指向プログラミングを支援する装置であって、表示手段３０１と、オブジェクト結合手段３０２と、階層構造構築手段３０３と、操作子３０４とを備えている。
【０３４１】
表示手段３０１は、オブジェクト本体をあらわすブロックと、自オブジェクト内部のデータを他オブジェクトに渡すためのデータ出力端子と、他オブジェクトのデータを自オブジェクトが受け取るためのデータ入力端子と、他オブジェクトに向けて処理を依頼するメッセージを発行するためのメッセージ端子と、他オブジェクトからの処理依頼を受け取ってメソッドを実行するためのメソッド端子とで表現されたオブジェクトであって、１つのオブジェクトの内部に１つもしくは複数のオブジェクトの存在を許容する階層構造で表現されたオブジェクトを表示するとともに、複数のオブジェクトの端子間を結ぶ配線を表示する手段であり、図１に示すコンピュータシステム１００では、画像表示部１０２と、その画像表示部１０２の表示画面１０２ａ上に上記のオブジェクトや配線を表示するためのソフトウェアと、そのソフトウェアを実行するＣＰＵ等によりこの表示手段３０１が構成されている。
【０３４２】
また、オブジェクト結合手段３０２は、複数のオブジェクトの端子間を配線で結ぶ指示に応じて、複数のオブジェクト間の、指示に応じた配線に対応した結合構造を構築する手段であり、図１に示すコンピュータシステム１００では、この結合構造を構築するためのソフトウェアと、そのソフトウェアを実行するＣＰＵ等により構成されている。
【０３４３】
また、階層構造構築手段３０３は、オブジェクトの階層構造を構築する手段であり、図１に示すコンピュータシステム１００では、この階層構造を構築するためのソフトウェアと、そのソフトウェアを実行するＣＰＵ等により構成されている。
【０３４４】
さらに、操作子３０４は、操作者（ユーザ）による操作に応じて、オブジェクト結合手段３０２に対しオブジェクト間を結ぶ配線を指示入力するとともに、階層構造構築手段３０３に対し、オブジェクトの、階層構造上の配置位置を指示入力する操作子であり、図１に示すコンピュータシステム１００では、キーボード１０３やマウス１０４およびそれらキーボード１０３やマウス１０４の操作をコンピュータシステム内部に取り込むためのソフトウェア等により構成されている。
【０３４５】
なお、ここではオブジェクト結合手段３０２を実現するためのソフトウェア自体もオブジェクト結合手段と称し、これと同様に階層構造構築手段３０３を実現するためのソフトウェア自体も階層構造構築手段と称し、これらソフトウェアとしてのオブジェクト結合手段３０２と階層構造構築手段３０３とを合わせたプログラムが本発明にいうオブジェクト指向プログラミング用プログラムに相当し、このオブジェクト指向プログラミング用プログラムが格納された記憶媒体３１０が、本発明にいうオブジェクト指向プログラミング用プログラム記憶媒体に相当する。図１に示すコンピュータシステム１００では、このようなオブジェクト指向プログラミング用プログラムが記憶された状態の記憶部１０５が本発明にいうオブジェクト指向プログラミング用プログラム記憶媒体の一形態に相当し、そのオブジェクト指向プログラミング用プログラムがＭＯ１１０に格納されているときは、そのオブジェクト指向プログラム用プログラムが格納された状態にあるＭＯ１１０も、本発明にいうオブジェクト指向プログラミング用プログラム記憶媒体に相当する。
【０３４６】
図６５は、オブジェクトの内包関係の一例を示す概念図、図６６は、オブジェクトどうしの、階層構造を規定する接続関係を示す模式図である。
【０３４７】
図６５に示すように、全体を１つのオブジェクトと考え、これをオブジェクトＡとする。このオブジェクトＡの中には、３つのオブジェクト、すなわち、オブジェクトＢ、オブジェクトＣ、およびオブジェクトＤが存在する。さらに、オブジェクトＣの中には、オブジェクトＥ、オブジェクトＦ、およびオブジェクトＧが存在する。さらに、オブジェクトＦの中には、オブジェクトＨが存在する。
【０３４８】
これを階層構造であらわすと、図６６に示すようにあらわされる。このようにあらわされたオブジェクトの階層構造を、ここでは「オブジェクトツリー」と称する。
【０３４９】
図６６において水平方向に並ぶオブジェクトは同一の階層に配置されていることを意味し、上下方向に接続されたオブジェクトは、上の階層に配置されたオブジェクトが親オブジェクト、下の階層に配置されたオブジェクトが、その親オブジェクトに対する子オブジェクトであることを意味している。
【０３５０】
図６７は、１つのオブジェクトの、他のオブジェクトへの接続関係を定めるポインタを示した模式図である。
【０３５１】
各オブジェクトには、親子関係を規定するポインタとして、‘上階層へのポインタ’と‘下階層へのポインタ’とからなる‘上下階層へのポインタ’が存在し、また、同一の階層にあるオブジェクトどうしを接続するポインタとして‘ＦＲＯＭ’と‘ＴＯ’との２つのポインタからなる‘同階層へのポインタ’が存在する。また、オブジェクト間のデータやインストラクションの流れをあらわす配線用のポインタとして、‘ＩＮ’と‘ＯＵＴ’との２つのポインタからなる‘バスへのポインタ’と、‘インストラクション’と、‘データ’と、‘タグインストラクション’と、‘タグデータ’との４つのポインタからなる‘ケーブルへのポインタ’が存在する。
【０３５２】
上下階層へのポインタを構成する２つのポインタである上階層へのポインタおよび下階層へのポインタは、例えば図６６に示すオブジェクトＡの場合、それぞれ配線エディタへのポインタおよびオブジェクトＢへのポインタである。
【０３５３】
また、同階層へのポインタを構成する２つのポインタである‘ＦＲＯＭ’と‘ＴＯ’は、例えば図６６に示すオブジェクトＣの場合、それぞれ、オブジェクトＢへのポインタおよびオブジェクトＤへのポインタである。
【０３５４】
このようにして、上下階層へのポインタと同階層へのポインタにより、例えば図６６に示すような階層構造が構成される。
【０３５５】
図６８は、図６７に示す‘バスへのポインタ’に接続されるバス要素リストを構成する１つのバス要素を示す模式図、図６９は、図６７に示す‘ケーブルへのポインタ’に接続されるケーブル要素リストを構成するケーブル要素を示す模式図である。図７０は、オブジェクトの間の配線例を示す模式図である。
【０３５６】
バス要素リストに並ぶ各バス要素は、そのオブジェクトの、他オブジェクトと接続されるバス（端子）を定義するものであり、ケーブル要素リストに並ぶ各ケーブル要素は、そのオブジェクトとを親オブジェクトとしたときの子オブジェクトどうしの端子どうしの結合関係（配線）を定義するものである。
【０３５７】
図６７には、バスへのポインタを構成するポインタとして‘ＩＮ’と‘ＯＵＴ’との２つのポインタが示されているが、このうち‘ＩＮ’には、他オブジェクトからこの図６７に示すオブジェクトにデータもしくはメッセージを入力するバスを定義するバス要素リストが接続され、‘ＯＵＴ’には、この図６７に示すオブジェクトから他オブジェクトに向けてデータもしくはメッセージを出力するバスを定義するバス要素リストが接続される。
【０３５８】
図６７には、バスへのポインタを構成する２つのポインタ‘ＩＮ’と‘ＯＵＴ’のうち‘ＩＮ’に２つのバス要素ＢＵＳ１，ＢＵＳ２からなるバス要素リストが接続されている。具体的には‘ＩＮ’にはバス要素ＢＵＳ１が接続され、バス要素ＢＵＳ１にはバス要素ＢＵＳ２が接続されている。また‘ＯＵＴ’には、２つのバス要素ＢＵＳ３，ＢＵＳ４からなるバス要素リストが接続されている。具体的には、‘ＯＵＴ’に、バス要素ＢＵＳ３が接続され、バス要素ＢＵＳ３にはバス要素ＢＵＳ４が接続されている。
【０３５９】
各バス要素は、図６８に示すように、‘本体オブジェクトへのポインタ’と、‘本体オブジェクトのバスへのポインタ’と、‘次のバス要素（ＢＵＳ）へのポインタ’と、‘その他のデータ’とから構成されている。尚ここでは、オブジェクトの端子を‘バス’と称している。
【０３６０】
図７０に示す構造の場合であって、図６７に示すオブジェクトが図７０のオブジェクトＡである場合に、バス要素ＢＵＳ１は、図７０に示すオブジェクトＡの、例えば‘バス１’に対応し、図６８に示すバス要素のうちの‘本体オブジェクトへのポインタ’は、図７０に示すオブジェクトＡに内包されるオブジェクトＢとオブジェクトＣのうち、オブジェクトＡのバス１と接続されるオブジェクト（ここではオブジェクトＢ）へのポインタである。また、バス要素ＢＵＳ１における‘本体オブジェクトのバスへのポインタ’は、本体オブジェクトであるオブジェクトＢの、オブジェクトＡのバス１と接続されるバス（図７０の場合、オブジェクトＢのバス１）へのポインタである。また、バス要素ＢＵＳ１を構成する‘次のＢＵＳ（バス要素）へのポインタ’は、図６７における要素ＢＵＳ１の場合、バス要素ＢＵＳ２へのポインタである。さらにそのバス要素ＢＵＳ！を構成する‘その他のデータ’には、そのバス要素に対応するバス（ここに示す例では図１０に示すオブジェクトＡのバス１）が、データを授受するためのバスであるか、メッセージ（インストラクション）を授受するためのバスであるかの区別が含まれている。尚、前述したように、データもしくはインストラクションを受け取る側のバス（ＩＮ）であるか、データもしくはインストラクションを出力する側のバス（ＯＵＴ）であるかは、図６７に示すように、‘バスへのポインタ’が‘ＩＮ’と‘ＯＵＴ’とに分かれていることで区別されている。
【０３６１】
図６７には、‘ケーブルへのポインタ’を構成する４つのポインタ、すなわち、‘インストラクション’、‘データ’、‘タグインストラクション’、‘タグデータ’が存在し、それぞれにケーブル要素リストが接続される。
【０３６２】
ただし、図６７では、図示の煩雑さを避けるため、‘データ’に接続されたケーブル要素リストのみが示されており、‘データ’には直接的にはケーブル要素ＣＡＢＬＥ１が接続され、そのケーブル要素ＣＡＢＬＥ１にはケーブル要素ＣＡＢＬＥ２が接続され、そのケーブル要素ＣＡＢＬＥ２にはケーブル要素ＣＡＢＬＥ３が接続されている。
【０３６３】
‘ケーブルへのポインタ’は、親オブジェクトが自分の子オブジェクトどうしのバスの接続状態（配線）を管理するものであり、図７０に示す例では、オブジェクトＢとオブジェクトＣとの間のバスどうしの配線を管理している。尚、親オブジェクトであるオブジェクトＡと、子オブジェクトであるオブジェクトＢとの間、もしくは親オブジェクトＡと子オブジェクトであるオブジェクトＣとの間の配線は、上述したように、‘バスへのポインタ’に接続されたバス要素リストが管理している。
【０３６４】
ケーブルへのポインタを構成する４つのポインタ‘インストラクション’，‘データ’，‘タグインストラクション’，‘タグデータ’は、それぞれ、メッセージ（インストラクション）の流れを表わす配線、データの流れをあらわす配線、前述した、実行中に動的に形成されるインストラクションの流れをあらわす配線、および、実行中に動的に形成されるデータの流れをあらわす配線を管理している。
【０３６５】
図６９に示すように１つのケーブル要素ＣＡＢＬＥには、２つのターミナル要素ＴＥＲＭＩＮＡＬが付属している。ケーブル要素ＣＡＬＢＥは、２つのターミナル要素ＴＥＲＭＩＮＡＬのうちの１番目のターミナル要素へのポインタと、次のケーブル要素へのポインタとから構成されている。またターミナル要素ＴＥＲＭＩＮＡＬは、‘オブジェクトへのポインタ’と、‘そのオブジェクトのバスへのポインタ’と、‘次のターミナル要素へのポインタ’とから構成されている。
【０３６６】
図６９は、図７０に示す、オブジェクトＢのバス２とオブジェクトＣのバス１とを結ぶ配線を管理するケーブル要素であり、１番目のターミナル要素には、オブジェクトＢへのポインタと、オブジェクトＢのバス２へのポインタとが格納され、２番面のターミナル要素には、オブジェクトＣへのポインタと、そのオブジェクトＣのバス１へのポインタとが格納されている。これにより、図７０に示すオブジェクトＢのバス２とオブジェクトＣのバス１とが配線されていることになる。尚、２つのターミナル要素のうちの１番目のターミナル要素は、データないしインストラクションの出力側のバスに対応し、２番目のターミナル要素は、データないしインストラクションの入力側のバスに対応している。
【０３６７】
この図６９に示すケーブル要素は、前述したように、オブジェクトＢとオブジェクトＣとの共通の親オブジェクトであるオブジェクトＡが管理している。
【０３６８】
以上で、オブジェクトの階層構造を決めるためのポインタの管理、オブジェクトのバスを決めるためのポインタの管理、およびオブジェクトのバスどうしを接続する配線を決めるためのポインタの管理の一般的な説明を終え、次に、本発明のオブジェクト指向プログラミング支援装置および本発明のオブジェクト指向プログラミング用プログラム記憶媒体に格納されたオブジェクト指向プログラム用プログラムの具体的な実施形態について説明する。
【０３６９】
本発明のオブジェクト指向プログラミング支援装置のうちの第１のオブジェクト指向プログラミング支援装置、および本発明のオブジェクト指向プログラミング用プログラム記憶媒体のうちの第１のオブジェクト指向プログラミング用プログラム記憶媒体に格納されたオブジェクト指向プログラミング用プログラムは、図６４に示す階層構造構築手段３０３が、操作子３０４からの指示に応じて、指定されたオブジェクトである本体オブジェクトを複写して分身オブジェクトを作成し、その分身オブジェクトを、その本体オブジェクトが配置され階層とは異なる階層に配置する手段を有し、オブジェクト結合手段３０２が、分身オブジェクトが配置された階層における配線において、操作子３０４からの、分身オブジェクトと他オブジェクトとの間の配線の指示を受け付けるとともに、その分身オブジェクトと、その分身オブジェクトに対応する本体オブジェクトとを１つのオブジェクトとした結合構造を構築するものである。
【０３７０】
図７１は分身オブジェクトの概念図、図７２は、図７１に示すオブジェクトの階層構造（オブジェクトツリー）を示す模式図である。
【０３７１】
配線エディタにオブジェクトＡが接続されており、そのオブジェクトＡの下階層にオブジェクトＢが接続され、オブジェクトＢには、同階層にオブジェクトＣが接続され、オブジェクトＣには、その下階層にオブジェクトＤが接続され、オブジェクトＤには、その同階層にオブジェクトＥが接続されている。
【０３７２】
ここで、異なる階層に配置されているオブジェクトＢとオブジェクトＥとを配線で接続する場合に、オブジェクトＥの親オブジェクトであるオブジェクトＣに接続のためのバス（端子）を形成し、そのオブジェクトＣの端子と、オブジェクトＥのバスとを接続し、さらにそのオブジェクトＣの端子とオブジェクトＢの端子とを接続してもよいが、これでは配線に手間がかかるため、ここでは、オブジェクトＢやオブジェクトＣが配置された階層に、それとは別の階層に配置されたオブジェクトＥを本体オブジェクトとする分身オブジェクトＥ’が配置され、オブジェクトＢや分身オブジェクトＥ’が配置された階層上で、オブジェクトＢのバスと分身オブジェクトＥ’のバスとが配線される。
【０３７３】
図７３は、分身オブジェクトの作成処理を示すフローチャートである。
【０３７４】
先ず、指定されたオブジェクト（ここではオブジェクトＥ）について、オブジェクトを複写して分身オブジェクトＥを作成する（ステップ７３＿１）。ただし、ここではオブジェクト間の配線を目的としており、オブジェクトＥを構成するプログラムの実体までする必要はなく、オブジェクトの表示および配線に必要な情報のみが複写される。このようにして、本発明にいう「複写」は、オブジェクトの表示および配線に必要な情報の複写を意味する。
【０３７５】
次に、オブジェクトＥの全てのバスについて、
１．分身オブジェクトＥ’にコピーバス（コピーバス要素）を作成し、
２．作成されコピーバス要素に、本体オブジェクトＥへのポインタ、および本体オブジェクトＥの対応するバスへのポインタ
を書き込む（ステップ７３＿２）
図７４は、本体オブジェクトと分身オブジェクトとの接続関係を示す模式図である。
【０３７６】
分身オブジェクトＥ’には、本体オブジェクトＥの‘バスへのポインタ’に並ぶバス要素ＢＵＳ１，ＢＵＳ２，…がそのままの配列でコピーされ、そのコピーされた分身オブジェクトＥ’のバス要素ＢＵＳ１，ＢＵＳ２，…には、それぞれ、本体オブジェクトＥへのポインタと、本体オブジェクトＥの、対応するバスへのポインタが格納される（図６８参照）。このようにして分身オブジェクトを作成した後、図７１に示すようにオブジェクトＢと分身オブジェクトＥ’との間の配線が指示されると、この配線は、オブジェクトＢと分身オブジェクトＥ’の親オブジェクトであるオブジェクトＡの‘ケーブルへのポインタ’の先にその配線に対応するケーブル要素および２つのターミナル要素が配列される（図６９参照）。
【０３７７】
配線作業が終了し、図２に示すインタプリンタ用配線データファイルに格納するインタプリンタ用配線データを生成する際は、分身オブジェクトＥ’のバス要素リストから本体オブジェクトＥの対応するバス要素が見つけ出され、分身オブジェクトＥ’と本体オブジェクトＥとを１つのオブジェクトとしたオブジェクト間の結合構造が構築される。
【０３７８】
次に、本発明のオブジェクト指向プログラミング支援装置のうちの第２のオブジェクト指向プログラミング支援装置、および本発明のオブジェクト指向プログラミング用プログラム記憶媒体のうちの第２のオブジェクト指向プログラミング用プログラム記憶媒体に格納されたオブジェクト指向プログラミング用プログラムの実施形態について説明する。
【０３７９】
本発明のオブジェクト指向プログラミング支援装置のうちの第２のオブジェクト指向プログラミング支援装置、および本発明のオブジェクト指向プログラミング用プログラム記憶媒体のうちの第２のオブジェクト指向プログラミング用プログラム記憶媒体に格納されたオブジェクト指向プログラミング用プログラムは、図６４に示すオブジェクト結合手段３０２が、操作子３０４からの、オブジェクトの置き換えの指示に応じて、置き換え前のオブジェクトの、他オブジェクトとの結合構造を解除して、置き換え前のオブジェクトの他オブジェクトとの結合構造を、置き換え後のオブジェクトに継承させるものであり、階層構造構築手段３０３が、操作子３０４からの、オブジェクトの置き換えの指示に応じて、置き換え前のオブジェクトが配置されていた階層に、その置き換え前のオブジェクトに代えて、置き換え後のオブジェクトを配置するものである。
【０３８０】
図７５は、オブジェクトの置き換え前のオブジェクトの結合関係を示す概念図、図７６は、図７５に示すオブジェクトに関するオブジェクトツリーを示す模式図である。
【０３８１】
配線エディタにオブジェクトＡが接続されており、そのオブジェクトＡの下階層にオブジェクトＢが接続され、オブジェクトＢには同階層にオブジェクトＣが接続され、オブジェクトＣには、やはり同階層にオブジェクトＤが接続されている。また、この階層構造に組み込まれていないオブジェクトＥが存在している。ここで、オブジェクトＣをオブジェクトＥに置き換えるものとする。
【０３８２】
図７７は、オブジェクト置き換え後のオブジェクトの結合関係を示す概念図、図７８は、オブジェクト置き換え後のオブジェクトツリーの一部を示す模式図である。
【０３８３】
オブジェクトＣがオブジェクトＥに置き換えられると、置き換え前のオブジェクトＣの配線がそのままオブジェクトＥに引き継がれ、階層構造上も、オブジェクトＣが配置されていた階層に、そのオブジェクトＣに代えて、オブジェクトＥが配置される。
【０３８４】
図７９は、オブジェクト置き換え処理を示すフローチャートである。
【０３８５】
表示画面１０２ａ（図１参照）に図７５に示すようなオブジェクト間ネットワークを表示しておき、マウス１０４を操作して置き換え後のオブジェクト（ここではオブジェクトＥ）をドラッグ（表示画面１０１ａに表示されたオブジェクトＥにマウスカーソルを合わせてマウスボタンを押し、そのままマウスを動かす操作をいう）してオブジェクトＣに重ねる。オブジェクトＥがドラッグされると、図６４に示すオブジェクト結合手段３０２では、ドラッグされたオブジェクトがオブジェクトＥであることが認識される（ステップ７９＿２）。
【０３８６】
ドラッグされたオブジェクトＥがオブジェクトＣに重ねられてそこにドロップ（マウスボタンを離す操作をいう）すると（ステップ７９＿３）、オブジェクト結合手段３０２では、そのドロップ先のオブジェクトがオブジェクトＣであることが認識される（ステップ７９＿４）。このようにして、ドラッグされたオブジェクトがオブジェクトＥであり、ドロップ先のオブジェクトがオブジェクトＣであることが認識されると、オブジェクトツリーが図７６に示す状態から図７８に示す状態に変更される。
【０３８７】
この変更は、図７６に示すオブジェクトのポインタ群のうち、オブジェクトＢの‘ＴＯ’に、オブジェクトＣへのポインタに代えてオブジェクトＥへのポインタが書き込まれ、オブジェクトＥの‘ＦＲＯＭ’、‘ＴＯ’に、それぞれ、オブジェクトＢへのポインタ、オブジェクトＥへのポインタが書き込まれ、オブジェクトＤの‘ＦＲＯＭ’に、オブジェクトＣへのポインタに代えてオブジェクトＥへのポインタが書き込まれることによって行なわれる。
【０３８８】
次にドロップ先オブジェクトＣの親オブジェクトであるオブジェクトＡのケーブル要素リストからドロップ先オブジェクトＣの配線が検索される（ステップ７９＿６）。
【０３８９】
図８０は、オブジェクトＡに接続されたケーブル要素リストの一部を示す模式図である。
【０３９０】
ここには、ケーブル要素ＣＡＢＬＥａが指し示すターミナル要素にオブジェクトＣのバス３とオブジェクトＤのバス４が接続されていることが記録されている。このようにケーブル要素を順次検索して、ドロップ先オブジェクトＣに接続された配線が見つけられる。
【０３９１】
ドロップ先オブジェクトＣに接続された配線が見つけられると、図８０に示すように、その配線が解除され、その配線が置き換え後のオブジェクトＥの、対応するバスに接続される（ステップ７９＿７）。尚、置き換え後のオブジェクトＥに対応するバスが存在せず配線変更ができなかったときは、表示画面１０２ａにその旨のメッセージが表示され、その配線は消去される。
【０３９２】
次に、本発明のオブジェクト指向プログラミング支援装置のうちの第３のオブジェクト指向プログラミング支援装置、および本発明のオブジェクト指向プログラミング用プログラム記憶媒体のうちの第３のオブジェクト指向プログラミング用プログラム記憶媒体に格納されたオブジェクト指向プログラミング用プログラムの実施形態について説明する。
【０３９３】
本発明のオブジェクト指向プログラミング支援装置のうちの第３のオブジェクト指向プログラミング支援装置、および本発明のオブジェクト指向プログラミング用プログラム記憶媒体のうちの第３のオブジェクト指向プログラミング用プログラム記憶媒体に格納されたオブジェクト指向プログラミング用プログラムでは、図６４に示す階層構造構築手段３０３が、操作子３０４からの、所定の階層に配置されたオブジェクトの中から複数のオブジェクトを指定してそれら複数のオブジェクトを一段下の階層に再配置する旨の指示に応じて、それら複数のオブジェクト相互間の結合構造、およびそれら複数のオブジェクトと、それら複数のオブジェクト以外の他オブジェクトとの間の結合構造が保持されるように、それら複数のオブジェクトが一段下の階層に再配置され、もともとの階層には、それら複数のオブジェクトを内包するオブジェクトが生成されて配置される。
【０３９４】
図８１は、オブジェクト移動前のオブジェクトの結合関係を示す概念図、図８２は、図８１に示すオブジェクトに関するオブジェクトツリーを示す模式図である。
【０３９５】
図８２に示すように、配線エディタにオブジェクトＡが接続されており、そのオブジェクトＡには、その下階層にオブジェクトＢが接続され、そのオブジェクトＢには、そのオブジェクトＢと同階層にオブジェクトＣが接続され、そのオブジェクトＣには、やはり同階層にオブジェクトＤが接続され、そのオブジェクトＤには、やはり同階層にオブジェクトＥが接続されている。
【０３９６】
ここで、図８１に示すようなオブジェクト間ネットワークを表示画面１０２ａに表示し、マウス１０４を操作して、一段下の階層へ移動すべきオブジェクトとしてオブジェクトＣとオブジェクトＤを選択したものとする。
【０３９７】
図８３は、オブジェクト移動後のオブジェクトの結合関係を示す概念図、図８４は、図８３に示すオブジェクトに関するオブジェクトツリーを示す模式図である。
【０３９８】
オブジェクトＢが配置された階層と同じ階層にオブジェクトＦが生成され、オブジェクトＣとオブジェクトＥは、オブジェクトＦを親オブジェクトとする子オブジェクトとして、オブジェクトＦの下階層に配置される。
【０３９９】
また、移動前は図８１に示すようにオブジェクトＢのバス３とオブジェクトＣのバス１とが直接に接続され、オブジェクトＤのバス３とオブジェクトＥのバス１とが直接に接続されていたが、移動後は、図８３に示すように、オブジェクトＢのバス３はオブジェクトＦのバス１と接続され、そのオブジェクトＦのバス１がオブジェクトＣのバス１と接続され、オブジェクトＤとオブジェクトＥとの接続に関しても、オブジェクトＤのバス３はオブジェクトＦのバス２と接続され、オブジェクトＦのバス２がオブジェクトＥのバス１と接続されている。
【０４００】
図８５は、上記のようなオブジェクトの移動および配線替えの処理を示すフローチャートである。
【０４０１】
一段下の階層に移動すべきオブジェクトが選択されると、どのオブジェクト（ここでは図８２に示すオブジェクトＣとオブジェクトＤ）が選択されたかが認識され（ステップ８５＿１）、選択されたオブジェクトと同じ階層に、新オブジェクト（ここの例ではオブジェクトＦ）が作成され（ステップ８５＿２）、選択されたオブジェクト（ここの例ではオブジェクトＣとオブジェクトＤ）が新オブジェクト（オブジェクトＦ）の下に置き換えられる（ステップ８５＿３）。
【０４０２】
図８６は、オブジェクトツリーを変更する様子を示す模式図である。
【０４０３】
上述のステップ８５＿２においてオブジェクトＦが作成されると、オブジェクトＢとオブジェクトＣとの間の接続が断たれてオブジェクトＢとオブジェクトＦが同階層に接続され、オブジェクトＤとオブジェクトＥとの間の接続が断たれてオブジェクトＦとオブジェクトＥが同階層に接続され、オブジェクトＦの下階層にオブジェクトＣが接続される。これにより、図８４に示すオブジェクト移動後のオブジェクトツリーが完成する。
【０４０４】
尚、オブジェクトツリーを変更するためのポインタの変更は、図７８を参照して説明した場合と同様にして行なうことができ、ここでは説明は省略する。
【０４０５】
次に、図８５のステップ８５＿４に示すように、選択されたオブジェクト（ここではオブジェクトＢとオブジェクトＣ）の親オブジェクト（ここではオブジェクトＡ）に接続されたケーブル要素リストから、選択されたオブジェクト（オブジェクトＢとオブジェクトＣ）に接続された配線が検索される（ステップ８５＿４）。
【０４０６】
図８７は、オブジェクトＡに接続されたケーブル要素リストの一部を示す模式図である。
【０４０７】
この図８７には、ケーブル要素ＣＡＢＬＥａに、オブジェクトＣのバス４とオブジェクトＤのバス１が配線されている旨、およびケーブル要素（ＣＡＢＬＥｂに、オブジェクトＤのバス３とオブジェクトＥのバス１とが配線されている旨、示されている。ここで、ケーブル要素ＣＡＢＬＥａに示されるオブジェクトＣのバス４とオブジェクトＤのバス１との配線は、図８１に示すように、一段下の階層に移動するよう選択されたオブジェクト（オブジェクトＢとオブジェクトＣ）どうしの間の配線を代表的に示しており、ケーブル要素ＣＡＢＬＥｂに示されるオブジェクトＤのバス３とオブジェクトＥのバス１との配線は、一段下の階層に移動されるオブジェクト（オブジェクトＤ）と、移動されずに元の階層に残るオブジェクト（オブジェクトＥ）との間の配線を代表的に示したものである。
【０４０８】
図８５のステップ８５＿４において、上記のようなケーブル要素リストの検索が行なわれると、その検索において見つけられた、選択されたオブジェクト（ここの例ではオブジェクトＢとオブジェクトＣ）に接続された配線が、新オブジェクト（オブジェクトＦ）の内部のオブジェクト（オブジェクトＢとオブジェクトＣ）どうしの配線であるか、あるいは、新オブジェクト（オブジェクトＦ）の内部のオブジェクトと外部のオブジェクトとの間の配線であるが判定される（ステップ８５＿５）。この判定において、新オブジェクト（オブジェクトＦ）の内部のオブジェクトどうしの配線（図８７に示すケーブル要素ＣＡＢＬＥａの配線がこれに相当する）であると判定されるとステップ８５＿６に進み、その配線が、もともとの親オブジェクト（オブジェクトＡ）から新オブジェクト（オブジェクトＦ）に移動される。
【０４０９】
図８８は、新オブジェクトへの配線の移動の説明図である。
【０４１０】
オブジェクトＡに接続されているケーブル要素リストの中からケーブル要素ＣＡＢＬＥａが取り外され、オブジェクトＦに接続されるケーブル要素リストに組み込まれる。
【０４１１】
また、図８５のステップ８５＿５において、新オブジェクト（オブジェクトＦ）の内部のオブジェクトと外部のオブジェクトとの配線（図８７に示すケーブル要素ＣＡＢＬＥｂの配線がこれに相当する）であると判定されるとステップ８５＿７に進み、新オブジェクト（オブジェクトＦ）に配線用バスが作成される。
【０４１２】
図８９は、オブジェクトＦに作成された配線用バスの模式図である。
【０４１３】
この図８９では、オブジェクトＦの‘ＯＵＴ’（図６７参照）にバス要素ＢＵＳ２が接続されている。このバス要素ＢＵＳ２は、図８３に示すオブジェクトＦのバス２に相当し、このバス要素ＢＵＳ２は、オブジェクトＤへのポインタと、オブジェクトＤのバス３へのポインタを持っている。すなわち、このバス要素ＢＵＳ２により、図８３に示すように、オブジェクトＦのバス２とオブジェクトＤのバス３との間に配線が形成されている。尚、この図８９に示すバス要素ＢＵＳ２は例示的に示したものであり、図８３に示す配線の場合、オブジェクトＦの‘ＩＮ’にも接続用バス要素が配置されてオブジェクトＦのバス１とオブジェクトＣのバス１との間も配線される。
【０４１４】
図８５のステップ８５＿８では、新オブジェクト（オブジェクトＦ）の内部のオブジェクトに接続されていた配線が、新オブジェクト（オブジェクトＦ）につなぎかえられる。
【０４１５】
図９０は、新オブジェクト（オブジェクトＦ）の内部のオブジェクト（オブジェクトＤ）に接続されていた配線を、オブジェクトＦにつなぎかえる様子を示す模式図である。
【０４１６】
図８７に示すオブジェクトＡのケーブル要素ＣＡＢＬＥｂは、オブジェクトＦの内部のオブジェクトＤのバス３と、オブジェクトＦの外部のオブジェクトＥのバス１との間の配線を示しており、図９０に示すように、オブジェクトＤのバス３がオブジェクトＦのバス２に変更され、これにより、オブジェクトＦのバス２と、オブジェクトＥのバス１との間の配線が形成される。
【０４１７】
尚、図８５、ステップ８５＿４は、必要な回数繰り返し実行される。
【０４１８】
次に、本発明のオブジェクト指向プログラミング支援装置のうちの第４のオブジェクト指向プログラミング支援装置、および本発明のオブジェクト指向プログラミング用プログラム記憶媒体のうちの第４のオブジェクト指向プログラミング用プログラム記憶媒体に格納されたオブジェクト指向プログラミング用プログラムの実施形態について説明する
本発明のオブジェクト指向プログラミング支援装置のうちの第４のオブジェクト指向プログラミング支援装置は、図６４に示す表示手段３０１が、操作子３０４による指示に応じて、指定された１つのメッセージ端子（メッセージ（インストラクション）を出力するバス）に接続されたメソッド端子（メッセージ（インストラクション）を受け取るバス）が複数存在する場合、これら複数のメソッド端子に対応する複数のメソッドの実行順序をあらわすリストを表示する手段を有し、オブジェクト結合手段３０２が、操作子３０４による操作に応じて、表示手段３０１に表示されたリストにあらわれた複数のメソッドの実行順序が変更された結合構造を再構築する手段を有する。
【０４１９】
また、本発明のオブジェクト指向プログラミング用プログラム記憶媒体のうちの第４のオブジェクト指向プログラミング用プログラム記憶媒体に格納されたオブジェクト指向プログラミング用プログラムは、オブジェクト結合手段３０２が、指定された１つのメッセージ端子に接続されたメソッド端子が複数存在する場合の、これら複数のメソッド端子に対応する複数のメソッドの実行順序をあらわすリストを作成する手段と、そのリストにあらわれた複数のメソッドの実行順序の変更指示に応じて、それら複数のメソッドの実行順序が変更された結合構造を再構築する手段とを有するものである。
【０４２０】
図９１は、オブジェクト間の配線の模式図、図９２は、図９１に示す配線を定義している、ケーブル要素リストを示す模式図である。
【０４２１】
図９１に示す例では、オブジェクトＡには、オブジェクトＢ，オブジェクトＣ，オブジェクトＤ，およびオブジェクトＥが配置されており、オブジェクトＢのバス１と、オブジェクトＣのバス２、オブジェクトＤのバス２、およびオブジェクトＥのバス１とが接続されている。ここで、オブジェクトＢのバス１は、インストラクションを出力するバス（メッセージ端子）であり、オブジェクトＣのバス２、オブジェクトＤのバス２、およびオブジェクトＥのバス１は、いずれも、インストラクションを受け取るバス（メソッド端子）であるものとする。
【０４２２】
これらの間の配線は、図９２に示すように、親オブジェクトであるオブジェクトＡに接続されているケーブル要素リストにより定義されている。この図９２に示すケーブル要素リストには、多数のケーブル要素が並んでおり、それらのケーブル要素のうち、ケーブル要素ＣＡＢＬＥａによりオブジェクトＢのバス１とオブジェクトＣのバス２との間の配線が定義され、ケーブル要素ＣＡＢＬＥｂによりオブジェクトＢのバス１とオブジェクトＤのバス２との間の配線が定義され、ケーブル要素ＣＡＢＬＥｃによりオブジェクトＢのバス１とオブジェクトＥのバス１との間の配線が定義されている。
【０４２３】
オブジェクトＢから出力されたインストラクション（メッセージ）は３つのオブジェクトＣ，Ｄ，Ｅに伝えられ、各オブジェクトＣ，Ｄ，Ｅではそれぞれ対応したメソッドが実行されるが、それらのメソッドどうしの実行順序が問題になることがある。例えばオブジェクトＢが外部からデータを入力するオブジェクト、オブジェクトＣはそのデータに基づいて計算を行なうオブジェクト、オブジェクトＤは、その計算結果に基づいてグラフを作成するオブジェクト、オブジェクトＥはそのグラフを表示するオブジェクトであった場合、オブジェクトＢからの、データの入力が終了した旨をあらわすインストラクションにより、先ずオブジェクトＣ、次にオブジェクトＤ、最後にオブジェクトＥの順序で各メソッドが実行される必要がある。
【０４２４】
ここで、図９１に示す配線図からでは実行順序は不明であり、以下のようにして実行順序が表示され、また、必要に応じてその実行順序が変更される。
【０４２５】
図９３は、メソッド間の実行順序の表示、およびその実行順序の変更の処理をあらわすフローチャートである。
【０４２６】
先ず、例えば図９１に示すような画像を表示しておいて、マウス１０４により所望の配線（ここでは、図９１に示す配線）をクリックすること等により、その配線を選択する。そうすると、図６４に示すオブジェクト結合手段３０２では、どの配線が選択されたか認識され（ステップ９３＿１）、その配線（ケーブル）についてケーブルリストが作成されて表示される（ステップ９３＿２）。
【０４２７】
図９４は、ケーブルリスト要素リストを示す模式図である。
【０４２８】
ケーブルリストの作成にあたっては、図９２に示す、親オブジェクト（ここではオブジェクトＡ）のケーブル要素リストが検索され、その選択された配線を構成しているケーブル要素ＣＡＢＬＥａ，ＣＡＢＬＥｂ，ＣＡＢＬＥｃが認識され、ケーブル要素リストに並んだ順に、図９４に示すケーブルリスト要素リストを構成するケーブルリスト要素にそのケーブル要素へのポインタが格納される。すなわち、ここに示す例では、図９２に示す、その配線を構成する３つのケーブル要素ＣＡＢＬＥａ，ＣａＢＬＥｂ，ＣＡＢＬＥｃそれぞれへのポインタが、この順に、図９４に示すケーブルリスト要素リストに並ぶ各ケーブルリスト要素に格納される。
【０４２９】
図９５は、表示画面１０２ａに表示されるケーブルリストの一例を示す図である。
【０４３０】
図９４に示すようなケーブルリスト要素リストが作成されると、各２つのオブジェクトの間をつなぐ配線の様子が、そのケーブルリスト要素リストに並んだ順に並べられて表示される。すなわち、図９５に示す例では、一番上の行にオブジェクトＢのバス１とオブジェクトＣのバス２とが接続されている旨が表示され、次の行にオブジェクトＢのバス１とオブジェクトＤのバス２とが接続されている旨が表示され、さらに次の行にオブジェクトＢのバス１とオブジェクトＥのバス１とが接続されている旨が表示される。ここでは各行を‘リスト項目’と称する。ここで、このケーブルリストの左側はメッセージ（インストラクション）を発行する側のバス、右側はそのメッセージ（インストラクション）を受け取ってメソッドを実行する側のバスをあらわしている。実際の動作にあたっては、オブジェクトＢのバス１からそのバス１に対応したメッセージ（インストラクション）が発行されると、このケーブルリストに示した順序で、各メソッドが実行される。
【０４３１】
ここで、図９３のステップ９３＿３において、この表示リストに表示された一行分からなるリスト項目がドラッグされたものとする。ここでは、図９５に示すケーブルリスト中の一番下の行に示すリスト項目「オブジェクトＢ：バス１  オブジェクトＥ：バス１」がドラッグされたものとする。すると、オブジェクト結合手段３０２（図６４参照）では、オブジェクトＢのバス１とオブジェクトＥのバス１とを接続している配線、すなわち、図９２に示すケーブル要素ＣＡＢＬＥｃによって定義される配線がドラッグされたことが認識される（ステップ９３＿４）。次にそのドラッグされたリスト項目がドロップされる（ステップ９３＿５）。ここでは、図９５に示すケーブルリスト中の、２番目のリスト項目「オブジェクトＢ：バス１  オブジェクトＤ：バス２」の上にドロップされたものとする。すると、オブジェクト結合手段３０２では、そのドロップ先の配線が、オブジェクトＢのバス１とオブジェクトＤのバス２とを結ぶ配線であること、すなわち、図９２に示すケーブル要素ＣＡＢＬＥｂによって定義される配線であることが認識される（ステップ９３＿６）。
【０４３２】
このようにして、ドラッグされた配線とドロップ先の配線が認識されると、図９５に示すケーブルリスト上で、ドラッグされた配線がドロップ先の配線の前に並ぶようにその並びの順序、すなわち実行に際しての実行順序が変更される（ステップ９３＿７）。
【０４３３】
図９６は、ケーブル要素リストに並ぶケーブル要素の配列順序が変更される様子を示す模式図、図９７は、ケーブル要素の配列順序が変更された後のケーブル要素リストを示す模式図である。
【０４３４】
各ケーブル要素ＣＡＢＬＥは、図６９に示すように次のケーブル要素へのポインタを持っており、上記のようにしてリスト項目のドラッグ・ドロップ操作が行なわれると、そのポインタが書き換えられて、ここでの例では、図９６に示すように、ケーブル要素ＣＡＢＬＥｃがケーブル要素ＣＡＢＬＥｂの前に並ぶようにケーブル要素の配列順序が変更され、ケーブル要素が図９７に示すように並んだケーブル要素リストが生成される。
【０４３５】
図９８は、ケーブルリスト要素リストに並ぶケーブルリスト要素の配列順序が変更される様子を示す模式図、図９９は、ケーブルリスト要素の配列順序が変更された後のケーブルリスト要素リストを示す模式図である。
【０４３６】
上述のようにしてリスト項目のドラッグ・ドロップ操作が行なわれると、図９６に示すようにケーブル要素リストに並ぶケーブル要素の配列順序が変更されるが、これに伴って、図９８に示すように、ケーブルリスト要素リストに並ぶケーブルリスト要素の配列順序も変更される。ここに示す例では、ケーブル要素ＣＡＢＬＥｃへのポインタが格納されたケーブルリスト要素が、ケーブル要素ＣＡＢＬＥｂへのポインタが格納されたケーブルリスト要素の前に並ぶようにケーブルリスト要素の配列順序が変更され、図９９に示すケーブルリスト要素リストが生成される。
【０４３７】
図１００は、配列順序が変更された後のケーブルリストを示す図である。
【０４３８】
上記のような、ケーブル要素およびケーブルリスト要素の配列順序が変更された結果、表示用のケーブルリストも、図１００に示すように、リスト項目の順序が変更される。
【０４３９】
以上で、図２に示すオブジェクト間配線エディタ部１２２およびその周辺部に関する実施形態の説明を終了し、次に、オブジェクトビルダ部１２１およびその周辺に関する実施形態の説明に移る。
【０４４０】
オブジェクトウェアプログラミングシステムでは、プログラムをオブジェクト化することにより効率の良いプログラミングを行なうことを目指しており、このためには、既存のソフトウェア資産を容易にオブジェクト化することが可能であるか否かが極めて重要である。特に、既存のソフトウェアをそのままオブジェクト化することが可能であれば、利用可能なオブジェクトの数が一挙に飛躍的に増大し、プログラム開発効率は格段に向上する。従来においても、既存のソフトウェアをオブジェクト化する方法が何種類か提案されている。ＷｉｎｄｏｗｓにおけるＯＬＥやＤＤＥなどがその例である。しかしながら、これらの方法では、既存ソフトウェア側で、オブジェクト化されることあらかじめ予定してそのように対応していなければ使用できず、すべての既存ソフトウェアをオブジェクト化することができるものではない。また、そのような対応がなされている既存ソフトウェアであっても、受け付けることのできるメッセージの数は、例えばグラフィカル・ユーザインタフェースにおいて受け付けるメッセージの数に比べて大変少ないものが多く、その既存ソフトウェアをグラフィカル・ユーザインタフェースによる場合と同等には操作することはできない。
【０４４１】
また、既存ソフトウェア対する連続した操作は、従来より、シェルスクリプトなどによって記述する方法がある。しかしながら、従来手段では、起動後のソフトウェアに対する操作を、グラフィカル・ユーザインタフェースによる場合と同等に行うのは困難である。また、シェルスクリプトの記述はユーザが自分で行わなければならず、プログラミングの経験のない初心者ユーザには難しい。
【０４４２】
以下に説明する実施形態は、これらオブジェクト作成上の問題に鑑み、既存ソフトウェアの仕組みによらずに、その既存ソフトウェアオブジェクト化する手法、および、既存ソフトウェアと組み合わされてオブジェクトとして作用するコンポーネントに関する実施形態である。ここでは、グラフィカル・ユーザインターフェースを持つ既存ソフトウェアを中心として、その既存ソフトウェアをオブジェクト化する手法や、その既存ソフトウェアと組み合わされてオブジェクトとして作用するコンポーネントについて説明する。
【０４４３】
尚、以下に説明するコンポーネントと本発明との対応は次の通りである。すなわち以下に説明するコンポーネントが、図１に示すコンピュータシステム１００の記憶部１０５に格納された場合に、そのコンポーネントを記憶した状態における記憶部１０５が本発明にいうコンポーネント記憶媒体の一例に相当する。また、そのコンポーネントが、図１に示すＭＯ１１０に格納された場合、そのコンポーネントが格納された状態にあるＭＯ１１０も、本発明にいうコンポーネント記憶媒体の一例に相当する。
【０４４４】
図１０１は、グラフィカル・ユーザインターフェースを持つ既存ソフトウェアを‘包み込む’コンポーネントの一実施形態を示す模式図である。
【０４４５】
この図１０１において、アプリケーションＡは表示画面１０２ａ（図１参照）上に’ボタン１’，’ボタン２’，’ボタン３’なるアイコンを表示しておき、マウス１０４の操作によりそれらアイコンのいずれかがクリックされ、そのクリックされたアイコンに応じた処理を実行する既存のソフトウェアである。
【０４４６】
また、ウィンドウ管理部は、このアプリケーションＡを含む、このシステムに組み込まれたアプリケーション全てのグラフィカル・ユーザインターフェースを管理する、例えばＷｉｎｄｏｗｓならばそのＷｉｎｄｏｗｓシステムそのものを指す。アプリケーションＡを‘包み込む’コンポーネントＡは、他オブジェクトと接続されるための、オブジェクトとしての基本構成の他にアプリケーションＡに関するデータを持ち、さらに、アプリケーションＡを生成（起動）するためのアプリケーション起動プログラムやアプリケーションＡに対するウィンドウイベント発生プログラム（例えばユーザがマウス１０４を操作してボタン１をクリックしたことと同等のことを実行するボタン１クリックイベント発行プログラム等）をメソッドとして持っている。他オブジェクトからコンポーネントＡのアプリケーションＡ起動メソッドにメッセージが送られるとそのメソッドが実行されてアプリケーションＡが起動され、そのウィンドウに関する情報（ＩＤ情報等）が読み込まれ、コンポーネントＡはそのウィンドウ情報を保持する。
【０４４７】
また、ボタンクリック等のイベントを発行するメソッドに他オブジェクト（もしくは自分自身）からメッセージが送られるとそのメッセージを受け取ったメソッドに記述されているイベント発行プログラムにより、ウィンドウ管理部を経由して、アプリケーションＡのウィンドウに対して、対応するイベントが発行される。
【０４４８】
この場合、既存アプリケーションＡには何も手を加えずに、コンポーネントＡを追加するだけで、その既存アプリケーションをオブジェクト化することができる。
【０４４９】
図１０２は、グラフィカル・ユーザインターフェースを持つ既存ソフトウェアを‘包み込む’コンポーネントの他の実施形態を示す模式図である。
【０４５０】
図１０１を参照して説明した実施形態における、アプリケーションＡやその他の同様な既存ソフトウェアに対するイベント発生プログラムの最後に、そのメソッドの実行が終了したことを他オブジェクトに通知するためのメッセージを発行するプログラムを追加する。このメッセージを他コンポーネントないし他オブジェクトのメソッドに接続する。こうすることにより、複数のメソッドを連鎖的に実行することができる。この図１０２では既存ソフトウェアの図示は省略し、コンポーネントＡのメッセージとコンポーネントＢおよびコンポーネントＣのメソッドとが接続された状態が示されている。
【０４５１】
図１０３は、グラフィカル・ユーザインターフェースを持つ既存ソフトウェアを‘包み込む’コンポーネントのもう１つの実施形態を示す模式図である。
【０４５２】
この図１０３に示すコンポーネントは既存ソフトウェアに対するイベントを監視して所定のイベントが発行されたときにそれに対応するメッセージを発行する機能を有するコンポーネントの一例である。
【０４５３】
既存ソフトウェアであるコンポーネントＡの、アプリケーションＡを起動するメソッドがメッセージを受け取ると、そのメソッドが実行されてアプリケーションＡが起動される。このコンポーネントＡは、全てのウィンドウイベントを監視する機能を持ち、発行されたイベントがアプリケーションＡに関するイベントであるか否かが調べられ、アプリケーションＡに関するイベントが発行された場合に、アプリケーションＡに関してそのイベントが発行されたことを他オブジェクト（または自分自身）に通知するためのメッセージを発行する。例えば、ユーザによるマウス１０４の操作により、表示画面１０２ａに表示されたアプリケーションＡに関する’ボタン１’，’ボタン２’，’ボタン３’の３つのアイコンのうち、’ボタン１’のアイコンがクリックされると、コンポーネントＡでは、アプリケーションＡの’ボタン１’のアイコンがクリックされたことが認識され、コンポーネントＡはボタン１がクリックされたことを通知するメッセージを発行する。
【０４５４】
こうすることにより、既存ソフトウェアに直接手を加えて拡張機能を付加することなく、既存ソフトウェアのイベントが発行されたことを受けて、その既存ソフトウェアの仕様にはなかったメソッドを連動して実行させることができる。
【０４５５】
図１０４は、図１０３に示すウィンドウ管理部内のイベント処理部の構成を示す模式図、図１０５は、図１０３に示すコンポーネントＡの中のイベント監視部の構成を示す模式図である。
【０４５６】
ウィンドウ管理部内のイベント処理部は、イベントの発生を受けてそのイベントに対応する処理を行なう部分であり、そのイベント処理部は、各種のイベント処理関数へのポインタがそれぞれ格納された複数のイベント処理要素からなるイベント処理要素リストを持っている。ウィンドウイベントが発生すると、各イベント処理要素に格納されたポインタが指し示す先のイベント処理関数が順次実行される。イベント処理要素リストの最後に並ぶイベント処理要素はデフォルトイベント処理関数を指し示しており、このデフォルトイベント処理関数は、例えばボタンがクリックされたときに表示画面上のボタンをそのボタンが押されたかのように動かす処理等を行なうものである。
【０４５７】
図１０３に示すコンポーネントＡの、アプリケーションＡの起動メソッドの最後に、ウィンドウ管理部に対し、ウィンドウイベントを自分（コンポーネントＡ）に送るように依頼するプログラムが記述されている。具体的にはウィンドウ管理部の中のイベント処理部が持つイベント処理リスト中に、コンポーネントＡのイベント監視部へのポインタが格納されたイベント処理要素を追加する。こうしておくことにより、以後ウィンドイベントが発生する毎にコンポーネントＡのイベント監視部でその発生したイベントを参照することができる。
【０４５８】
コンポーネントＡのイベント監視部には、図１０５に示すイベントテーブルが格納されている。このイベントテーブルには、アプリケーションＡに関する各イベントを定義するウィンドウＩＤ、イベントＩＤや、その他のデータと、そのイベントが発行されたときに発行されるメッセージとの対応関係が記述されている。
【０４５９】
何らかのウィンドウイベントが発生し、図１０４に示すウィンドウ管理部を経由してコンポーネントＡのイベント監視部にその発生したウィンドウイベントに関するイベントデータが入力されると、そのイベントデータ中のウィンドウＩＤおよびイベントＩＤによりイベントテーブルが参照され、そのイベントテーブル中に、そのイベントデータ中のウィンドウＩＤおよびイベントＩＤと一致するウィンドウＩＤおよびイベントＩＤが存在するか否か検索が行われる。イベントテーブル中にウィンドウＩＤおよびイベントＩＤが一致するものがあったときは、コンポーネントＡから、その一致するウィンドウＩＤおよびイベントＩＤに対応するメッセージが発行される。
【０４６０】
図１０６は、本発明のコンポーネント作成装置の基本構成図である。
【０４６１】
このコンポーネント作成装置４００は、第１操作子４０１、第２操作子４０２、およびコンポーネント作成手段４０３から構成されている。
【０４６２】
第１操作子４０１は、メソッドの作成およびメッセージの作成を選択的に指示する操作子である。
【０４６３】
また、第２操作子４０２は、所定の既存ソフトウェアの、所望のイベントの発行を指示入力する操作子である。
【０４６４】
尚、ここでは、機能上、第１操作子と第２操作子とに区別しているが、この区別は機能上のものであって、ハードウェア上は１つの操作子であってもよく、図１に示すコンピュータシステム１００では、典型的にはマウス１０４がこれら第１操作子と第２の操作子との双方に対応する。
【０４６５】
また、コンポーネント作成手段４０３は、既存ソフトウェアと合わせて１つのオブジェクトとして作用するコンポーネントを作成するものである。具体的には、このコンポーネント作成手段４０３は、第１の操作子４０１の操作によりメソッドの作成が指示され、次いで第２操作子４０２の操作により既存ソフトウェアの所定のイベントが発行された場合に、そのコンポーネントに、他オブジェクトで発行されたメッセージにより発火してそのイベントを発行するメソッドを作成し、第１の操作子４０１によりメッセージの作成が指示され、次いで第２操作子４０２により既存ソフトウェアの所定のイベントの発行が指示された場合に、そのコンポーネントに、そのイベントの発生に応答してそのイベントが発生したことを他オブジェクトに通知するためのメッセージを作成するものである。
【０４６６】
このコンポーネント作成手段４０３は、図２に示すオブジェクトウェアプログラミングシステム１０２のオブジェクトビルダ部１２１に相当する。
【０４６７】
図１０７は、コンポーネント作成装置の一実施形態を説明するための模式図、図１０８は、コンポーネント作成装置を用いてコンポーネントを作成する処理を表わすフローチャートである。
【０４６８】
オブジェクトビルダ部１２１は、既存ソフトウェアを‘包み込んで’その既存ソフトウェアと一緒になって１つのオブジェクトとして作用するコンポーネントを作成するプログラム１２１ａを有し、ユーザからの指示に応じてそのプログラムから‘包み込まれる’既存ソフトウェア（ここではアプリケーションＡ）を起動し（ステップ１０８＿１）、そのアプリケーションＡのウィンドウ情報を獲得してそれを保持する（ステップ１０８＿２）。
【０４６９】
次に、ユーザにより、その起動したアプリケーションＡを‘包み込む’コンポーネントにメソッドを追加するかメッセージを追加するかが選択され、さらに、イベントの種類（例えばボタンクリック、メニュークリック等の区別）が選択される（ステップ１０８＿３）。このメソッド／メッセージの別の選択は、表示画面１０２ａ上のメソッドとメッセージのアイコンのいずれか一方をマウスでクリックすることにより行われ、選択した欄に、キーボード１０３を操作することにより、追加しようとするメソッドもしくはメッセージの名前が登録される。
【０４７０】
その後、イベントの発生を監視し（ステップ１０８＿４）、マウスを用いたボタンクリック等によりイベントが発生すると（ステップ１０８＿５）、その発生したイベントがアプリケーションＡのウィンドウに関するイベントであるか否かが判定され（ステップ１０８＿６）、さらに、ステップ１０８＿３で選択したイベントの種類（ボタンクリック、メニュークリック等の別）と同種のイベントであるか否かが判定される（ステップ１０８＿７）。
【０４７１】
イベントが発生したときに、その発生したイベントが所望のイベントであるか否かを判定する機構（ウィンドウ管理部とイベント監視部の役割り）は、図１０３〜図１０５を参照して説明した機構と同様であり、ここでは説明は省略する。  今回発生したイベントがアプリケーションＡのウィンドウに関するイベントであって、選択したイベントの種類と同種のイベントであったときは、ステップ１０８＿３においてイベントの種類と共に選択されたメソッド／メッセージの別に応じて、そのイベントをメソッドもしくはメッセージとしてコンポーネントＡに追加する。すなわち、アプリケーションＡを‘包み込む’コンポーネントＡに他オブジェクトからメッセージを受け取ったときそのイベントを発生させるメソッドを生成し、あるいは、そのイベントが発生したときに他オブジェクトに向けてそのイベントが発生したことをあらわすメッセージを通知するプログラムを追加する。
【０４７２】
以上の動作が、ユーザからイベント監視終了指示があるまで継続され（ステップ１０８＿９）、ユーザからのイベント監視終了指示を受けて、起動されていたアプリケーション（ここではアプリケーションＡ）を終了させ（ステップ１０８＿１０）、さらに、このアプリケーションＡと、そのアプリケーションＡを‘包み込む’コンポーネントＡとからなるオブジェクトについて表示および配線用のオブジェクトデータが作成されて、図２に示すオブジェクトデータファイル１３２に格納され、また、そのオブジェクトがコンパイルされて実行形式のオブジェクトデータが生成され、図２に示す実行型オブジェクトファイルに格納される。このようにして、所望の既存ソフトウェアを‘包み込む’コンポーネントが対話的に作成される。
【０４７３】
次に、本発明のオブジェクト指向プログラミング支援装置のうちの第５のオブジェクト指向プログラミング装置の一実施形態について説明する。
【０４７４】
図１０９は、図２に示すオブジェクトウェアプログラミングシステム１２０に、本発明の第５のオブジェクト指向プログラミング支援装置の一実施形態に対応する構成要素が追加されたオブジェクトウェアプログラミングシステムの構成図である。図２に示すオブジェクトウェアプログラミングシステム１２０の構成要素に対応する構成要素には図２に付した符号と同一の符号を付して示し、相違点について説明する。
【０４７５】
この図１０９に示すオブジェクトウェアプログラミングシステム１２０’には、図２に示すオブジェクトウェアプログラミングシステム１２０の構成要素に加え、イベントログ作成部１４１、コンポーネント結合部１４２、イベントログファイル１５１、およびコンポーネントファイル１５２が備えられている。
【０４７６】
図１０７，図１０８を参照して説明したコンポーネント作成装置の実施形態においては、作成されたコンポーネントは、オブジェクトデータファイル１３２および実行型オブジェクトファイル１３３に格納される旨説明したが、ここでは、実行型オブジェクトファイルに関しては同様であるが、作成されたコンポーネントの表示および配線用のデータは、オブジェクトデータファイル１３２に代わり、コンポーネントファイル１５２に格納される。尚、ここでは説明および理解の容易のためにオブジェクトデータファイル１３２とは別にコンポーネントファイル１５２を備えた構成としているが、それらのファイルは一体的に構成されていてもよい。
【０４７７】
ここでは、先ず、図１０７，図１０８を参照して説明した手法により、図１０２を参照して説明した、メッセージを受け取って既存ソフトウェアのイベントを発行し、そのイベントを発行した旨をメッセージとして出力するコンポーネントが、複数の既存ソフトウェアに関し多数作成されてコンポーネントファイル１５２に格納される。
【０４７８】
次に、ユーザは、それら多数の既存ソフトウェアを同時もしくは順次に起動させ、種々のイベントを発生させる。すると、イベントログ作成部１４１により、どのイベントがどの順序で発生したかを表わすイベントログが作成され、イベントログファイル１５１に書き込まれる。
【０４７９】
イベントログの作成が終了すると、コンポーネント結合部１４２はイベントログファイル１５１に格納されているイベントログファイルから各イベントを順次読み出してきて、コンポーネントファイル１５２に格納されたコンポーネントを、その読み出されたイベントが順次発生するように配線する。
【０４８０】
この配線結果は、オブジェクト間配線データファイル１３４に格納され、さらにオブジェクト間配線エディタ部１２２により必要に応じてさらに配線が行われた後、インタプリンタ用配線データに変換されてインタプリンタ用配線データファイル１３５に格納される。
【０４８１】
図１１０は、コンポーネント結合部における処理の流れを示すフローチャート、図１１１は、その処理の流れを説明するための模式図である。
【０４８２】
図１１１に示すように、イベントログファイルには、イベントログ作成部１４１（図１０９参照）で作成された、多数のイベントデータが並ぶイベントログが格納されている。また、コンポーネントファイル（図１０９参照）には、前述したようにしてイベントとメソッドとが対応づけられた多数のコンポーネントが格納されている。
【０４８３】
コンポーネント結合部では、図１１０に示すように、イベントログファイルよりイベントを１つロードし（ステップ１１０＿１）、そのロードしたイベントと、コンポーネントファイルに格納されたコンポーネントが持っているイベントとメソッドとの対応関係の記述とが比較され、コンポーネントファイルの中から、そのロードしたイベントと同じイベントが検索される（ステップ１１０＿２）。同じイベントがあったときは、そのイベントに対応するメソッドと、前のメッセージ（以下に説明する）との間が配線される（ステップ１１０＿３）。そして、そのメソッドが実行されることにより発行されるメッセージ（コンポーネントファイルには、図１０２に示すように、メソッドが実行されるとそのメソッドに対応したイベントが発行されたことを表わすメッセージを発行するタイプのコンポーネントが格納されている。）が「前のメッセージ」として保存される。イベントログファイル１４１中に格納されたイベントログに次のイベントが残っているときは（ステップ１１０＿４）、ステップ１１０＿１に戻り、次のイベントがロードされ、上記と同様にして配線が行われる。
【０４８４】
尚、イベントログの一番最初に並んだイベントに関しては「前のメッセージ」は存在しないため、図１１１に示す、前のメッセージとの間の配線は行わずに、単に、そのイベントを発行するメソッドが実行されたときに発行されるメッセージを「前のメッセージ」として保有することになる。
【０４８５】
以上のようにしてコンポーネントどうしを自動配線することができ、このようにして配線しておくと、インタプリタ部１２３における実行の際に、ユーザがイベントログを作成した順序通りに順次に自動的にイベントが発行され、既存ソフトウェアの自動操作が可能となる。
【０４８６】
尚、ここでは一旦イベントログを作成すると、その作成されたイベントログに並ぶイベントの順序に従って順次に自動配線が行われるが、一旦作成したイベントログを一覧表として表示し、その一覧表の中から必要なイベントをユーザが選択し、そのユーザが選択した順序で自動配線を行なうようにしてもよい。こうすることにより、イベントログを作成する際に間違いがあったときにイベントログを最初から作成し直すことなく、その間違いを訂正することができる。
【０４８７】
このようにして、アプリケーションの自動操作を実現することにより、例えばＷＷＷブラウザのオートパイロット機能を実現することなどが可能となる。
【０４８８】
次に、既存のソフトウェアを‘包み込んで’その既存ソフトウェアをオブジェクト化する手法の他の実施形態、および既存ソフトウェアと組み合わされてオブジェクトとして作用するコンポーネントの他の実施形態について説明する。
【０４８９】
図１１２は、既存ソフトウェアをコンポーネントで‘包み込んだ’状態を示す概念図、図１１３は、その既存ソフトウェアを‘包み込むための定義表を示す図である。尚、図１１３中では、オブジェクトを’ＬＳＩ’と称している。
【０４９０】
ここでは、既存ソフトウェアは、それのみでは単独では実行されず、他のアプリケーションプログラム等から呼び出されて実行される関数ないし関数の集合体からなる既存のプログラムである。
【０４９１】
図１１２に示す既存プログラミングには、他のプログラミングから受け取るべきデータｘ１ ，ｘ２ ，ｘ３ ，…，ｘｉ ，…が存在し、それら他のプログラムから受け取ったデータを基にある処理を行なう関数ｆｕｎｃｔｉｏｎ１，ｆｕｎｃｔｉｏｎ２，…，ｆｕｎｃｔｉｏｎｊ，…が存在し、その処理を行った結果を表わす、他のプログラムに引き渡すべきデータｙ１ ，ｙ２ ，…，ｙｊ ，…が存在する。
【０４９２】
このような既存プログラムを‘包み込む’にあたり、ここでは図１１２に示すように、２つのオブジェクトにわけてオブジェクトを定義するものとする。この分け方には、ある程度の任意性があり、ユーザによって分け方が決定される。
【０４９３】
ここでは、図１１２に示すような各種の定義が行われる。先ず、（Ａ）ヘッダとして、ここに示す作業ないし処理の全体を特定するためのプロジェクト名やこの処理を実行するための環境が定義される。
【０４９４】
その（Ａ）ヘッダに、（Ｂ）作成するライブラリの定義、（Ｃ）既存プログラムの定義（どの既存プログラムをオブジェクト化するのかを定義する）、および（Ｄ）オブジェクトの定義が続く。（Ｄ）オブジェクトの定義は、既存プログラムの中が複数のオブジェクトに分かれるときは、複数存在する。
【０４９５】
（Ｄ）オブジェクトの定義の中には、他オブジェクトからデータを受け取るポインタを定めるデータ入力用のデータバス（データ入力端子）の定義、実行する処理の入口のポインタを定めるメソッド（メソッド端子）の定義、および処理実行後の、他のオブジェクトに引き渡すべきデータのポインタを定めるデータ出力用のデータバス（データ出力端子）の定義が存在する。尚、ここでは、他のプログラムから呼び出されて処理を実行する既存プログラムを想定しているため、この既存プログラムが他のオブジェクトに対し処理を依頼する（メッセージを発行する）ことは考慮されていない。
【０４９６】
図１１３は、図１１２に示す各種定義を行うための定義項目一覧表を示した図である。
【０４９７】
この一覧表にあらわれたキーワード群は、上述した各種定義を行う一種のプログラム言語である。個々のキーワードの詳細説明は、本発明の本質からは外れるため省略する。
【０４９８】
図１１４は、定義を行なう際に表示画面１０２ａに表示される画面の一例を示す図である。
【０４９９】
この画面の左側には、定義の構造が示されており、かつ、それぞれがアイコンの役割りをなし、それらのアイコンのうちのいずれかをクリックすると、この画面の右側に示すように、そのクリックされたアイコンに対応した項目の定義を行なうための一覧表の枠が表示され、その枠の中を１つずつ埋めていくことにより、定義表が完成する。
【０５００】
このような、一覧表の枠を埋める形式を採用すると対話的に容易に定義を行なうことができる。
【０５０１】
定義表が完成すると、既存プログラムと、その既存プログラムに関する定義表からなるコンポーネントは、図２に示すオブジェクトビルダ部１２１により、表示、配線用のデータが抽出されてオブジェクトデータファイル１３２に格納され、またコンパイラにより実行形式に変換されて実行型オブジェクトファイル１３３に格納される。
【０５０２】
以上のようにして既存ソフトウェアを、その既存ソフトウェアの形式によらず、かつ、既存ソフトウェア自体に手を加えることなく、このオブジェクトウェアプログラミングシステムにオブジェクトとして取り込むことができる。
【図面の簡単な説明】
【０５０３】
【図１】本発明のオブジェクト指向プログラミング装置の一形態を包含するコンピュータシステムの外観図である。
【図２】図１に示すコンピュータシステム内に実現されたオブジェクトウェアプログラミングシステムの概要図である。
【図３】図１に示すコンピュータシステム内に実現されたソフトウェアシステムの第１例を示す模式図である。
【図４】図３に示すオブジェクトＡの出力インストラクションバス部とオブジェクトＢの入力インストラクションバス部のデータ構造の一例を示す模式図である。
【図５】メッセージの発行処理を示すフローチャートである。
【図６】図３示すオブジェクト結合部の出力インストラクションバス部生成部の処理を示すフローチャートである。
【図７】図３に示すオブジェクト結合部の入力インストラクションバス部の処理を示すフローチャートである。
【図８】図３に示すオブジェクト結合部におけるインストラクション結合部の処理を示すフローチャートである。
【図９】図３に示すオブジェクトＡのデータ要素リストのデータ構造の一例を示す模式図である。
【図１０】図３に示すオブジェクト結合部のデータ要素生成部の処理を示すフローチャートである。
【図１１】図３に示すオブジェクトＢのポインタ要素リストのデータ構造の一例を示す模式図である。
【図１２】図３に示すオブジェクト結合部のポインタ要素生成部の処理を示すフローチャートである。
【図１３】図３に示すオブジェクト結合部のデータ結合部の処理が実行された後の構造を示す模式図である。
【図１４】図３に示すオブジェクト結合部のデータ結合部の処理を示すフローチャートである。
【図１５】図１に示すコンピュータシステムに実現されたソフトウェアシステムの第２例を示す模式図である。
【図１６】図１に示すコンピュータシステムに実現されたソフトウェアシステムの第３例を示す模式図である。
【図１７】図１に示すコンピュータシステムに実現されたソフトウェアシステムの第４例を示す模式図である。
【図１８】図１に示すコンピュータシステムに実現されたソフトウェアシステムの第５例を示す模式図である。
【図１９】図１５〜図１８に示すオブジェクトＡの、データ構造の一部を示す模式図である。
【図２０】オブジェクトＡのメッセージ発行処理の一例を示すフローチャートである。
【図２１】オブジェクトＢの処理中における部分処理の第１例を示すフローチャートである。
【図２２】オブジェクトＢの処理中における部分処理の第２例を示すフローチャートである。
【図２３】オブジェクトＢの処理中における部分処理の第３例を示すフローチャートである。
【図２４】オブジェクトＢの処理中における部分処理の第４例を示すフローチャートである。
【図２５】オブジェクトＢの処理中における部分処理の第５例を示すフローチャートである。
【図２６】オブジェクトＢの処理中における部分処理の第６例を示すフローチャートである。
【図２７】オブジェクトＡのメッセージ発行処理の、図２０に示すメッセージ発行処理例とは異なる例を示すフローチャートである。
【図２８】オブジェクトＢの処理中における部分処理の第７例を示すフローチャートである。
【図２９】オブジェクトＢの処理中の部分処理の第８例を示すフローチャートである。
【図３０】オブジェクトＢの処理中の部分処理の第９例を示すフローチャートである。
【図３１】オブジェクトＢの処理中の部分処理の第１０例を示すフローチャートである。
【図３２】図１５に示すオブジェクト結合部における入力インストラクションタグテーブル生成部の処理を示すフローチャートである。
【図３３】図１６に示すオブジェクト結合部における出力インストラクションタグテーブル生成部の処理を示すフローチャートである。
【図３４】図１７に示すオブジェクト結合部における入力データタグテーブル生成部の処理を示すフローチャートである。
【図３５】図１８に示すオブジェクト結合部における出力データタグテーブル生成部の処理を示すフローチャートである。
【図３６】本発明のオブジェクト間ネットワーク表示方法の一実施形態の表示画面例を示す模式図である。
【図３７】階層化されたネットワークの説明図である。
【図３８】多数のオブジェクトと配線からなる表示画像例を示す図である。
【図３９】サブネットワークを表示した表示画像例を示す図である。
【図４０】サブネットワークの表示方法の他の例を示す図である。
【図４１】複数の升目が連結された表示領域を有する表示画像例を示す図である。
【図４２】配線の表示方法に特徴を持つ表示画像例を示す図である。
【図４３】配線の表示方法の他の例を示す図である。
【図４４】オブジェクトのネットワークを表示するための表示領域を作成する手順の説明図である。
【図４５】ユーザにより、表示画面上にオブジェクトが配置されているときの様子を示す図である。
【図４６】ユーザにより、表示画面上に配置されたオブジェクト間の配線が行われているときの様子を示す図である。
【図４７】サブネットワーク表示前（Ａ）および表示後（Ｂ）のオブジェクト間ネットワークの表示画面例を示す図である。
【図４８】図４７（Ａ）の表示から図４７（Ｂ）への表示への変更の手順を示すフローチャートである。
【図４９】サブネットワーク表示手順の説明図である。
【図５０】サブネットワーク表示手順を示すフローチャートである。
【図５１】オブジェクトを示す表示領域を、１つもしくは複数の連結された升目で形成した例を示す模式図である。
【図５２】配線の表示方法の例を示す模式図である。
【図５３】配線の表示例を示す模式図である。
【図５４】図５３に示す配線を実行する手順を示すフローチャートである。
【図５５】配線手順の他の例を示すフローチャートである。
【図５６】配線手順の他の例を示すフローチャートである。
【図５７】配線手順の他の例を示すフローチャートである。
【図５８】図５５〜図５７に示す配線手順に従って配線を行なった結果を示す模式図である。
【図５９】図５５〜図５７に示す配線手順に従って配線を行なった結果を示す模式図である。
【図６０】図５５〜図５７に示す配線手順に従って配線を行なった結果を示す模式図である。
【図６１】図５５〜図５７に示す配線手順に従って配線を行なった結果を示す模式図である。
【図６２】図５５〜図５７に示す配線手順に従って配線を行なった結果を示す模式図である。
【図６３】図５５〜図５７に示す配線手順に従って配線を行なった結果を示す模式図である。
【図６４】本発明のオブジェクト指向プログラミング支援装置およびオブジェクト指向プログラミング用プログラム記憶媒体の基本構成図である。
【図６５】オブジェクトの内包関係の一例を示す概念図である。
【図６６】オブジェクトどうしの、階層構造を規定する接続関係を示す模式図である。
【図６７】１つのオブジェクトの、他のオブジェクトへの接続関係を定めるポインタを示した模式図である。
【図６８】図６７に示す‘バスへのポインタ’に接続されるバス要素リストを構成する１つのバス要素を示す模式図である。
【図６９】図６７に示す‘ケーブルへのポインタ’に接続されるケーブル要素リストを構成するケーブル要素を示す模式図である。
【図７０】オブジェクトの間の配線例を示す模式図である。
【図７１】分身オブジェクトの概念図である。
【図７２】図７１に示すオブジェクトの階層構造（オブジェクトツリー）を示す模式図である。
【図７３】分身オブジェクトの作成処理を示すフローチャートである。
【図７４】本体オブジェクトと分身オブジェクトとの接続関係を示す模式図である。
【図７５】オブジェクトの置き換え前のオブジェクトの結合関係を示す概念図である。
【図７６】図７５に示すオブジェクトに関するオブジェクトツリーを示す模式図である。
【図７７】オブジェクト置き換え後のオブジェクトの結合関係を示す概念図である。
【図７８】オブジェクト置き換え後のオブジェクトツリーの一部を示す模式図である。
【図７９】オブジェクト置き換え処理を示すフローチャートである。
【図８０】オブジェクトＡに接続されたケーブル要素リストの一部を示す模式図である。
【図８１】オブジェクト移動前のオブジェクトの結合関係を示す概念図である。
【図８２】図８１に示すオブジェクト群に関するオブジェクトツリーを示す模式図である。
【図８３】オブジェクト移動後のオブジェクトの結合関係を示す概念図である。
【図８４】図８３に示すオブジェクト群に関するオブジェクトツリーを示す模式図である。
【図８５】オブジェクトの移動および配線替えの処理を示すフローチャートである。
【図８６】オブジェクトツリーを変更する様子を示す模式図である。
【図８７】オブジェクトＡに接続されたケーブル要素リストの一部を示す模式図である。
【図８８】新オブジェクトへの配線の移動の説明図である。
【図８９】オブジェクトＦに作成された配線用バスの模式図である。
【図９０】新オブジェクト（オブジェクトＦ）の内部のオブジェクト（オブジェクトＤ）に接続された配線をオブジェクトＦにつなぎかえる様子を示す模式図である。
【図９１】オブジェクト間の配線の模式図である。
【図９２】図９１に示す配線を定義している、ケーブル要素リストを示す模式図である。
【図９３】メソッド間の実行順序の表示、およびその実行順序の変更の処理をあらわすフローチャートである。
【図９４】ケーブルリスト要素リストを示す模式図である。
【図９５】表示画面１０２ａに表示されるケーブルリストの一例を示す図である。
【図９６】ケーブル要素リストに並ぶケーブル要素の配列順序が変更される様子を示す模式図である。
【図９７】ケーブル要素の配列順序が変更された後のケーブル要素リストを示す模式図である。
【図９８】ケーブルリスト要素リストに並ぶケーブルリスト要素の配列順序が変更される様子を示す模式図である。
【図９９】ケーブルリスト要素の配列順序が変更された後のケーブルリスト要素リストを示す模式図である。
【図１００】配列順序が変更された後のケーブルリストを示す図である。
【図１０１】グラフィカル・ユーザインターフェースを持つ既存ソフトウェアを’包み込む’コンポーネントの一実施形態を示す模式図である。
【図１０２】グラフィカル・ユーザインターフェースを持つ既存ソフトウェアを’包み込む’コンポーネントの他の実施形態を示す模式図である。
【図１０３】グラフィカル・ユーザインターフェースを持つ既存ソフトウェアを’包み込む’コンポーネントのもう１つの実施形態を示す模式図である。
【図１０４】図１０３に示すウィンドウ管理部内のイベント処理部の構成を示す模式図である。
【図１０５】図１０３に示すコンポーネントＡの中のイベント監視部の構成を示す模式図である。
【図１０６】本発明のコンポーネント作成装置の基本構成図である。
【図１０７】コンポーネント作成装置の一実施形態を説明するための模式図である。
【図１０８】コンポーネント作成装置を用いてコンポーネントを作成する処理を表わすフローチャートである。
【図１０９】図２に示すオブジェクトウェアプログラミングシステムに、本発明の第５のオブジェクト指向プログラミング支援装置の一実施形態に対応する構成要素が追加されたオブジェクトウェアプログラミングシステムの構成図である。
【図１１０】コンポーネント結合部における処理の流れを示すフローチャートである。
【図１１１】コンポーネント結合部における処理の流れを説明するための模式図である。
【図１１２】既存ソフトウェアをコンポーネントで’包み込んだ’状態を示す概念図である。
【図１１３】図１１２に示す各種定義を行うための定義項目一覧表を示した図である。
【図１１４】定義を行なう際に表示画面１０２ａに表示される画面の一例を示す図である。
【符号の説明】
【０５０４】
１０  オブジェクト結合部
１１  出力インストラクションバス部生成部
１２  入力インストラクションバス部生成部
１３  インストラクション結合部
１３ａ  経路
１４  データ要素リスト生成部
１５  ポインタ要素リスト生成部
１６  データ結合部
１６ａ  経路
２０  オブジェクト結合部
２１  出力インストラクションバス部生成部
２２  入力インストラクションバス部生成部
２３  インストラクション結合部
２３ａ  経路
２４  入力インストラクションタグテーブル生成部
３０  オブジェクト結合部
３１  出力インストラクションバス部生成部
３２  入力インストラクションバス部生成部
３３  インストラクション結合部
３３ａ  経路
３４  出力インストラクションタグテーブル生成部
４０  オブジェクト結合部
４１  出力インストラクションバス部生成部
４２  入力インストラクションバス部生成部
４３  インストラクション結合部
４３ａ  経路
４４  入力データタグテーブル生成部
５０  オブジェクト結合部
５１  出力インストラクションバス部生成部
５２  入力インストラクションバス部生成部
５３  インストラクション結合部
５３ａ  経路
５４  出力インストラクションタグテーブル生成部
１００  コンピュータシステム
１０１  本体部
１０２  画像表示部
１０２ａ  表示画面
１０３  キーボード
１０４  マウス
１０５  記憶部
１１０  ＭＯ
１２０  オブジェクトウェアプログラミングシステム
１２１  オブジェクトビルダ部
１２２  オブジェクト間配線エディタ部
１２３  インタプリタ部
１３１  既存ソフトウェアファイル
１３２  オブジェクトデータファイル
１３３  実行型オブジェクトファイル
１３４  オブジェクト間配線データファイル
１３５  インタプリンタ用配線データファイル
１４１  イベントログ作成部
１４２  コンポーネント結合部
１５１  インベントログファイル
１５２  コンポーネントファイル
２０１  格子
２０２  表示画面
２０３  オブジェクト表示部分領域
２０４  配線表示部分領域
２０５  オブジェクト
２０６  サブネットワーク
２０７  表示画像
２０８  出力端子
２０１，２１１，２１２，２１３，２１４，２１５，２１６，２１７，２１８，２１９  オブジェクト
２２０  出力端子
２２１  入力端子
２２２  配線
２２３  配線
２２３ａ  中心線
２２３ｂ  緑線
２２４  オブジェクト
２２５  領域
２２６，２２７  オブジェクト
２２８  操作
２２９  配線
３００  オブジェクト指向プログラミング支援装置
３０１  表示手段
３０２  オブジェクト結合手段
３０３  階層構造構築手段
３０４  操作子
４００  コンポーネント作成装置
４０１  第１操作子
４０２  第２操作子
４０３  コンポーネント作成手段
【図１】
2006065879.tif 000003
【図２】
2006065879.tif 000004
【図３】
2006065879.tif 000005
【図４】
2006065879.tif 000006
【図５】
2006065879.tif 000007
【図６】
2006065879.tif 000008
【図７】
2006065879.tif 000009
【図８】
2006065879.tif 000010
【図９】
2006065879.tif 000011
【図１０】
2006065879.tif 000012
【図１１】
2006065879.tif 000013
【図１２】
2006065879.tif 000014
【図１３】
2006065879.tif 000015
【図１４】
2006065879.tif 000016
【図１５】
2006065879.tif 000017
【図１６】
2006065879.tif 000018
【図１７】
2006065879.tif 000019
【図１８】
2006065879.tif 000020
【図１９】
2006065879.tif 000021
【図２０】
2006065879.tif 000022
【図２１】
2006065879.tif 000023
【図２２】
2006065879.tif 000024
【図２３】
2006065879.tif 000025
【図２４】
2006065879.tif 000026
【図２５】
2006065879.tif 000027
【図２６】
2006065879.tif 000028
【図２７】
2006065879.tif 000029
【図２８】
2006065879.tif 000030
【図２９】
2006065879.tif 000031
【図３０】
2006065879.tif 000032
【図３１】
2006065879.tif 000033
【図３２】
2006065879.tif 000034
【図３３】
2006065879.tif 000035
【図３４】
2006065879.tif 000036
【図３５】
2006065879.tif 000037
【図３６】
2006065879.tif 000038
【図３７】
2006065879.tif 000039
【図３８】
2006065879.tif 000040
【図３９】
2006065879.tif 000041
【図４０】
2006065879.tif 000042
【図４１】
2006065879.tif 000043
【図４２】
2006065879.tif 000044
【図４３】
2006065879.tif 000045
【図４４】
2006065879.tif 000046
【図４５】
2006065879.tif 000047
【図４６】
2006065879.tif 000048
【図４７】
2006065879.tif 000049
【図４８】
2006065879.tif 000050
【図４９】
2006065879.tif 000051
【図５０】
2006065879.tif 000052
【図５１】
2006065879.tif 000053
【図５２】
2006065879.tif 000054
【図５３】
2006065879.tif 000055
【図５４】
2006065879.tif 000056
【図５５】
2006065879.tif 000057
【図５６】
2006065879.tif 000058
【図５７】
2006065879.tif 000059
【図５８】
2006065879.tif 000060
【図５９】
2006065879.tif 000061
【図６０】
2006065879.tif 000062
【図６１】
2006065879.tif 000063
【図６２】
2006065879.tif 000064
【図６３】
2006065879.tif 000065
【図６４】
2006065879.tif 000066
【図６５】
2006065879.tif 000067
【図６６】
2006065879.tif 000068
【図６７】
2006065879.tif 000069
【図６８】
2006065879.tif 000070
【図６９】
2006065879.tif 000071
【図７０】
2006065879.tif 000072
【図７１】
2006065879.tif 000073
【図７２】
2006065879.tif 000074
【図７３】
2006065879.tif 000075
【図７４】
2006065879.tif 000076
【図７５】
2006065879.tif 000077
【図７６】
2006065879.tif 000078
【図７７】
2006065879.tif 000079
【図７８】
2006065879.tif 000080
【図７９】
2006065879.tif 000081
【図８０】
2006065879.tif 000082
【図８１】
2006065879.tif 000083
【図８２】
2006065879.tif 000084
【図８３】
2006065879.tif 000085
【図８４】
2006065879.tif 000086
【図８５】
2006065879.tif 000087
【図８６】
2006065879.tif 000088
【図８７】
2006065879.tif 000089
【図８８】
2006065879.tif 000090
【図８９】
2006065879.tif 000091
【図９０】
2006065879.tif 000092
【図９１】
2006065879.tif 000093
【図９２】
2006065879.tif 000094
【図９３】
2006065879.tif 000095
【図９４】
2006065879.tif 000096
【図９５】
2006065879.tif 000097
【図９６】
2006065879.tif 000098
【図９７】
2006065879.tif 000099
【図９８】
2006065879.tif 000100
【図９９】
2006065879.tif 000101
【図１００】
2006065879.tif 000102
【図１０１】
2006065879.tif 000103
【図１０２】
2006065879.tif 000104
【図１０３】
2006065879.tif 000105
【図１０４】
2006065879.tif 000106
【図１０５】
2006065879.tif 000107
【図１０６】
2006065879.tif 000108
【図１０７】
2006065879.tif 000109
【図１０８】
2006065879.tif 000110
【図１０９】
2006065879.tif 000111
【図１１０】
2006065879.tif 000112
【図１１１】
2006065879.tif 000113
【図１１２】
2006065879.tif 000114
【図１１３】
2006065879.tif 000115
【図１１４】
2006065879.tif 000116