(57)【要約】【課題】オブジェクト−プロトタイプモデルを用いてソフトウェアオブジェクトを実現する新たなシステムを提供する。【解決手段】オブジェクトは特性の集合として規定され、その各々は独自の特性名を有する。特性名の集合は「形状」を規定する。形状の使用は、オブジェクトの特性が宣言される順序からメモリのオブジェクトの表示を自由にする。メソッドは、オブジェクトに依存することなく規定され、メソッドが規定されるクラスから得られるオブジェクトよりはむしろ特定された形状に適用可能である。メソッドを、任意の承継階層のオブジェクトの位置に関係なく、特定の形状を有する、すなわち、特定の形状を規定する特性のスーパセットを有する任意のオブジェクトに適用することができる。形状の規定は、特性の値の制限のような追加の選択基準も有し、その結果、メソッドの適用を、指定された基準を満足するオブジェクトに制限することができる。【選択図】図４
2008243219.tif 000002
【特許請求の範囲】
【請求項１】
入力手段と、プロセッサと、前記プロセッサに結合し、前記プロセッサが読み出して実行すると、前記プロセッサ上で実行可能なプログラムを格納したメモリとを含むコンピュータにおいて、ソフトウェアオブジェクトを実現し及び管理する方法であって、
前記プロセッサによって、前記入力手段を通じた第１入力に応答し、特性名テーブルにリストして、特性の第１セットに対応する、少なくとも一つのメソッドと、前記動作の形状を規定する特性のセットとを含む動作を規定するとともに、前記動作を前記メモリに格納するステップと、
前記プロセッサによって、前記入力手段を通じた第２入力に応答し、特性の第２セットを有する第１ソフトウェアオブジェクトを、特性名テーブルにリストして、規定するとともに、前記第１ソフトウェアオブジェクトを前記メモリに格納するステップであって、前記特性の第２セットは、前記第１ソフトウェアオブジェクトの形状を規定するとともに、各々前記第１ソフトウェアオブジェクトの態様を表す、前記特性の少なくとも第１及び第２のサブグループに分割されるステップと、
前記プロセッサによって、前記入力手段を通じた第３入力に応答して、第２及び第３ソフトウェアオブジェクトを規定するとともに、前記第２及び第３ソフトウェアオブジェクトを前記メモリに格納するステップと、
前記プロセッサによって、前記メモリに格納された前記第２ソフトウェアオブジェクトから前記第１サブグループ内の特性を承継させるとともに、前記メモリに格納された前記第３ソフトウェアオブジェクトから前記第２サブグループ内の特性を承継させて、プログラマにより前記入力手段を通じて各サブグループの承継経路を個別に区別可能とするステップと、
前記プロセッサによって、前記特性の第１セットが前記特性の第２セットのサブセットを有するとき、前記メモリに格納された前記第１ソフトウェアオブジェクトに対する動作のメソッドを実行するステップであって、前記第１ソフトウェアオブジェクトに対する動作は、特定のオブジェクトから独立しており、前記特性の第２セットが前記特性の第１セットと同一又はそのスーパセットであるとき、サブグループ構造又は承継階層に関係なく、オブジェクトに関し実行されるように構成されるステップと
を備え、
前記形状は、独自のオブジェクト形状に対応する特性をリストするエントリ及び各エントリを変換することができる他の形状のリストを有する形状テーブルにより規定されることを特徴とする方法。
【請求項２】
入力手段と、プロセッサと、前記プロセッサに結合し、前記プロセッサが読み出して実行すると、前記プロセッサ上で実行可能なプログラムを格納したメモリとを含むコンピュータにおいて、ソフトウェアオブジェクトを実現し及び管理する方法であって、
前記プロセッサによって、前記入力手段を通じた第１入力に応答し、特性名テーブルにリストして、特性の第１セットに対応する、少なくとも一つのメソッドと、前記動作の形状を規定する特性のセットとを含む動作を規定するとともに、前記動作を前記メモリに格納するステップと、
前記プロセッサによって、前記入力手段を通じた第２入力に応答し、特性の第２セットを有する第１ソフトウェアオブジェクトを、特性名テーブルにリストして規定するとともに、前記第１ソフトウェアオブジェクトを前記メモリに格納するステップであって、前記特性の第２セットは、前記第１ソフトウェアオブジェクトの形状を規定するステップと、
前記プロセッサによって、前記特性の第１セットが前記特性の第２セットのサブセットを有するとき、前記メモリに格納された前記ソフトウェアオブジェクトに対する動作のメソッドを実行するステップであって、前記ソフトウェアオブジェクトに対する動作は、特定なオブジェクトから独立しており、前記特性の第２セットが前記特性の第１セットと同一又はそのスーパセットであるとき、前記オブジェクトのサブグループ構造又は承継階層に関係なく、オブジェクトに関して実行されるように構成するステップと
を備え、
前記形状は、独自のオブジェクト形状に対応する特性をリストするエントリ及び各エントリを変換することができる他の形状のリストを有する形状テーブルにより規定されることを特徴とする方法。
【請求項３】
前記メソッドを実行する前に、前記プロセッサによって、追加の基準に対する前記オブジェクトを検査することを特徴とする請求項２記載の方法。
【請求項４】
前記第１セットの特性に対応する動作の規定及び前記ソフトウェアの規定は、前記第１及び第２セットの特性に含まれる特性に対する独自の名前の規定を有することを特徴とする請求項２記載の方法。
【請求項５】
前記オブジェクト又は動作の独自の形状の各々に対するエントリーを有する前記メモリのテーブルを前記プロセッサによって構成することを特徴とする請求項２記載の方法。
【請求項６】
前記オブジェクトの特性は値を有し、特性値ベクトルの特性値に対する特性値又は符号を、前記プロセッサによって前記メモリに格納することを特徴とする請求項２記載の方法。
【請求項７】
前記オブジェクトの特性は値を有し、獲得及び設定メソッドによってアクセスされたデータ構造中の特性値に対する特性値及び符号を、前記プロセッサによって前記メモリに格納することを特徴とする請求項２記載の方法。
【請求項８】
前記動作の規定するステップは、メソッドテーブルに対する前記動作のメソッドに符号を付加するステップを有することを特徴とする請求項２記載の方法。
【請求項９】
前記プロセッサによって、複数の親ソフトウェアオブジェクトを規定するとともに前記複数の親ソフトウェアオブジェクトを格納し、ソフトウェアを規定するステップであって、各々前記メモリに格納された異なる親ソフトウェアオブジェクトから承継された少なくとも一つの特性値を有するステップをさらに備えたことを特徴とする請求項２記載の方法。
【請求項１０】
入力手段と、プロセッサと、前記プロセッサに結合し、前記プロセッサが読み出して実行すると、前記プロセッサ上で実行可能なプログラムを格納したメモリとを含むコンピュータにおいて、各々特性値を有し又は特性値を割り当てられる特性を有するソフトウェアオブジェクトを構成する方法であって、
前記プロセッサによって、前記入力手段を通じた第１入力に応答して、特性のセットを有する第１ソフトウェアオブジェクトを前記プロセッサによって規定するとともに、前記第１ソフトウェアオブジェクトを前記メモリに格納するステップと、
前記プロセッサによって、前記入力手段を通じた第２入力に応答し、前記特性を前記オブジェクトの態様を表す少なくとも第１及び第２サブグループに分割される特性のセットを有する第２及び第３ソフトウェアオブジェクトを規定するとともに、前記第１ソフトウェアオブジェクトを前記メモリに格納するステップと、
前記プロセッサによって、前記サブグループの特性の少なくとも一つの値を、前記メモリに格納された前記第１ソフトウェアオブジェクトから承継させるステップであって、前記第２サブグループの特性を前記第１ソフトウェアオブジェクトから承継せず、各サブグループの承継を、プログラム言語環境によって予め決定するのではなく、プログラマの指示を前記入力手段から受信して実行するステップと
を備えたことを特徴とする方法。
【請求項１１】
入力手段と、複数のオブジェクト、メソッド及びプログラムを記憶するメモリと、前記メモリに結合され、前記メモリから前記プログラムを読み出して前記プログラムを実行するときに実行可能なプロセッサとを有するコンピュータにおいて、オブジェクト及び動作の実現を容易にする方法であって、
前記プロセッサによって、前記入力手段を通じた第１入力に応答して、前記システム内で独自の特性名を規定するとともに、前記独自の特性名を前記メモリに格納するステップと、
前記プロセッサによって、前記入力手段を通じた第２入力に応答して、独自の特性名のサブセットを有するオブジェクトを規定するとともに、前記独自の特性名のサブセットを有するオブジェクトを前記メモリに格納するステップであって、前記オブジェクト内の各特性名は、前記サブセットの他の特性に対する順序を表すオブジェクト内の特性番号を有するステップと、
前記プロセッサにより、前記独自の特性名を参照する代わりに前記オブジェクト内の特性番号を参照することによって、前記メモリに格納された前記オブジェクト内の特性にアクセスするするステップと
を備えたことを特徴とする方法。
【請求項１２】
入力手段と、複数のオブジェクト、メソッド及びプログラムを記憶するメモリと、前記メモリに結合され、前記メモリから前記プログラムを読み出して前記プログラムを実行するときに前記プロセッサ上で実行可能であるプロセッサとを有するコンピュータにおいて、ソフトウェアオブジェクトを構成し及び処理する方法であって、
前記プロセッサによって、前記入力手段を通じた第１入力に応答して、各々前記オブジェクトの態様を表す第１及び第２サブグループに分割される特性のセットを有する第１ソフトウェアオブジェクトを規定するとともに、前記プロセッサによって前記第１ソフトウェアオブジェクトを前記メモリに格納するステップと、
前記プロセッサによって、前記入力手段を通じた第２入力に応答して、特性のセットを有する第２及び第３ソフトウェアオブジェクトを規定するとともに、前記第１ソフトウェアオブジェクトを前記メモリに格納するステップであって、前記第２及び第３ソフトウェアオブジェクトの各々は、前記メモリに格納された前記第１ソフトウェアオブジェクトに対応するある特性を有するステップと、
前記プロセッサによって、前記第１オブジェクトの第１サブグループ内の少なくとも一つの特性を、前記第２ソフトウェアオブジェクトから承継し、前記第１オブジェクトの第２サブグループ内の少なくとも一つの特性を、前記第３ソフトウェアオブジェクトから承継し、および前記第１ソフトウェアオブジェクトのどのサブグループが前記第２又は第３ソフトウェアオブジェクトのいずれから特性を承継するかの決定を、プログラミング言語環境ではなく、前記第１、第２又は第３オブジェクトの宣言中で指示することにより実行することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に言語翻訳プログラムをプログラミングするコンピュータの分野に関するものであり、より詳細にはオブジェクト適合態様を有するコンパイラ及びインタプリタに関するものである。
【背景技術】
【０００２】
コンピュータプログラムが複雑になっていくのに対処するために、多数の最近の言語は、プログラミング環境の外側に対して良好に規定されたインタフェースを表す「オブジェクト」と称される離散プログラミング構造を使用し、オブジェクトは、原理的には独立している。オブジェクトは、典型的には、情報と、内部情報又は外部情報に基づいて実行するメソッドとを有する。
【０００３】
オブジェクトに関連した情報の断片は、オブジェクトの「特性」と称される。各特性は名称を有し、各々に値を割り当てることができる。その値として特性を割り当てることができるデータのタイプを、例えば、整数若しくは浮動小数点数のような単一タイプのデータ又はデータ構造若しくは他のオブジェクトのような複合タイプのデータとすることができる。オブジェクトが規定されると、プログラマは、典型的には、オブジェクトが含む特性を宣言するとともに、各特性に対するデータタイプを指定する。特性のデータタイプは、特性が提示することができるデータのタイプを表示する。例えば、タイプ「整数」の特性は、値１，２，３等を有することができ、それに対して、タイプ「メソッドに対するポインタ」の特性は、命令のセットの開始のメモリアドレスを有する。オブジェクトの特性は、一斉にその構造を規定する。
【０００４】
オブジェクトの各特性は、その名称、タイプ、アクセス可能性（例えば、Ｃ＋＋において、公衆、プロテクトされた又は個人）及びオブジェクト内の位置のような関連した属性を有する。これら属性の値は、一般にプログラマに対してアクセス可能ではない、すなわち、プログラマは、一般にはそのタイプ又は利用可能性を決定するオブジェクトに質問することができない。Ｃ＋＋において、プログラマは、特性のサイズを質問することができ、ポインタからオブジェクトまでの特性に対してポインタを取り出すことによってオブジェクト内の位置を間接的に決定することができる。オブジェクトの属性を決定することができない場合、プログラマは、プログラムを機能させるメソッドを決定する際に更に制限を受ける。
【０００５】
メソッドは、操作を実行する一つ以上のラインのコンピュータコードを具える。メソッドは、典型的には、メソッド呼出しのポイントでのプログラムラインの順次の実行から開始し、メソッドを構成するコードのラインまで飛び越し、メソッド呼出しの下のプログラムの順次の実行にリターンすることによって実行される。オブジェクト適合プログラミングにおいて、メソッドは、典型的にはクラス規定の一部として規定され、規定されたクラスのオブジェクト、すなわち、規定されたクラスから取り出されたクラスのオブジェクトのみに適合させることができる。オブジェクトに適合することができるメソッドは、まとめてオブジェクトの「動作」と称される。
【０００６】
オブジェクト適合プログラミングの基本的な目的の一つは、オブジェクト内の特性及びメソッドを密閉して、第２プログラマがオブジェクトのインタフェースを学習した後にだけ第１プログラマによって規定されたオブジェクトを使用することができるようにすることである。インタフェースは、データをオブジェクトに送信するとともに計算結果、エラーコード及びオブジェクト状態のような出力をオブジェクトから受信するのに必要なコードを有する。第２プログラマは、オブジェクトの内部作業を理解する必要がない。したがって、プログラマは、他のプログラマによって規定されたオブジェクトにアクセスするプログラムを書き込むとともに新たなプログラムのビルディングブロックとして以前に規定したオブジェクトを再使用できるようにすべきである。例えば、一度、プログラマが、自動化されたテラーマシンを表すオブジェクトを規定すると、他のプログラマは、例えば、相違する銀行ネットワークの同一の自動化されたテラーマシンをモデル化する相違したプログラムの自動化されたテラーマシンオブジェクトを使用できるようにすべきである。オブジェクトを密閉することによって、プログラマは、特定オブジェクトの内部作業を変更して、オブジェクトを用いるプログラムの他の部分を変更することなくエラーを除去し又は効率を向上させることもできる。このような密閉は、大プログラミングを試みるに当たり複雑さを減少させる。
【０００７】
オブジェクト適合プログラムの他の基本的な目的は、拡張性、すなわち、以前に創成された拡張すべきオブジェクトが追加の特性すなわち機能を含むことができるようにすることである。これは、あるオブジェクトが親オブジェクトのような他のソースから特性及びメソッドを受け継ぐことができるようにすることによって達成される。例えば、追加の特徴を有する新たなタイプの自動化されたテラーマシンが利用できるようになる場合、プログラマは、現存する自動化されたテラーマシンオブジェクトに基づいて、容易に追加の特性を有するとともに追加の特徴を表すマテリアルを有する新たに自動化されたテラーマシンオブジェクトを創成することができる。プログラミング労力の重複を除去することによって、承継は、新たな使用に拡張すべき現存するオブジェクト適合コードを許容する。承継は、比較的簡単なビルディングブロックからビルディング複合オブジェクトを容易にする。
【０００８】
クラス−インスタンスプログラミングモデル(class-instance programming model)は、ソフトウェアオブジェクトを実現する一つの技術である。クラス−インスタンスプログラミングモデルにおいて、クラスオブジェクトとして既知のように、抽象オブジェクトが規定され、その後クラスのインスタンスを表すことができる。クラスオブジェクトは、クラスのインスタンスの構造及びメソッドを規定するが、抽象クラスの特性それ自体は値を有しない。クラスのインスタンスは、クラスによって規定された構造を有するオブジェクトであり、割り当てられた特性値とすることができる。したがって、クラスの全てのインスタンスは、そのインスタンスの特性値を記憶する個別の記憶構造を有する。特性と異なり、一般にはクラスのメソッドの各々のコピーが一つだけ存在する。したがって、メソッド呼出しは、クラスのインスタンスを呼び出すとともにクラスメソッドに渡す「隠蔽パラメータ」(invisible parameter)を有する。
【０００９】
クラス−インスタンスプログラミングモデルの新たなクラスの創成を容易にするために、その親クラスの構造から取り出すとともにそれを承継する「子」クラスを規定する。したがって、子クラスの陰スタンスは、親クラスに規定された全ての特性及びメソッドと、子クラスに特別に規定された追加の特性及びメソッドとを有する。例えば、クラス「車両」はそれから取り出され、子クラス「宇宙飛行体」のインスタンスは、特定の宇宙飛行体、例えば、スペースシャトルディスカバリーである。子クラス（宇宙非行体）がより一般的な親クラス（車両）の特定のタイプであるので、このタイプの承継は“ｉｓ−ａ”承継として既知である。
【００１０】
承継の利点を取り出すために、オブジェクト適合プログラミング言語はしばしば、予め規定された抽象クラスのライブラリで販売され、そのクラスは、ビルディング新クラスのプログラマを援助し、アプリケーションソフトウェアを構築するために標準化されたオブジェクトの使用を促進する。クラスライブラリは、理論的には新たなソフトウェアの創成を一層簡単にする。
【００１１】
多数のプログラミング言語によって、複数の承継を行う、例えば、一つより多い親オブジェクトから特性及びメソッドを承継することができる。例えば、図１Ａ，１Ｂ及び１Ｃはそれぞれ、「飛行機」クラス１０、「ボート」クラス１２及びボートクラス及び飛行機クラスから承継した「水上飛行機」クラス１４を示す。図１Ｃは、取り出された水上飛行機クラス１４のインスタンスの記憶構造１６は、ボートクラス１２及び飛行機クラス１０の記憶構造１８及び２０の連結であり、この連結を、承継が表された順序で実行する。（従来技術及び本発明の理解を容易にするために、図１Ａ，１Ｂ及び１Ｃの太線は、実際の記憶構造を囲み、図面に含まれるラベル情報からこれらを分離する。この取決めを、本明細書他の図面においても適用する。）したがって、複数の親クラスで同一名を有する特性は、典型的には個別の特性として子に承継される。しかしながら、重複したメソッド名を用いることによって、一方のメソッドが他方に重なり、一方のメソッドのみが承継される。
【００１２】
しかしながら、複数の承継によって、複雑なプログラミング環境では密閉が破壊されるおそれがある。承継が細分性に欠けるので困難が生じる、すなわち、それは全か無かの命題となる。取り出されたクラスは、その一つ以上のクラスの特性及びメソッドの全セットを承継する。子クラスは、個々の親から特定の特性又はメソッドしか承継することができない。以下の例はポイントを示す。
【００１３】
図２Ａは飛行機２４を示し、これは、エンジン２２、胴体２６、着陸装置２８、翼３０、方向舵３２及びプロペラ３４を有する。図２Ｂはボート３６を示し、これは、船体３８、マスト４０、帆４２、錨４４、着水装置４６及び索具装置４８を有する。従来の複数承継によれば、水上飛行機クラス１４は、特性の幾つかは水上飛行機には余分であり、すなわち不適切であるにもかかわらず、飛行機クラス１０及びボートクラス１２の全ての特性及びメソッドを承継する。
【００１４】
図２Ｃ及び２Ｄは、全か無回路の承継の不合理を示す。ボート３６及び飛行機２４の全てのコンポーネントを強制的に適合させて合成水上飛行機にしている。図２Ｃは、ボート３６から先ず承継され、その後飛行機２４から承継された水上飛行機５０を示す。図２Ｄは、飛行機２４から先ず承継され、その後ボート３６から承継された水上飛行機５２を示す。いずれの場合も、水上飛行機オブジェクトは、セイル４２のような不適切な特性と、着陸装置３２及び着水装置４６のように重複した特性を有する。プログラマが水上飛行機オブジェクトの装置の特性を言及する場合、着陸装置３２と着水装置４６のうちのいずれが参照されるか不明瞭である。
【００１５】
複数の承継に起因する不合理な結果の幾つかを回避するとともに有効に取り出されたクラスを発生させるために、親クラスの一つ以上を修正する必要が時々ある。例えば、水上飛行機を正確にモデル化する水上飛行機クラスを取り出すためにセイル４２を除去することによってボートクラス１２を変化させる必要がある。しかしながら、ボートクラス１２を変化させることは、元のボートクラス１２から特性及びメソッドを承継するオブジェクトを用いるプログラムの他の部分の結果を有するおそれがある。例えば、プログラマは、プログラムの他の区分に意図しない悪影響が及ぼされないようにするために、変更したボートクラスから承継した他のオブジェクト及びクラスを徹底的に探すことが要求される。親クラスの内部規定を理解し及び変更する必要があることは、密閉の概念には非常に都合が悪く、これは、オブジェクトが独立であるように命令し、その結果、オブジェクトのユーザは、オブジェクトの内部作業を理解する必要がない。さらに、クラスライブラリのクラスオブジェクトに対する変更は、ライブラリそれ自体を再び複雑にするだけでなく、変更したクラスオブジェクトを用いる現存するソフトウェアを再び複雑にする必要もなる。以上の例に示した問題は部分的に生じる。その理由は、プログラマは、取り出したクラスのどの態様がある親クラスから承継したのか及びどの態様が別の親クラスから承継したのか明確に述べることができない。親クラスの小さな変更は、子クラスの全てのインスタンスに承継された場合には不適切であるおそれがあり、変更を行うためにクラス承継が用いられた場合には単一のインスタンスに対して変更を行うことができない。
【００１６】
特定の特性名又はメソッド名が一つ以上の親オブジェクトに現れる場合、承継されたメソッド及び子クラスの特性の順序は、承継の順序及び任意のルールに依存する。例えば、プログラマは、クラスＣ及びＤから特性及びメソッドを承継するクラスＥ（図３）を規定することを所望することができ、これらクラスＣ及びＤは、可能な場合には相違するソフトウェア製造者から二つの相違するクラスライブラリに規定される。クラスＡの特性又はメソッドの幾つかは、クラスＢの特性又はメソッドと同一名を有し、クラスＣ及びＤのメソッド及び特性の順序は、クラスＡ及びＢからの特性の順序に依存する。適切に機能させるために、クラスＣは、メソッドがクラスＢよりもクラスＡから承継されること又はクラスＣの特性を特定の順序にすることを要求する。クラスＥがクラスＣ及びＤから承継する図３の複数承継例において、その各々はクラスＡ及びＢから相違する順序で承継し、クラスＥの結果的に得られるメソッド及び特性順序を決定することは困難である。ある場合には、クラスＥは不完全であるおそれがある。その理由は、クラスＣから承継されたメソッドが、最初にクラスＢから承継された特性に依存し、それに対して、クラスＤから承継されたメソッドは、最初にクラスＡから承継された同一特性に依存するからである。
【００１７】
各々が複数の親を有することもできる複数の親クラスを有するオブジェクトにアービトレーションルールを適用すると、非常に複雑になるおそれがある。アービトレーションルールは、承継ツリーの親クラスの構造の詳細な知識を要求する。クラスライブラリの複雑なクラスがしばしばライブラリのより簡単なクラスに基づいて構築されるので、プログラマは、ライブラリからクラスオブジェクトを用いて創成するオブジェクトを機能させるメソッドを予測する前に、ライブラリのクラスの多数の構造を理解する必要がある。
【００１８】
このために、クラスライブラリを発生させるプログラマは、典型的にはクラスライブラリに対するソースコードを提供し、その結果、アプリケーションのプログラマは、承継順序を決定するとともに、必要な場合にはライブラリのクラスを再規定する。親オブジェクト及びオブジェクト適合プログラミングの知識を要求するために、オブジェクト適合プログラミング及び関連のソースコードの複雑さが著しく増大し、密閉の目的が損なわれ、コードの再使用可能性及び拡張性が減少する。これによって、密閉及び承継の結果として拡張可能なオブジェクトを有する目的が損なわれ、以前に存在するクラスライブラリの拡張した知識がプログラマによって要求される。
【００１９】
Ｃ＋＋のような言語の承継の複雑さ及び柔軟性のなさは、オブジェクトが格納される記憶構造とそのクラス規定との間の密接な関係から部分的に取り出される。図１Ｃに示すように、子オブジェクトは、それが取り出されるオブジェクトの連結としてメモリに格納される。これによって、子オブジェクトは、「タイプキャスト」(type cast)となることができ、すなわち、親オブジェクトと同一のオブジェクトタイプのように処理される。しかしながら、このようなシステムは、取り出したオブジェクトの相違するコンポーネントのメモリに関係を維持するためにオブジェクトの全ての特性を承継することを要求する。宣言され及び承継された順序でオブジェクトの特性が格納される精密な記憶構造も、コンパイラによる記憶の割当てを強制し、これによって、利用できる記憶の使用が不十分になる。コンパイラは、重複の再整理又は除去によってより有効に記憶させる場合、重複特性を再整理し又は除去することができない。
【００２０】
オブジェクトプログラミングモデルは、ソフトウェアオブジェクトを実現する別の技術である。オブジェクトプログラミングモデルにおいて、オブジェクトが規定され、その後、他のオブジェクトを取り出すためにオブジェクトをコピーし又は使用することができる。この技術は、抽象クラスが存在しない点でクラス−インスタンスモデルと異なる。ある観点では、オブジェクトモデルはより柔軟性がある。その理由は、オブジェクトがエンティティに依存せず、オブジェクトを、抽象クラスの任意の定義に依存せずに創成し及び変更することができるからである。さらに、メソッドを、クラスの全てのメンバーよりは個々のオブジェクトに取り付けることができる。オブジェクトモデルは、図形ユーザインタフェースを創成するためにマイクロソフト社のビジュアルベーシック（登録商標）のような視覚的なプログラミングツールにも調和する。このようなツールを用いるに当たり、プログラマは、例えば、最初に抽象メニュークラスを創成することなくスクリーン上にメニューオブジェクトを創成することができる。
【００２１】
オブジェクトモデルにおいて、オブジェクトを、他のオブジェクトからコピーすることによって創成することができるが、元のオブジェクトと、規定された構造及び割り当てられた特性値を元のオブジェクトから受け取る新たに創成されたオブジェクトとの間にリンクが存在しない。新たなオブジェクトの特性値は、オリジナルの特性が変化するとき変化しない。ビジュアルベーシック（登録商標）、アシメトリック(Asymetrix)社のツールブック（登録商標）及びアップル社のハイパーカード（登録商標）は、ｉｓ−ａ承継のないオブジェクトモデルに基づくアプリケーションの例である。
【００２２】
オブジェクトプログラミングモデル及びオブジェクト−プロトタイププログラミングモデルの変化が承継に対して付与される。親オブジェクトの特性の値が変化すると、子オブジェクトの対応する特性を変化する。オブジェクト−プロトタイプモデルの子オブジェクトは、クラス−インスタンスモデル承継のような抽象クラスからよりはむしろ特定の親オブジェクトから承継し、これによって、オブジェクトは、構造に加えて実際の特性値を承継することができる。クラス−インスタンスモデルの場合のように、オブジェクト−プロトタイプモデルの承継は、典型的にはｉｓ−ａ階層に基づき、すなわち、取り出されたオブジェクトは親オブジェクトのタイプとなる。オブジェクト−プロトタイプモデルを用いるアプリケーションは広く市販されていない。
【００２３】
オブジェクト適合アーキテクチャーに対する他のアプローチは、抑制の使用、すなわち、ｉｓ−ａ階層とは逆の“ｈａｓ−ａ”階層である。抑制階層において、子オブジェクトは、親オブジェクトのタイプとする代わりに、親オブジェクトに含まれる。親コンテナそれ自体が他のコンテナ内に含むことができるとしても、オブジェクトを単一コンテナのみに含める。
【００２４】
大抵の実施は、コンテナ階層中の親からの承継を許容しない。ハイパーカード（登録商標）及びツールブック（登録商標）のようなあるアプリケーションにといて、メソッドをオブジェクトに関連して見つけることができない場合、オブジェクトのコンテナは、コンテナがメソッドを規定するか否か決定するために検査される。このような技術を、親コンテナからのメソッドの承継と考えることができる。
【００２５】
要約すれば、クラス−インスタンスプログラミングモデルは、構造及びメソッドを規定する抽象クラスを用いる。一つ以上の抽象クラスの構造及びメソッドを、子抽象クラスによって承継することができる。クラス−インスタンスモデルの承継は、ｉｓ−ａ階層に基づくものであり、この場合、子クラスは親クラスのタイプとなり、子クラスは、一つ以上の親クラスの全てを承継する。特性値を有するインスタンスは抽象クラスから創成されるが、インスタンスを他のインスタンスから取り出すことはできない。したがって、構造及びメソッドを承継することができるが、特性値を承継することはできない。これによって再使用可能性が制限され、プログラマのタスクがより複雑になる。特定の子クラスを創成するとともに承継された動作を理解するために、仲裁の複雑なルール及び親クラスの専門的な知識がしばしば要求される。
【発明の開示】
【発明が解決しようとする課題】
【００２６】
オブジェクトプログラミングモデルにおいて、オブジェクトを他のオブジェクトからコピーすることができ、その結果、構造、動作、及びデータを取り出すことができる。オブジェクトシステムはオブジェクトのコピーを許容するが、承継を行わない。オブジェクト−プロトタイプシステムは、各子が親のタイプであるｉｓ−ａ関係に基づく階層によって承継を行う。あるアプリケーションでは、メソッドの制限された承継はｈａｓ−ａ関係に基づき、この場合、各子は親に含まれる。ｈａｓ−ａ承継関係は一般に特性値の承継に一致しない。
【００２７】
オブジェクト適合プログラミングの使命が、再使用可能で拡張可能なオブジェクトを用いてモジュラアプリケーションを創成すべきであっても、この約束は、標準的なオブジェクト適合プログラミングにといて十分満足されないままである。従来のオブジェクト適合プログラミングは、（Ｃ＋＋のような）プログラム言語によって採用された固有のオブジェクトクラスの複雑さによって妨げられ、この複雑さによって、オブジェクト規定及び密閉において十分既知の問題が生じ、これに関連してアプリケーション実行時間中にオブジェクト及びメソッドを動的に変化させる際に困難が生じる。
【００２８】
標準的なオブジェクト適合言語アーキテクチャにおいて複数の承継を有する問題を認識するに当たり、従来技術は、独自のオブジェクトをプログラミングする際に複数のアプローチを採用し、これは、実行時間中のオブジェクトの設定、親クラスライブラリの変更及び再コンパイルし、及びカスタムコードを書き込んで、プログラムアーキテクチャに承継を決定させる代わりに承継された特性又はメソッドを置き換え、かつ、分岐オブジェクトのクラス数を表明することを含む。しかしながら、オブジェクトの特性及び動作は、その親クラス及びカスタムコード化に依存するようになり、これによって、オブジェクトの動作メソッドを決定するのが困難になる。プログラムアーキテクチャの複雑さは増大する。明白な解決は、きざしのみを処理するとともにそれ自他を更に困難にし、したがって、他の開発者によって再使用できるとともに拡張することができるコードを創成することが困難になる。
【００２９】
その結果、現在のオブジェクト適合プログラミングシステムは、承継を調停する複雑なルールの知識を要求し、オブジェクトから調和した動作を取り出し、承継を限定し、及びコードをデバッグするためにプログラマが完全な固有のクラスライブラリを学習することを要求する。
【００３０】
このようなリファレンスデコーダは固定のビットレート、バッファサイズ及び初期遅延で動作する。しかし、多くの現代のビデオアプリケーション（例えば、インターネットあるいはＡＴＭネットワークを経由したビデオストリーミング）においては、ピーク帯域幅がネットワーク経路により変化する。例えば、ネットワークへの接続が、モデム、ＩＳＤＮ、ＤＳＬ、ケーブルその他によるかに基づいてピーク帯域幅は異なる。さらに、ネットワーク条件、例えば、ネットワークの混雑、接続されるユーザ数及び他の既知の要因によってもピーク帯域幅は時間的に変動する。さらに、ハンドセット、パーソナル デジタル アシスタント（ＰＤＡ）、パソコン、ポケットサイズ計算機、テレビジョン セットトップボックス、ＤＶＤ等のプレーヤを含む、バッファ容量が異なる種々の装置にビデオビットストリームは送られ、例えば、低遅延ストリーミング、プログレッシブダウンロードなど、異なる遅延要求をもつシナリオのために生成される。
【００３１】
既存のリファレンスデコーダはこのような変動を調整しない。同時に、エンコーダは一般的に、所定の受信者のために変化する条件がどうなるかは事前に、分からないし、知ることもできない。結果として、資源及び／又は遅延時間はしばしば不必要に浪費され、多くの場合不適当なものとなる。
【課題を解決するための手段】
【００３２】
したがって、本発明の目的は、密閉及び複数承継の向上したメソッドを許容するプログラミング言語システムを提供することである。
【００３３】
本発明の利点は、オブジェクトの動作を承継階層に対する再分類なしにオブジェクトそれ自体から決定することができるこのようなシステムをもたらすことである。
【００３４】
本発明の他の利点は、親オブジェクトからの特性又はこれとは異なる親オブジェクトからの相違する特性の選択的な承継を提供することができることである。
【００３５】
本発明の別の利点は、オブジェクトが配置された一つ以上のコンテナに基づく特性の承継をもたらすことである。
【００３６】
本発明の更に別の利点は、特性が特定の値を有するオブジェクトに制限されるオブジェクト動作をもたらすことである。
【００３７】
本発明は、データを構成し、格納し及び処理する新規のコンピュータ実行システムを構成する。本発明のシステムは、従来のオブジェクト適合プログラミングを簡単にし、これによってプログラマの効率を増大させるとともに複雑なプログラミングモデルの実行を容易にする。これは、情報管理、図形表示、ネットワーク化のような分野のアプリケーションを有し、互いに動作するオブジェクトは複雑であり、プログラマに対して容易にアクセスすることができない。
【００３８】
システムは、オブジェクト−プロトタイプモデルに基づくものである。本発明によれば、オブジェクトは特性のセットとして規定され、このセットはオブジェクトの「形状」を規定する。動作は、オブジェクトに依存せずに規定されるとともに特性の特定のセットに関連して規定され、このセットは動作の「形状」を規定する。動作を、動作と同一形状を有するオブジェクト又は動作の形状に変換できる形状を有するオブジェクトに適用することができる。第１形状を具える特性が第２形状を具える特性のスーパセットである場合、第１形状を第２形状に変換することができる。動作の適用可能性を、特定の特性値を有するオブジェクト又は束縛階層の特定の場所を専有するオブジェクトのようなプログラマによって特定された基準に適合するオブジェクトに更に制限することができる。
【００３９】
したがって、典型的なオブジェクト適合プログラミングモデルと異なり、動作は、オブジェクトのクラスのメンバファンクションとして、すなわち、特定のオブジェクトに関連して規定されない。メソッドを、メソッドが適用する特性を有する任意のオブジェクトに適用することができる。このようなモデルは実際のワールドシステムに類似し、この場合、重力によって生じた加速のような動作が、オブジェクトが取り出されたメソッドに関係なく適切な特性、すなわち、重力を有する任意のオブジェクトに加えられる。
【００４０】
好適例において、特性名は、アプリケーション内で独自のものであり、索引付きの特性名テーブル中にリストされ、これは、各特性名に対する特性名テーブル索引番号及び任意の形状を有する特性をリストする正規のオーダを提供する。独自のオブジェクト形状に対応する特性をリストするエントリ及び各エントリを変換することができる他の形状のリストを有する形状テーブルを維持する。形状テーブルへの索引は、各オブジェクトに対する記憶構造の一部に含まれる。形状テーブルは、各オブジェクト内の特性の位置を表すとともに、場合によっては形状間で変換する手段を提供する。
【００４１】
オブジェクトを作動させるためにメソッドが呼び出されると、メソッドは、オブジェクトが適切な形状であるか否か又はオブジェクトを適切な形状に変換できるか否かテストする。オブジェクトの形状が許容できる場合、メソッドは、オブジェクトの特性が特定の値を有することを要求するようなメソッドに課された制限をオブジェクトが満足するか否かを決定するためにオブジェクトをテストする。オブジェクトがテストをパスする場合、それが実行される。
【００４２】
本発明の他の態様によれば、宣言して承継すべきオブジェクトの特性を、相違する親オブジェクトと異なるようにすることができる。オブジェクト内の特性のセットを、互いにグループ化するとともに、オブジェクトの特定の態様として処理することができる。このような態様は、ファセット（登録商標）−タイプ特性サブグループと称する。オブジェクトの相違するファセット（登録商標）サブグループを、相違する親オブジェクトから承継することができる。ファセット（登録商標）タイプ特性サブグループ内の特性の承継を、ｉｓ−ａ又はｈａｓ−ａ関係に基づかせることができる。ｉｓ−ａ関係に基づいて承継された特性値はオブジェクトの場所に依存せず、各ファセット（登録商標）−タイプ特性サブグループの親を宣言によって決定する。ｈａｓ−ａ関係に基づいて承継された特性値は、親オブジェクト、すなわち、子オブジェクトを配置したオブジェクトから取り出される。
【００４３】
オブジェクトのファセット（登録商標）−タイプ特性サブグループの各々の内の特性が親コンテナの相違するものから承継されるので、オブジェクトを一つ以上のコンテナ親に配置することができる。各ファセット（登録商標）−タイプ特性サブグループから親が指定される。また、子オブジェクトが複数の親に含まれる場合、各子オブジェクトファセット（登録商標）−タイプ特性サブグループは、子オブジェクトファセット（登録商標）−タイプ特性サブグループと同一名を有する親オブジェクトファセット（登録商標）−タイプ特性サブグループに子オブジェクトが含まれる親から承継される。ファセット（登録商標）−タイプ特性サブグループ内の個々の特性を、承継されたもの又は承継されないものとして宣言することができる。承継されない特性の値は、親オブジェクトの特性値に依存しない。したがって、子オブジェクトが承継する特性は、子オブジェクトそれ自体、コンテナオブジェクトの位置及び特性が親から承継された子の宣言によって制御される。
【００４４】
ファセット（登録商標）−タイプ特性サブグループのレベルの承継及び個々の特性を指定することによって、プログラマは、所望するように動作するオブジェクトを規定することができる。オブジェクトの特性及び動作は、複雑な複数承継階層で作動する調停ルールに依存しない。プログラマは、オブジェクトに基づく完全なクラスライブラリを理解する必要なく宣言に注意を向けることによってオブジェクトの特性及び動作を理解することができる。したがって、本発明は、オブジェクト適合プログラミングにおける密閉を著しく向上させる。
【００４５】
他の利点として、メソッドをオブジェクトに適用することができるか否かを決定するオブジェクトの形状は、ファセット（登録商標）−タイプ特性サブグループ境界によって制限されない。したがって、特性が、相違するファセット（登録商標）−タイプ特性サブグループにあるとともに、相違する親から承継することができるとしても、メソッドは、特定の特性を有する任意のオブジェクトに適用される。
【００４６】
本発明のオブジェクトの記憶構造は、オブジェクト宣言の特性の順序に依存しない。この非依存性によって、記憶を割り当てる際にコンパイラに柔軟性を与えるとともに、コンパイラを自由にして、これまで非実用的であった最適化を実行する。例えば、コンパイラは、親オブジェクトと子オブジェクトとのように、相違するオブジェクト間で記憶構造を共有する。宣言を、索引を引き、リンクされ又はネストにされたリストを用いて構成することができ、すなわちこのような他のデータ記憶構造はコンパイルを最適化するのに適切である。
【００４７】
プログラマがメソッドの利用可能性を制御することができる形状及びプログラマが承継を制御することができるファセット（登録商標）−タイプ特性サブグループを利用することによって、本発明の方法及びオブジェクト実現エンジンは、プログラマにソフトウェアオブジェクトの複数の観点を提供するとともに、特別の観点からオブジェクトを処理する際にあいまいさを取り除く。したがって、本発明は、オブジェクトを用いるプログラミングアプリケーションに広く適用することができる独自に拡張可能かつスケール化可能なアプリケーション開発アーキテクチャを提供する。アプリケーションは、一般に特性及び動作を有する任意のソフトウェア構成に適用することを意味する用語「オブジェクト」を使用し、本発明は、任意の特別なシステムで規定されるようなオブジェクトの正式な規定に適合する構成に限定されるものではない。
【００４８】
本発明の他のオブジェクト及び利点を、図面を参照して実施の形態の詳細な説明から明らかにする。
【発明を実施するための最良の形態】
【００４９】
本発明のコンピュータ実行システムにおいて、オブジェクト宣言は、オブジェクトの名前と、特性の組とを含む。この特性の組を、オブジェクトの「形状」と呼ぶ。指定された形状に適用できるが、個々のオブジェクトに適用できる必要はないメソッドを宣言する。メソッドを、前記指定された形状を有するどのようなオブジェクト、または、その形状を前記指定された形状に変換できるどのようなオブジェクトにも用いることができる。第２の形状の特性が指定された形状の特性のスーパセットである場合、前記第２の形状を前記指定された形状に変換することができる。メソッドの適応性を、指定された規準を満たすオブジェクトに限定することもできる。本発明は他のオブジェクトからの特性の承継を与えるが、メソッドの個々のオブジェクトへの適応性は、一般的に、先行技術におけるＣ＋＋のようなオブジェクト指向言語のような特定の起源を有するオブジェクトに限定されない。
【００５０】
したがって本発明におけるメソッドのオブジェクトへの適応性は、前記オブジェクトをどのように得たかよりも、前記オブジェクトの特性によって決定される。したがって、プログラマは、複雑な承継図および特性ルールを分析し、どのメソッドをオブジェクトに利用できるかを決定することを必要とせず、すなわち、彼または彼女は、前記オブジェクトの形状と、前記メソッドの形状とを比較することだけを必要とする。
【００５１】
本発明を、多くの異なった方法において実行することができる。異なった実施形態は、計算オーバヘッドをコンパイル時間および実行時間間で異なって割り当てる。本発明を実行するために必要なステップを、例えば、コンパイル時間においてコンパイラによって、実行時間においてインタラプタによって、またはこれらのなんらかの組み合わせによって行ってもよい。実行時間動作に依存する技術は、コンパイル時間においてメソッドおよび特性を結合する技術よりも、一般に柔軟であるが、実行が遅い。計算オーバヘッドの好適な割り当ては用途に依存し、特定の実行がすべての用途に対してより良いとは考えられない。以下の説明において、言葉「システム」を、本発明のステップを実行する、コンパイラ、インタプリタ、実行時間システム、または、これらの組み合わせのようなプログラムを意味するために使用する。
オブジェクトの規定
本発明のプログラミングシステムにおいて、プログラマは、以下図４−８に関係して説明するようにオブジェクトおよび動作を別々に規定する。図４は、本発明の第１実施形態において新たなオブジェクトを形成するのに必要なステップを示すフローチャートである。ステップ１００において、オブジェクトを、名前付けし、特性のグループを与えることによって宣言する。例えば、プログラマは、図５に示す「ボタン」と呼ばれるオブジェクト１０２を規定し、図６に示すグラフィカルユーザインタフェース１０６の一部として使用されるボタン１０４を表してもよい。図５は、以下の特性、可視度、境界、表題およびフォントを有するようなボタンオブジェクト１０２を示す。
【００５２】
すべての宣言されたオブジェクトのすべての特性のリストを、例えば、図７に示す特性名テーブル１０８において保持する。ステップ１１６は、オブジェクトが宣言された場合、この新たなオブジェクトの一部であると宣言された特性の名前を、特性名テーブル１０８に存在する特性名と比較し、この新たなオブジェクトと共に宣言された特性名がすでに存在しているかどうかを決定することを示す。
【００５３】
ステップ１１８は、特性名テーブル１０８にまだリストされていない特性名を前記テーブルに入力し、索引することを示す。このように特性名テーブル１０８は、各々の固有特性名１２４に対する固有特性名テーブルインデックス番号１２２を有するエントリーを含む。多数のオブジェクトが同じ特性を含む場合、特性名テーブル１０８においてこの特性に対して１つのエントリーのみが存在する。
【００５４】
特性名テーブル１０８においてエントリーが形成された後、本システムは、特性名１２４のすべての順次の使用を、特性名テーブル１０８からの対応する特性名テーブルインデックス番号１２２に置き換える。コンピュータにとって整数のインデックス値を見つけ、比較することは、不定の長さの英数字列を見つけ、比較するよりも極めて早いため、特性名をインデックス番号に置き換えることは、プログラムの実行を速くする。さらに、特性名テーブルインデックス番号は、形状内の特性を参照付ける自然のまたは標準的な順序を与え、それによって、形状を探索または比較する場合、特性順序の順列を検査する必要性を取り除く。
【００５５】
オブジェクトを宣言する場合、本システムは、この宣言においてプログラマによって指定される特性順序に係わらず、標準的な順序の特性を使用するオブジェクト形状を規定する。したがって、オブジェクトのメモリ構造は、先行技術のシステムと異なり、オブジェクト宣言における特性の順序によって決定されない。例えば、第１のオブジェクトを、可視、境界および表題の特性を有すると宣言した場合、これらの特性名が特性名テーブル１０８に入力される。第２のオブジェクトを、フォントサイズ、表題および境界の特性を有するを宣言した場合、新たな特性フォントサイズが特性名テーブル１０８に入力され、前記第２のオブジェクトの特性は、可視、表題およびフォントサイズのように配置される。同様に、フォントサイズ、表題および可視の特性を有するとして宣言されたオブジェクトは、可視、表題およびフォントサイズの特性を有するとして宣言された他のオブジェクトと同じ形状を有すると見なされる。
【００５６】
先行技術のプログラミングシステムにおいて、プログラマは、データ密閉を、ポインタと、オブジェクトの内部メモリ構造の彼または彼女の知識とを使用することによって、ショートカットすることができる。この習慣は、しばしば有用であるとしても、オブジェクトを規定するプログラムの一部における変更がショートカットを使用するセクションにおける障害を招く恐れがあるため、下手なプログラミング技術であると見なされる。前記宣言における順序からメモリ構造を分離することによって、プログラマがオブジェクトを格納する順序を知らないため、プログラマがこの好ましくないショートカットを行うことを防止する。さらに、構造の宣言順序からの分離は、本システムが前記特性名テーブルを再整理し、形状間の変換に必要な計算を減少することを可能にする。
動作の規定
オブジェクトの動作は、該オブジェクトに用いるメソッドの組を具える。本発明において、動作を一般に規定し、個々のオブジェクトよりも指定された形状に用いる。動作を、前記指定された形状を有するか、動作規定における指定された形状に変換可能な形状を有するどのようなオブジェクトにも適用できる。比喩的に言って、動作を宣言する場合、前記指定された形状または変換できる形状の存在するオブジェクトに「塗布される」または「覆われる」。
【００５７】
メソッドを、該メソッドを用いる形状を指定する動作条項内で規定する。メソッドを、どのようなオブジェクトに関しても別個に規定してもよい。例えば、変更表題フォントサイズと表題を付けられたメソッドを規定し、表題およびフォントサイズ特性を有するオブジェクトにおいて動作させてもよい。この宣言を、
表題、フォントサイズの形状に関する動作
｛
変更表題フォントサイズ（新たなフォントサイズ）
｛
フォントサイズ＝新たなフォントサイズ
｝
｝
のようにしてもよい。
したがって、ボタンオブジェクト１０２（図５）は、前記変更表題フォントサイズメソッドの形状に変換できる、すなわち前記変更表題フォントサイズメソッドの形状のサブセットである形状を有するため、この変更表題フォントサイズメソッドは、ボタンオブジェクト１０２において動作できる。メソッドを、クラスの一部として規定し、この規定するクラスのオブジェクトか、この規定するクラスから得られたオブジェクトにのみ適用できる、以前のプログラミングシステムと相違して、本発明の方法は、オブジェクトの起源に係わらず、必要とする特性を有するどのようなオブジェクトにおいても動作できる。
動作における制限
本発明は、動作における制限も許可する。このような制限は、前記動作を適用するオブジェクトを限定する。動作を、例えば、オブジェクトの特性値または他の特徴に基づいて限定してもよい。例えば、メソッド、ダブルフォントサイズおよびハーフフォントサイズを規定し、形状、フォントサイズおよび可視を有するオブジェクトにおいて、可視特性のみが真の値を有する場合にのみ動作することができる。この宣言を、例えば、
｛
ダブルフォントサイズ（）
｛
フォント＝２＊フォント
｝
ハーフフォントサイズ（）
｛
フォント＝フォント／２
｝
｝
のようにしてもよい。
【００５８】
特性が制限を満たすかどうかを決定する試験を、前記メソッドを呼んだ場合に用いる。動作の適用性における制限を、前記オブジェクトに、前記オブジェクトの特性に対するよりも、全体として用いることができる。例えば、メソッドを規定し、指定されたオブジェクトにおいてのみ、または、指定されたオブジェクトに含まれるか、これから得られるオブジェクトにおいてのみ作用させてもよい。
動作の実行
本発明におけるメソッドを、全体的に、またはオブジェクトに関連して構成することができる。メソッドを構成するこれらの２つの技術のいずれかを、以下に説明する特性値を格納する３つの技術のいずれかと共に使用することができる。メソッドを全体的に構成した場合、メソッドをオブジェクトごとに別々に、例えば、中央メソッドテーブルに格納する。メソッドがオブジェクトにその引き数として呼ばれた場合、本システムは、前記オブジェクトの形状を前記メソッドの形状と比較する。前記オブジェクトの形状が前記メソッドの形状と同じであるか、前記メソッドの形状に変換できる場合、次に前記メソッド制限を、渡されているオブジェクトに関して検査する。前記制限が満たされている場合、前記メソッドを前記オブジェクトにおいて実行する。この実施形態においてメソッドを全体的に構成していても、メソッドにおける制限を含む能力は、例えば、個々のオブジェクトまたは個々のコンテナにおけるオブジェクトに任意に限定すべきメソッドの適用性を許可する。メソッドの実行を、以下により詳細に説明する。
【００５９】
メソッドをオブジェクトに関係して構成する実施形態において、動作が宣言された場合、この新たな動作の形状を、存在するオブジェクトの形状と比較する。前記動作を具えるメソッドへの参照を、前記メソッドの形状か、前記メソッドの形状に変換できる形状かを有する各々の存在するオブジェクトに加える。このようにしてメソッドをオブジェクトに関係付け、前記オブジェクトに関係するメソッドのみが、前記オブジェクトにおいて作用できる。前記メソッドそれ自身の複製を各々のオブジェクトと共に格納することができ、または、前記メソッドの１つの複製に対する参照を格納することができる。メソッドを各々のオブジェクトに関係付ける前に適合性に関して試験するため、メソッドが呼ばれる時に適合性に関して試験する必要はない。動作宣言が制限を含む場合、これらの制限が、特性値のようなプログラム実行中に変化するかもしれないパラメータに基づいているかもしれないため、これらの制限が満たされているかどうかの検査が依然として必要である。オブジェクトから独立してメソッドを規定し、動作における制限を規定する能力は、先行技術によるプログラミングシステムを上回る利点を与える。
形状表
特性名テーブル１０８を保持する他に、本発明のシステムは、図８に概念的に示す形状テーブル１３４も保持する。形状テーブル１３４は、宣言されたオブジェクトおよびメソッドの異なった形状の各々に対する索引エントリー１３５を含む。
【００６０】
図４に戻って、ステップ１３８は、新たなオブジェクトが宣言された場合、本システムが、この新たなオブジェクトの形状と、形状表１３４に存在する形状エントリー１３６と比較し、この新たなオブジェクトの形状が存在する形状と一致するかどうかを決定することを示す。この新たなオブジェクトの形状が存在する形状と一致しない場合、ステップ１４０は、この新たな形状を形状テーブル１３４に加え、対応する新たな形状インデックス値１４２を付けることを示す。
【００６１】
例えば、図８に示す形状１５２を有する図５のボタンオブジェクト１０２に、形状テーブル１３４における第１の形状１３６のようにインデックスを付ける。形状１５２の特性１５４を標準的な順序、すなわち、特性名テーブル１０８におけるこれらのインデックスの順序とし、それによって、形状の一致のために前記形状表を検索する場合に、特性名の順列を検査する必要性を取り除く。特性名の代わりに特性インデックス番号１２２を使用して形状テーブル１３４を保持し、特性名テーブルインデックス番号を標準的な順序において保持することは、変換可能な形状を決定し、特性をマッピングするために必要な検索時間も大幅に減少する。
【００６２】
特性名テーブル１０８に対応する特性名テーブルインデックス番号の他に、形状における各々の特性は、該形状内のその位置に対応するオブジェクト内特性番号１５６も有する。大きいボタンオブジェクト１５８（図９）のような第２のオブジェクトを、ボタンオブジェクト１０２のような第１のオブジェクトと同じ特性を有すると規定した場合、新たな形状は形成されていないため、形状表１３４において追加のエントリーは形成されない。他方において、カラーボタン１６０（図１０）のような新たなオブジェクトを、固有の形状１６２（図８）を規定する特性を有するように宣言した場合、本システムは、新たな形状（可視、カラー、境界、表題、およびフォントサイズ）が存在するどのような形状にも対応しないことを決定し、形状テーブル１３４において新たなエントリー１３６を形成し、インデックス化する。同様に、動作を、指定された形状に適用できるとして宣言した場合、この動作の形状を形状テーブル１３４において存在する形状と比較し、まだ存在しない場合、形状テーブル１３４に加える。言葉「オブジェクト内特性番号１５６」を一般的に使用し、なんらかの「形状内」の特性順序を示し、「メソッド内」をメソッド内の特性順序とする。
【００６３】
新たな形状エントリー１３６を形成した後、図４のステップ１７０は、本システムが、この新たな形状を存在する形状エントリー１３６の各々と比較し、この新たな形状が存在する形状のいずれかに変換可能であるかどうかを決定する。この新たな形状の特性が前記存在する形状の特性のスーパセットである場合、すなわち、この新たな形状が古い形状の特性のすべてと、少なくとも１つの追加の特性とを含む場合、この新たな形状は存在する形状に変換可能である。したがって、前記存在する形状は、この変換可能な新たな形状の射影である。したがって、前記存在する形状の特性の組と、変換可能な新たな形状の特性の組との交差は、前記存在する形状の特性の組である。
【００６４】
前記新たな形状が存在する形状に変換可能である場合、ステップ１７２は、この新たな形状を変換することができる存在する形状を示すこの新たな形状に対する変換可能性エントリー１７４を形状テーブルエントリー１３６において形成することを示す。この新たな形状を２つ以上の存在する形状に変換できる場合、この新たな形状のための形状テーブルエントリー１３６は、この新たな形状を変換することができる各々の存在するエントリーに対する変換可能性エントリー１７４を含む。ステップ１７６は、前記新たな形状のどの特性が、前記存在する形状の特性の各々に対応するかを示すマップ表１７８を形成することを示す。形状テーブル１３４を、前記新たな形状を変換できる存在する形状の数が任意に制限されず、新たな形状を規定するにつれて増加してもよいことを示すために、右端なしで示す。
【００６５】
例えば、形状テーブル１３４（図８）は、形状４が形状１および３のスーパセットであり、したがって、形状１および３に変換可能であることを示す。形状テーブル１３４は、いくつかの実施形態において、形状４を形状１または形状３にどのように変換するかを示すマップテーブル１７８も含む。形状１および３において動作するために規定されるメソッドは、形状４のオブジェクトにおいて、このオブジェクトをマップテーブル１７８に従って変換した後、動作することができる。例えば、形状４および形状３の第１の特性は可視であり、したがって形状４の第１の特性は形状３の第１の特性にマップする。形状３の第２の特性はフォントサイズであり、これは形状４の第４の特性であり、したがって形状４の第４の特性は形状３の第２の特性にマップする。マップテーブル１７８において使用する番号は、オブジェクト内特性番号１５６である。したがって、メソッドは、特性を内部的にこれらの形状内特性番号によって参照することができ、これは、特性名１２４または特性名テーブルインデックス番号１２２に内部的に参照するよりも効率的である。
【００６６】
前記新たな形状を変換できるすべての存在する形状を形状テーブル１３４の新たな形状エントリー１３６に入れ、対応するマップテーブル１７８を形成した後、ステップ１８８は、本システムが逆のプロセスを行う、すなわち、前記存在する形状を解析し、前記新たな形状が前記存在する形状の何らかのサブセットであるかどうかを確かめることを示す。もしそうなら、ステップ１９０は、この新たな形状を変換可能なエントリー１７４として、前記存在する形状のための変換可能な形状のリストに追加することを示し、ステップ１９２は、対応するマップテーブル１７８を形成することを示す。このように、形状テーブル１３４に存在する形状を、各々の新たな形状を追加するごとに更新する。
【００６７】
形状テーブル１３４および特性名テーブル１０８は、本発明を使用するプログラミング用途のための構造を与える。しかしながらこれらのテーブルは、実際のオブジェクトを含まない。本発明のオブジェクトを、図１１に示すようなオブジェクトメモリ構造１９８としてメモリに格納する。オブジェクトメモリ構造１９８は、形状インデックス２００および特性値２０２から成る。この形状インデックスは、形状テーブル１３４におけるインデックス化エントリーに関係する。いくつかの実施形態において、オブジェクトメモリ構造１９８は動作２０４も含み、これは、このオブジェクトに適用できるメソッドへの参照を具える。
データ構成、第１実施形態
図１２に示す第１実施形態において、特性値２０２を、各々の特性の特性名テーブルインデックス番号１２２の昇順においてオブジェクトメモリ構造２０６に格納する。各々の特性値２０２は、同じ長さ、一般に３２ビットを有し、特性値２０２は、特性値ベクトル２０８を集合的に構成する。形状テーブル１３４は、前記オブジェクトの特性を（特性名テーブルインデックスによって）載せ、特性値ベクトル２０８に含まれるデータは、前記オブジェクトのリスト化された特性と１対１の順序で対応する。特性値ベクトル２０８における特性値２０２エントリーのいくつかまたはすべてを、実際の値よりもこれらの値に対するポインタとしてもよい。
【００６８】
特性値ベクトル２０８は、オブジェクトメモリ構造２０６内で特性値にアクセスするためにインデックスを使用することを可能にする。インデックスの使用は、実行するのが簡単であり、値にアクセスするのが比較的高速であるという利点を有するが、この技術は、各々の特性に対するデータを等しいサイズにするか、少なくとも予め規定されたサイズにし、本システムが、オブジェクトメモリ構造１９８において各々のオブジェクトに対するデータエントリーがどこから始まるかを決定できるようにする必要がある。
【００６９】
特性値ベクトル２０８における実際のデータの代わりにポインタを使用することは、実際のデータを異なったサイズのものとすることを許可することによって柔軟性を増し、以下に説明するように承継において使用される。実際には、オブジェクトメモリ構造２０６は、第１にポインタと、一般に小さい整数のような短いデータ形式のみに関して格納される実際のデータとを含む。前記データエントリー領域におけるメモリ位置におけるコードを使用し、その領域におけるデータエントリーが値を表すかポインタを表すかを示すことができる。この実施形態を、フラグを使用し、各々の特性に関してデータ領域の開始および終了を示すことによって実行することもできる。
【００７０】
図１３は、本発明の第１実施形態において使用される形状テーブル１３４の好適な実現化を図式的に示し、この実現化は、特性値ベクトル２０８を含むオブジェクトメモリ構造２０６を使用する。形状テーブル２１８における各々のインデックス化形状エントリー２１６は、２つのポインタ、すなわち、特性の特性リスト２２２を指し示す第１ポインタ２２０と、前記エントリー形状を変換できる形状の変換可能性リスト２３０を指し示す第２ポインタ２２８とを含む。
【００７１】
各々の特性リスト２２２は、前記形状を規定する特性を含む。特性リスト２２２は、実際の特性名１２４よりも、特性名テーブル１０８から特性名テーブルインデックス番号１２２を使用する。上述したように、一度、特性名１２４が特性名テーブル１０８に入力され、特性名テーブルインデックス番号１２２が割り当てられると、特性名は一般に使用されない。特性リスト２２２は、対応するオブジェクトまたはメソッドのプログラマの宣言におけるこれらの特性の順序に係わらず、特性名テーブルインデックス番号１２２の昇順におけるものである。
【００７２】
変換可能な形状の変換可能性リスト２３０における各々のエントリーは、形状インデックス番号２３２と、マップテーブル２４４に対するポインタ２３４とから成る。マップテーブル２４４は、形状エントリー１３６が変換される形状の特性に対応する形状エントリー１３６のオブジェクト内特性番号１５６のリストである。リスト２３０において使用されるオブジェクト内特性番号１５６は、前記形状エントリーにおける特性の逐次番号であり、特性名テーブル１０８からの特性名テーブルインデックス番号ではない。
【００７３】
例として、形状テーブル２１８の第１インデックス化エントリー２１６を検討し、図１３は、第１インデックス化エントリー２１６におけるポインタ２２０が、特性１、２、３および４（各々、特性名テーブル１０８（図７）からの可視、境界、表題、およびフォントサイズに関係する）を含むリスト２２２を指し示すことを示す。ポインタ２２８は、形状テーブル２１８における第３形状に関係する１つのエントリー３のみを有する変換可能性リスト２３０を指し示し、ポインタ２３４はマップテーブル２４４を指し示す。マップテーブル２４４は、形状３の第１および第２特性に対応する形状１の第１および第４特性を示す番号１および４を含む。
【００７４】
形状テーブル２１８のインデックス化エントリー２１６を下げ続けると、形状２および３は特性リストに対するポインタ２２０も含むが、形状２および３は他の形状に変換できないため、これらの変換可能テーブルへのポインタ２２６を空に設定する。形状４に対応する変換可能性リスト２３０は、２つのエントリーを含む。第１のエントリーは、１の値を有する形状２００と、オブジェクト内特性番号１、２、３および４を含む対応するマップテーブル２４４に対するポインタ２３４とを有する。他方のエントリーは、形状インデックス３と、オブジェクト内特性番号１および４を含む対応するマップテーブル２４４に対するポインタ２３４とを含む。
データ構成、第２実施形態
オブジェクトの特性値を格納し、これにアクセスする第２の構造は、特性値格納領域２４８を有する、図１４に例示するオブジェクトメモリ構造２４６を使用する。この実施形態において、特性値格納領域２４８に格納された異なった特性値２０２を、異なった長さのものとすることができる。したがって、特性値２０２は、前記第１実施形態におけるようにベクトルを構成せず、インデックスによって特性値格納領域２４８中にアクセスされない。しかしながら、指定された特性は、異なったオブジェクトの特性値格納領域２４８において同じ格納長を有する。
【００７５】
図１５は、この実施形態において使用される形状テーブル２５０を示す。形状テーブル２５０は、図１３に示す形状テーブル２１８と同様であるが、各々の異なった形状ごとに、ポインタの組２６２から成るメソッドポインタベクトル２５２も含む。各々の組２６２は、前記形状の特性リスト２２２における特性に対応し、対応する特性値を獲得するメソッドへのポインタ２６４と、前記オブジェクトの対応する特性の値を設定するメソッドへのポインタ２６６とを含む。これらのようなメソッドを、ここでは「獲得および設定」メソッドと呼ぶ。これらの獲得および設定メソッドは、対応する形状を有するオブジェクトに関するオブジェクトメモリ構造２４６における特性値の正確な位置およびサイズのトラックを保持し、それによって、異なったサイズの特性値の使用を可能にする。ポインタの組２６２を、これらのメソッドが動作する特性の特性名テーブルインデックス番号の順序において、一般に、特性名テーブルインデックス番号１２２の昇順において格納する。
【００７６】
各々のエントリー２１６のポインタは、各々が形状参照２７８と、変換メソッドベクトル２８２へのポインタとを含むエントリー２７６を有する変換可能性リスト２７４を指し示す。変換メソッドベクトル２８２は、対応するメソッドポインタベクトル２５２におけるポインタ組２６２のサブセットを含み、このサブセットは、形状エントリー２１６が変換される形状に含まれる特性に対応する。
【００７７】
例えば、図１５は、第４形状エントリー２１６のポインタ２２８が、１つが形状１に対応し、１つが形状３に対応する２つのエントリー２７６を有する変換メソッドベクトルを指し示すことを示す。形状３に対応する特性リスト２２２は、形状３が、２つの特性、可視（特性名テーブルインデックス番号１）およびフォントサイズ（特性名テーブルインデックス番号４）を含むことを示す。したがって、対応する変換メソッドベクトル２８２は、各々がポインタ２６４および２６６の組２６２を具える２つのエントリーも有する。例えば、３つの形状を有するメソッドに形状４のオブジェクトを入れた場合、本システムは、このオブジェクトの前記メソッド形状において形状内特性番号２を有するフォントサイズ特性に、形状４から形状３に変換する変換メソッドベクトル２８２におけるポインタの第２の組２６２を使用することによってアクセスする。
【００７８】
この実施形態において、各々のオブジェクトごとに１つのオブジェクトメモリ構造２４６が存在し、各々の形状ごとに獲得および設定メソッドの１つのテーブルが存在する。この第２実施形態は、Ｃ＋＋における仮想機能テーブルにいくぶん類似しているが、各々の形状に関するメソッドを、仮想機能番号よりもオブジェクト内特性番号１５６によってインデックス化する。
【００７９】
この実施形態の一変形例において、前記獲得および設定メソッドを１つのメソッドに結合することができ、追加の独立変数を前記メソッドに渡し、前記特性を設定すべきかまたは検索すべきかを示すことができる。他の変形例において、獲得および設定メソッドへのポインタのベクトルを、前記オブジェクトおよびオブジェクト内特性番号を渡された場合、適切な特性値にアクセスする１つの獲得および設定ハンドラメソッドへのポインタに置き換えることができる。この場合において、戻るべき特性値を、前記獲得および設定ハンドラメソッド内で、例えば、前記メソッドが呼ぶ前に決定し、次に適切なメソッドを呼ぶよりも、「スイッチ」文を使用することによって決定する。
【００８０】
上述した２つの実施形態において、特性値に、値またはメソッドのいずれかのベクトルへのインデックス値によってアクセスする。第３実施形態は、特性値に、スモールトークのようなオブジェクト指向言語において使用されるものに類似する実行時間メソッドテーブルを使用してアクセスする。この実施形態において、すべての特性を、前記特性を設定する、またはこれに戻るメソッドとして取り扱う。
データ構成、第３実施形態
この第３実施形態は、図１６に示すようなオブジェクトメモリ構造２８８を使用する。この実施形態における各々のオブジェクトメモリ構造２８８は、その形状を形状テーブルに関して示す形状インデックス２００と、動作２９０と、特性値２９２とを含む。動作２９０は、前記オブジェクトの特性の各々を獲得および設定するメソッドへの参照と、前記オブジェクトにおいて動作する他のメソッドへの参照とを含む。この実施形態は、前記特性値を獲得および設定するメソッドが、前記形状に関係するよりも前記オブジェクトに関係する点において、上述した実施形態と異なる。すなわち、同じ形状を有するすべてのオブジェクトに対して獲得および設定メソッドの１つの組が存在するよりも、各々のオブジェクトに対して１つの組が存在する。したがって、前記獲得および設定メソッドを異なったオブジェクトごとに異ならせることができるため、各々のオブジェクトメモリ構造２８８内のデータを、なんらかの指定された順序とする必要はない。
【００８１】
図１７は、前記第３実施形態において使用される単純化した形状テーブル２９６を示す。各々の形状エントリー２９８は、特性リスト３０２に対するポインタ３００と、変換可能性リスト３１０に対するポインタ３０８とを含む。変換可能性リスト３１０は、前記エントリーの形状を変換することができる形状のリストのみを具え、マップテーブルに対するポインタを含まない。特性リスト３０２は、特性名テーブル１０８（図７）に参照する特性名テーブルインデックス番号１２２を含む。形状間でどのように変換するかを示す必要はない。以下により詳細に説明するように、特性に、オブジェクト内特性番号１５６によりも、特性名テーブルインデックス番号１２２に参照するメソッド呼出しによってアクセスする。
【００８２】
形状テーブル２９６における特性は、依然として特性名テーブル１０８からインデックス値１２２を使用する標準的な順序において保持され、その結果、特性順序の順列を気にすることなく、形状テーブル２９６におけるエントリーを新たに宣言されたオブジェクトの形状と比較することができる。
メソッドの形成および実行
メソッド実行の詳細は、上述した３つのデータ構成実施形態のどれを使用するかと、前記２つの技術の内どちらをメソッドの構成に使用するか、すなわち、全体的なメソッドテーブルによるか、オブジェクトに関連するかとに応じて変化する。前記メソッドの実行を、一例のメソッド、ダブルフォントサイズに関して説明し、本発明の原理を説明する。
【００８３】
図１８は、上述した最初の２つのデータ構成実施形態のいずれかを使用するシステムにおける動作の形成に必要なステップを示す。ステップ３１６は、第１動作の形成を示し、例えば、
形状に関する動作（可視、フォントサイズ）
可視＝真を満たす
ダブルフォントサイズ（）
｛
フォントサイズ＝２＊フォントサイズ
｝
終了
とする。
【００８４】
ステップ３１８は、形状テーブル１３４（この形状テーブルの形態は、上述した実施形態の内どれを実行するかに依存する）を検索し、前記動作の形状が新しいかどうかを決定することを示す。ステップ３２０は、前記動作が前記形状テーブルにおいてあるものに対応しない場合、この新たな形状を入力することを示す。本例において、前記形状（可視、フォントサイズ）を、形状テーブル１３４において形状番号３としてすでにインデックス化した。
【００８５】
次に、ステップ３３０は、本システムが、形状テーブル１３４から、形状１および４が形状３に変換可能であることを決定することを示す。ステップ３３２は、本システムが、形状３、１または４を有するすべてのオブジェクトを見つけ、ダブルフォントサイズ（）メソッドへの参照を、各々のオブジェクトの動作リストに加えることを示す。メソッドがオブジェクトに関係しない実施形態において、ステップ３３０および３３２を行わない。前記新たに宣言されたメソッドを、代わりに全体的なメソッドテーブルに加える。
【００８６】
上記例を続けて、カラーボタンオブジェクトを以下のように宣言する。
【００８７】
オブジェクトカラーボタン
有する
可視              ブール
境界              矩形
テーブル題              テキスト
フォントサイズ    整数
カラー            整数
終了
終了
図１９は、カラーボタンのようなオブジェクトにおいてメソッドを呼ぶために行うステップを説明するフローチャートである。ステップ３３４は、このプロセスが、メソッドが呼ばれたときに開始することを示す。例えば、ダブルフォントサイズと呼ばれるメソッドを、カラーボタン．ダブルフォントサイズ（）のようなコードの列によって呼び、オブジェクトカラーボタンにおいて動作させることができる。
【００８８】
ステップ３３６に示すように、次にコンパイラは、一般に、元のメソッド呼出しを前記ダブルフォントサイズメソッドに対する変更されたメソッド呼出しに変換し、この変更された呼出しは、「不可視パラメータ」としてカラーボタンオブジェクトへの参照を有し、例えば、ダブルフォントサイズ（カラーボタン）として現れる。
【００８９】
メソッドがオブジェクトに関係しない実施形態において、ステップ３３８は、前記メソッドが呼ばれるオブジェクトの形状を、前記オブジェクトのオブジェクトメモリ構造１９８（図１１）から決定することを示す。
【００９０】
ステップ３４２は、前記全体的なメソッドテーブルを検索し、前記呼ばれたメソッドの名前と一致するメソッド名を有するメソッドを見つけることを示す。一致するメソッド名を見つけた場合、ステップ３４４は、前記メソッドが呼ばれたオブジェクトの形状を、この見つけられたメソッドの形状と比較することを示す。前記オブジェクトの形状が、前記メソッドの形状と同じであるか、これに変換可能である場合、前記メソッドを実行するプロセスを続ける。そうでなければ、ステップ３４２を繰り返し、すなわち、前記全体的なメソッドテーブルを検索し、他の一致するメソッド名を見つける。
【００９１】
メソッドがオブジェクトに関係する実施形態において、メソッド呼出しは、前記オブジェクトに関係するメソッドテーブルを検索させる。前記オブジェクトに関係するメソッドテーブルに含まれるすべてのメソッドは、前記オブジェクトとの変換可能性に関してすでに検査されており、したがって、追加の形状検査は必要ない。
【００９２】
メソッドテーブルにおいて前記呼ばれたメソッド名と一致するメソッド名を有するメソッドを見つけ、前記メソッドが呼ばれたオブジェクトと比較した後、ステップ３５０は、前記オブジェクト形状からメソッド形状に変換する手段への参照を、不可視パラメータとして前記メソッド呼び出しに加えることを示す。
【００９３】
前記最初の２つの実施形態において、前記コンパイラは、一般に、特性名１２４と、メソッドまたはオブジェクトにおける特性名テーブルインデックス番号１２２とに対する参照を、オブジェクト内または形状内特性番号１５６に減らしているため、変換手段が必要である。上述したデータ構成に関する第１実施形態において、形状間の変換手段はマップテーブル２４４（図１３）である。上述したデータ構成に関する第２実施形態において、形状間の変換手段は変換メソッドベクトル２８２（図１５）である。前記メソッドの形状が前記オブジェクトの形状と同じである場合、一致マッピングを使用する。上述したデータ構成に関する第３実施形態において、オブジェクト内特性番号よりも、実行時ルックアップによって特性値を参照し、したがって、形状間で変換するために追加の手段は必要ない。
【００９４】
適切な形状のメソッドをロードした後、ステップ３５８は、前記オブジェクトを、何らかの「応じる条項」、すなわち前記メソッドにおける制限の承諾に関して検査することを示す。ダブルフォントサイズの例において、特性可視の値を検査し、真であるかどうかを決定する。特性の値を得る技術を以下に説明し、この技術は、どのデータ構成実施形態を使用するかに応じて変化する。どの制限も満たさない場合、ステップ３４２を繰り返し、他のメソッドを捜す。制限が満たされた場合、ステップ３６０は、前記メソッドを渡されたオブジェクトに実行することを示す。
特性にアクセス
メソッド実行中、オブジェクトの特性の値にアクセスし、この値を検索するか、設定することが必要である。特性値にアクセスするために使用する技術は、前記特性値をどのように格納するかに依存するであろう。
【００９５】
上記ダブルフォントサイズメソッドの例において、メソッドの実行は、フォントサイズ特性の値を得て、それに２を掛けて、その結果をフォントサイズ特性の新たな値として格納することを必要とする。ダブルフォントサイズメソッドの形状において、フォントサイズは第１特性であり、表題は第２特性である。ダブルフォントサイズメソッドをコンパイルした場合、コンパイラは、一般に、フォントサイズに対する参照を特性１に対する参照に交換し、表題に対する参照を特性２に対する参照に交換する。この交換は、実行速度を上昇させる。
【００９６】
しかしながら、カラーボタンオブジェクトにおいて、第１および第２特性は可視および境界であり、フォントサイズは第４特性である。実行中、前記メソッドは、マップテーブル２４４または変換メソッドテーブル２８２を使用し、ダブルフォントサイズメソッドにおいて使用するために、カラーボタンオブジェクトにおける正しい特性にアクセスする。
第１実施形態
特性値を特性値ベクトル２０８に格納する上述したデータ構成に関する第１実施形態において、フォントサイズ特性の値に、図２０のフローチャートによって示されるようにアクセスする。ステップ３６４は、このプロセスが、本システムが前記メソッドに渡されたオブジェクトの特性値を要求した時に開始することを示す。オブジェクト内の特性を、一般に、これらのオブジェクト内特性番号によって呼ぶ。上述したように、前記オブジェクト、すなわちカラーボタンのマップテーブルへの参照は、前記メソッド呼出しの独立変数パラメータとして含まれる。ステップ２６６は、形状テーブル２１８（図１３）のマップテーブル２４４を調べ、形状４のカラーボタンオブジェクトから形状３にどのように変換するかを決定する。形状４から形状３に変換するマップテーブル２４４は、要素として１および４を有し、形状４の第１および第２特性が形状１のオブジェクトにおける第１および第４特性に対応することを示すリストを具える。
【００９７】
したがって、ダブルフォントサイズメソッドは、オブジェクトカラーボタンの第４特性にアクセスし、そのフォントサイズ特性を得る。ステップ３６８は、特性値ベクトル２０８における第４エントリーが検索であることを示す。ステップ３７０は、検索されたデータエントリーを、例えば、フラグビットを読み取り、前記データエントリーがデータ値に対応するか、ポインタに対応するかを決定することによって検査することを示す。ステップ３７２は、前記検索されたデータエントリーがポインタである場合、このポインタに従い、フォントサイズの実際のデータエントリー値を検索することを示す。ステップ３７４は、前記特性値を検索または設定することを示す。
【００９８】
ダブルフォントサイズメソッドの実行は、フォントサイズの前記検索された値に２を掛けることによって続く。次にこの結果を、フォントサイズ特性の新たな値としてボタンオブジェクトに格納する。特性値の格納は、マップテーブル２４４にアクセスし、格納すべき特性値のオブジェクト内特性番号を決定し、この新たな値を正しい場所に書き込むか、この新たな値に対するポインタを正しい場所に書き込むことを必要とする。
【００９９】
前記メソッドの形状が前記オブジェクトの形状と同じである場合、変換する必要はなく、同一マップテーブルを使用する。
第２実施形態
図２１は、獲得および設定メソッドに対する参照が形状テーブル２５０（図１５）における各々の特性に関係する、データ構成に関する前記第２実施形態において、特性にアクセスするために使用されるステップを示すフローチャートである。上述したように、この実施形態におけるメソッド呼出しは、２つの不可視パラメータ、すなわち、渡されたオブジェクトに対する参照と、前記オブジェクトの形状およびメソッドの形状間で変換する手段に対する参照とを含む。この実施形態において、前記変換手段は、前記オブジェクトの形状から前記メソッドの形状に変換する、対応する変換メソッドベクトル２８２である。変換メソッドベクトル２８２におけるエントリーは、第２の形状の特性の順序においてリスト化された第１の形状の各々に特性に関する前記獲得および設定メソッドに対するポインタである。
【０１００】
ステップ３８２は、対応する変換メソッドベクトル２８２に対する参照を、関数呼び出しから得ることを示す。ステップ３８４は、前記メソッドからの形状内特性番号１５６（図８）をインデックスとして変換メソッドベクトル２８２中に使用し、オブジェクトメモリ構造２４６における特性値にアクセスするメソッドに対するポインタ２６４および２６６の適切な組２６２を決定することを示す。ステップ３８６は、前記特性値を獲得または設定するために適切なメソッドを実行することを示す。
【０１０１】
例えば、形状１から形状３に変換する変換メソッドベクトル２８２において、前記エントリーは、形状１オブジェクトの可視特性に関する獲得および設定ハンドラに対するポインタに続き、形状１オブジェクトのフォントサイズ特性に関する獲得および設定ハンドラに対するポインタを具える。したがって、変換メソッドベクトル２８２における獲得および設定ハンドラに対するポインタを使用し、それによって形状１から形状３に変換することによって、カラーボタンのフォントサイズ特性にアクセスする。前記獲得および設定メソッドに、カラーボタンオブジェクトを確認し、その特定のオブジェクトの特性値にアクセスしていることを示す他の独立変数パラメータ、自己参照を渡す。
【０１０２】
メソッドが動作するオブジェクトがこのメソッドと同じ形状を有する場合、前記特性値に、変換メソッドベクトル２８２の代わりにメソッドポインタベクトル２５２を使用してアクセスする。
第３実施形態
上述したようなデータを構成する第３実施形態を使用する場合、メソッドを実行するために使用されるステップは、図１９に示すステップと同様であるが、いくつかの違いがある。メソッドをこの実施形態においてコンパイルする場合、特性名１２４は特性名テーブルインデックス番号１２２に減少されるが、オブジェクト内特性番号には減少されない。したがって、マップテーブル２４４も変換メソッドテーブル３５６も必要なく、したがってこれらは形状テーブル２９６（図１７）に含まれない。
【０１０３】
メソッド実行中、カラーボタンオブジェクトのフォントサイズ特性のような特性を、その特性名テーブルインデックス番号によって呼ぶ。カラーボタンオブジェクトのフォントサイズ特性の値にアクセスするために、ダブルフォントサイズメソッドは、フォントサイズと名付けられたメソッドを呼び出す。ダブルフォントサイズメソッドは、オブジェクトカラーボタンにおいて動作するため、カラーボタンに対する自己参照は、独立変数パラメータとしてフォントサイズに対する呼出しに含まれる。フォントサイズに対する呼出しは、フォントサイズの特性値を設定すべきか検索すべきかを示すフラグも含む。
【０１０４】
この実施形態において、各々のオブジェクトに関する動作２０４は、各々の特性の名前を有するメソッドを含み、このメソッドは、前記特性値を獲得または設定するためのアクセスである。オブジェクトの特性に対する参照を、前記オブジェクトに対するメソッド呼出しとして取り扱う。前記メソッド名はアクセスすべき特性を示し、前記メソッド呼び出しは、適用可能なオブジェクトを識別する自己参照と、前記値を設定すべきか検索すべきかを示すフラグとを含む。
【０１０５】
次に前記オブジェクトの動作を含むメソッドテーブルを探索し、前記適切なメソッドを実行し、前記特性値を検索または設定する。上述した第２実施形態におけるように、獲得および設定メソッドは、前記特性値の正確な位置およびサイズのトラックを保持する。しかしながらこの実施形態において、各々の形状が獲得および設定メソッドを有するのではなく、各々のオブジェクトがそれ自身の獲得および設定メソッドを有する。これらのメソッドは各々のオブジェクトに固有であるため、同じ形状のオブジェクト内の特性値のメモリ貯蔵を異ならせることができる。さらに、インデックス化されているのと反対に、前記メソッドテーブルを探索し、前記獲得および設定メソッドを見つけるため、前記テーブルに載せられたメソッドを、何らかの特定の順序とする必要はない。
【０１０６】
図２２は、メソッドの実行中の特性値へのアクセスに含まれるステップを説明するフローチャートである。このプロセスは、特性値が要求されたとき、ステップ３９２で開始する。ステップ４００は、要求された特性の特性名テーブルインデックス番号を、この特性を検索すべきか、または設定すべきかを示すフラグと共に、元もメソッド呼出しの自己独立変数パラメータによって示される前記オブジェクトのメソッドテーブルに渡すことを示す。ステップ４０２は、前記メソッドテーブルを探索し、前記示された特性名テーブルインデックス番号と、獲得または設定フラグとに対応するメソッドを見つけることを示す。ステップ４０４は、適切な獲得または設定メソッドを実行し、前記特性値を返すか、設定することを示す。
【０１０７】
図２２におけるステップは、特性の簡単な獲得または設定を行う場合、形状テーブルへのアクセスを必要としないことを示す。しかしながら、形状テーブルは、どの形状を他の形状に変換できるかを示すために依然として必要とされる。
【０１０８】
上述したデータ構成に関する最初の２つの実施形態において、前記コンパイラが、特性名テーブルインデックス番号１２２（図８）からのメソッドまたはオブジェクトにおける特性に対するすべての参照を、オブジェクト内特性番号１５６に変換し、プログラム実行中にこれらの特性にアクセスするために必要な時間を短縮することが望ましい。メソッドに１つのオブジェクトを渡した場合、前記コンパイラは、上述した技術を使用し、特性名テーブルインデックス番号１２２を使用する特性値に対する参照を、作用される前記オブジェクトのオブジェクト内特性番号１５６に変換することができる。前記オブジェクトと、マップテーブル２４４またはメソッド変換テーブル２８２とに対する自己参照は、前記メソッド中へのエントリーにおいて得られ、したがって、これらのパラメータは、前記メソッドにおいてコード化された特性名を、前記メソッドに送られるオブジェクトのオブジェクト内特性番号に減らすために利用可能である。
【０１０９】
しかしながら時々、前記メソッドが呼ばれるオブジェクトの特性値以外に、オブジェクトの特性値を得る必要がある。これらのような場合において、前記コンパイラは、依然として、特性名をオブジェクト内特性番号に減らそうとするであろう。アクセスされている特性値が、前記メソッドが呼ばれる自己オブジェクトのものではないため、対応する変換手段に対するポインタは、前記メソッド呼出しによって渡されない。したがって、前記コンパイラは、アクセスされている特性値を有するのはどのようなオブジェクトであるかを決定し、このオブジェクトの形状を得て、前記形状テーブルにおいて対応する変換手段を位置決めることを必要とする。このとき前記コンパイラは前記変換手段を使用し、前記メソッドにおける特性を、前記特性を有するオブジェクトに関するオブジェクト内特性番号に変換することができる。
【０１１０】
いくつかの場合において、前記特性を有するオブジェクトの形状は、前記コンパイラに知られているかもしれない。このような場合において、特性名テーブル１２４をその特性名テーブルインデックス番号１２２に減らすが、さらにオブジェクト内特性番号に減らすことはできない。つぎに、前記オブジェクトの形状が決定された場合、特性名テーブルインデックス番号１２２を使用し、実行時における特性値に参照する。データ構成に関する前記最初の２つの実施形態において、特性リスト２２２（図１３、１５）を探索し、前記オブジェクト内特性番号を決定し、このオブジェクト内特性番号を、特性値ベクトル２０８か、メソッドポインタベクトル２５２へのインデックスに使用し、前記特性値を得る。
オブジェクト記述のオブジェクト貯蔵からの分離
本発明の形状の使用と特性値を格納する技術とは、結果として、図１に示すようにオブジェクトに関係するデータを特性が宣言または承継された順序に格納する、Ｃ＋＋のような先行技術のオブジェクト指向言語におけるよりも、柔軟なプログラミング環境が得られる。
【０１１１】
形状テーブル１３４の構造および内容は本発明の異なった実行において変化するであろうが、ある機構を設けて、第１セットの特性を有する第１形状から第１セットの特性のスーパセットを有する第２形状に変換することを理解できる。さらに、特性名は、上記実施の形態の各々において、アプリケーション内で独自のものであり、特性名テーブルによって序列化される。このような配置によって、メソッド及びオブジェクトは、内部インデックス番号、すなわち、オブジェクト内又はメソッド内特性番号によって特性を言及することができ、これによって、効率を向上させるとともに、複数オブジェクト及びメソッドを有するシステムのオブジェクト及び動作の実現を容易にする。
【０１１２】
従来の精密な記憶構造は、親の全ての特性及びメソッドが子オブジェクトによって承継され、これによって発明の背景区分に記載された複数承継に伴う問題が生じる。本発明の独自のアーキテクチャによって、オブジェクトの実際の記憶構造をプログラマのオブジェクトの表示から分離することができる。この分離によって、割り当てるメモリのコンパイラに柔軟性を与えるとともに、これまで実際的でなかった最適化をコンパイラが自由に実行する。例えば、コンパイラは、親オブジェクト及び子オブジェクトのように相違するオブジェクト間で記憶構造を共有することができる。構造及び表示の分離によって、承継を規定する際により柔軟性を許容することもできる。
ファセット（登録商標）−タイプサブグループ承継
オブジェクト内プロパティのセットを互いにグループ化するとともにオブジェクトの特定の態様として処理することができる。このような態様を、ファセット（登録商標）−タイプ特性サブグループと称する。プログラマは、宣言と、オブジェクトのファセット（登録商標）−タイプ特性サブグループを親オブジェクトから承継するオブジェクト配置によって制御することができる。親オブジェクトを、子オブジェクトの対応するファセット（登録商標）−タイプ特性サブグループが承継されるファセット（登録商標）−タイプ特性サブグループに分割することもできる。ファセット（登録商標）−タイプ特性サブグループを通じた承継を、ｈａｓ−ａ階層又はｉｓ−ａ階層で実現することかできる。ｈａｓ−ａ階層において、特性は、子オブジェクトがどの親オブジェクトに配置されていようと対応するファセット（登録商標）−タイプ特性サブグループから承継される。ｉｓ−ａ階層において、特性は、特定の親のファセット（登録商標）−タイプ特性サブグループから承継される。ｈａｓ−ａ階層は、オブジェクトプロトタイプモデルに基づくアーキテクチャにより好適になり、それに対して、ｉｓ−ａ承継階層はクラスインスタンスモデルにより適切になる。
【０１１３】
ファセット（登録商標）−タイプ特性サブグループの使用を通じて、本発明は、単一オブジェクトが、複数の（ｈａｓ−ａ）親オブジェクトに含まれるとともに複数の（ｉｓ−ａ）親オブジェクトから取り出されるようにするとともに、子オブジェクトのファセット（登録商標）−タイプ特性サブグループが親オブジェクトの各々から承継される宣言によってプログラマが指定することができるようになり、これによって、承継の細分性及び柔軟性を著しく増大させる。各ファセット（登録商標）−タイプ特性サブグループが一つの親を有し、子オブジェクトのファセット（登録商標）−タイプ特性サブグループ内の個々の特性を、親から承継されたもの又は承継されなかったものとして指定することができる。したがって、オブジェクトを宣誓して、関連の親から要求された特性のみを承継することができる。実際には、本発明は、複数の承継を複数の単一承継に変換し、これによって、従来の複数承継形態の際の承継の混乱を除去する。
【０１１４】
本明細書は、ｈａｓ−ａ階層を用いたファセット（登録商標）−タイプ特性サブグループの実現を以下説明するが、当業者は、同様なメソッドでｉｓ−ａ階層を用いて本発明を実現することができる。
【０１１５】
以下は、オブジェクトＡ〜Ｆに対するオブジェクト宣言の一例であり、これは、図２３に示すようにｈａｓ−ａ承継階層中に現れる。
オブジェクトＡ
｛
ファセットフォント
特性フォントサイズ
特性制御コンポーネント
ファセット構造
特性充填
特性スクロールコンポーネント
｝
オブジェクトＢ
｛
ファセットスタイル
特性充填
ファセット背景
特性色
特性制御コンポーネント
特性スクロールコンポーネント
｝
オブジェクトＣ
｛
ファセットフォント
特性フォントサイズ承継
特性ボックスコンポーネント
ファセット背景
特性色承継
｝
オブジェクトＤ
｛
ファセット背景
特性色承継
ファセット構成
特性充填承継
特性ボックスコンポーネント
｝
オブジェクトＥ
｛
ファセットフォント
特性フォントサイズ承継
特性表題
メソッド１
ファセット出現
特性可視性
ファセット構成
特性充填承継
特性境界
メソッド２
｝
オブジェクトＦ
｛
ファセットフォント
特性フォントサイズ
ファセット出現
特性可視性
｝
図２３のオブジェクトは、従来技術の複数承継を説明した図３のものと類似している。しかしながら、本発明において、ファセット（登録商標）−タイプ特性サブグループ内の特性が承継される親を指定することができ、特性が承継された及び承継されないことを指定することができる。
【０１１６】
図３の例において、両オブジェクトＡ及びＢは、充填と称された特性を有する。従来技術のプログラミングシステムにおいて、オブジェクトＥは最終的には両方の充填特性から承継され、Ｅの充填特性を要求するときいずれの充填特性にアクセスするのかを決定するのは困難であった。オブジェクトＣに規定されたメソッドが、オブジェクトＡ又はＢからの指定された充填特性を有することに依存する場合、オブジェクトＥがオブジェクトＣからメソッドを承継したにもかかわらず、メソッドがオブジェクトＥ上で作動するか否か不確実である。
【０１１７】
これら問題は本発明によって解決される。図２３及び対応する上記宣言は、オブジェクトＡ〜Ｆがそれぞれファセット（登録商標）−タイプ特性サブグループに分割され、各ファセット（登録商標）−タイプ特性サブグループは、指定された特性を含むものとして宣言される。
【０１１８】
オブジェクトＡの制御特性のような承継特性のそれ自体の一部である特性は、「コンポーネント」オブジェクトとしてタグを付けられる。特性がコンポーネントとしてタグを付けられると、その特性に割り当てられたオブジェクトは承継階層に参加することができ、すなわち、割り当てられたオブジェクトは、親コンテナから値を承継する特性を有することができる。例えば、オブジェクトＣはボタンオブジェクトを表すことができる。オブジェクトＣが、Ａ．制御＝Ｃのような割当て状態によるようなオブジェクトＡに配置されると、「ゲートウェイ」は、オブジェクトＡのフォントファセットのフォントサイズのような特性の値に対してオープンされて、オブジェクトＣのフォントファセットの同一特性に流す。コンポーネントとして特性制御のオブジェクトＡにおける説明が承継に対するゲートウェイをオープンしたとしても、指定された特性が承継されるか否かは子オブジェクトの宣言によって制御される。オブジェクトＣのフォントサイズ特性上のタグ「承継」は、フォントサイズ値がコンテナ親の対応するファセットの同一名の特性から承継されることを表す。フォントファセットを有する任意のオブジェクトを、オブジェクトＡの制御コンポーネントとして配置することができる。したがって、好適な実現において、特性が子オブジェクトのファセットに存在し、かつ、子オブジェクトが、子オブジェクトファセットと同一名を有するとともに同一特性を有する親オブジェクトファセット内のコンポーネントに配置されると、子の特性が「承継」のタグを付けられる場合に子オブジェクトの特性は親オブジェクトの特性の値を承継する。
【０１１９】
例えば、上記宣言及び図２３において、オブジェクトＣはオブジェクトＡ及びオブジェクトＢの両方に含まれる。オブジェクトＣを、例えばニュースレターストリーとし、オブジェクトＡ及びＢを、ニュースレターのページ及び欄又はニュースレターそれ自体とすることができる。オブジェクトＣのフォントファセットのフォントサイズ特性は、承継されたものとしてタグされる。オブジェクトＣは、オブジェクトＡのフォントファセットに含まれる。したがって、オブジェクトＣのフォントサイズ特性はオブジェクトＡから承継される。オブジェクトＣも、オブジェクトＢの背景ファセットに含まれる。したがって、オブジェクトＣの背景ファセット中に存在するとともに承継に対してタグされた特性色は、オブジェクトＢから承継される。
【０１２０】
同様に、オブジェクトＤは両オブジェクトＡ及びＢに含まれる。オブジェクトＤは、オブジェクトＢ及びＡからそれぞれ特性色及び充填を承継し、その構成ファセットの特性充填をオブジェクトＥの構成ファセットにパスさせる。オブジェクトＥの出現ファセットの特性可視性は、ｉｓ−ａ承継を通じてオブジェクトＦから値を承継する。その理由は、オブジェクトＦは、オブジェクトＥのファセット出現の親として指定されるからである。
【０１２１】
したがって、承継は、オブジェクトの外側に存在する承継の順序及び調停ルールよりはオブジェクト規定のファセット（登録商標）−タイプ特性サブグループの明快な宣言によって決定される。オブジェクトＥは充填された特性をオブジェクトＣから承継するのかオブジェクトＤから承継するのかを、外部ルールのセットからではなくオブジェクトＥ及びその直接の親内で決定される。プログラマは、オブジェクトＣに配置されたオブジェクトＥが単にオブジェクトＥ及びＣの宣言を観察することによってオブジェクトＣからフォントサイズ特性を承継する。オブジェクトＡから特性フォントサイズを承継するとともにオブジェクトＢから特性色を承継することに依存するオブジェクトＣのメソッドは適切に行われる。その理由は、承継が宣言によって指定されるからである。実際には、本発明は、各々をファセット（登録商標）−タイプ特性サブグループとして説明した単一承継の複数の場合に対する複数の承継を減少させる。
【０１２２】
図２４Ａ及び２４Ｂは、本発明の選択的な承継（図２４Ａ）と選択的でない従来技術の承継（図２４Ｂ）とを対比するための図１及び２の水上飛行機の例を用いる。図２４Ａ及び２４Ｂはそれぞれ、親オブジェクトの飛行機１０及びボート１２を有する水上飛行機オブジェクト４１６及び水上飛行機オブジェクト４１８をそれぞれ示す。図２４Ａは、着陸又は着水装置のような特性が子に要求されない場合にはそれを承継しないことも示す。したがって、親コンテナが、承継のために子オブジェクトに利用できる特性の全てを作成したとしても、「ゲートキーパ」として作用するとともに親からのどの情報が子オブジェクトに流れ出すかの宣言によって決定されるのは子オブジェクトである。図２４Ｂは、従来技術において親の全ての特性が承継されるとともにメソッド間の不一致が水上飛行機オブジェクトの外側のルールによって解決されるとともに承継の順次に関連することを示す。図２４Ａは、本発明において承継が水上オブジェクト４１６内で制御されることを示す。オブジェクトの特性の一部はそれ自体、他のオブジェクトを含むオブジェクトであり、オブジェクトの特性の一部はオブジェクトの簡単な属性であることを理解することができる。
【０１２３】
図１２に図示したようなオブジェクト記憶構造２０６を用いる情報データ構造の第１の実施の形態において、特性値は、オブジェクトの一部として特性値ベクトル２０８内に格納される。特性を、実際の値として又は値に対するポインタとして格納することができる。この記憶技術を用いて特性値を承継するために、子オブジェクトのオブジェクト記憶構造２０６は、親オブジェクトのオブジェクト記憶構造２０６に格納された値に対するポインタを有する。このような実施の形態において、アプリケーションのユーザは、親オブジェクト特性２０８に対するポインタを実際の値又は新たな値に対するポインタに置換することによって、承継された値の変更を強いることができる。
【０１２４】
図２５は、特性の承継の一例を示す。ニュースレターオブジェクト４２０は、フォント特性４２２及びページ特性４２４を有する。オブジェクトページ１はフォント特性４２８を有する。典型的な宣言は、
オブジェクトニュースレター
｛        ファセット  タイプスタイル
特性ページコンポーネント
特性フォント
｝
オブジェクトページ１
｛        ファセット  タイプスタイル
特性フォント承継
特性欄
｝
として現れる。オブジェクトページ１は、
ニュースレター．ページ＝ページ１
のような表現によってニュースレターオブジェクトのページスロットに配置される。
【０１２５】
ページ１オブジェクト４２４の宣言において、そのフォント特性４２８は、その親から承継されたものとして宣言される。親コンテナからｈａｓ−ａ階層を通じて承継される特性を、ここでは「周囲」特性と称する。その理由は、その値がその周囲の環境によって決定されるからである。図２５は、ページ１オブジェクト４２４に対するオブジェクト記憶構造２０６（図１２）のフォント特性４２８に対する値がニュースレターオブジェクト４２０に対するオブジェクト記憶構造２０６のフォント特性４２２エントリに対するポインタである。
【０１２６】
図１４に図示したオブジェクト記憶構造２４６を用いる上記第２の実施の形態において、特性値は、親オブジェクトの対応する特性を指示するオブジェクト記憶構造２４６内の値をセットすることによって承継される。子の特性の値をセットするように試みると、システムは値をセットすることができ、これによって親特性値に対するリンクを除去する。特性をセットすることを許容しない場合には承継を要求し、親の値を変更すると、親は子からの承継を許容する。典型的には第１オプションが用いられ、これによって親からのデフォルト値を重ね合わせることができる。
【０１２７】
第３の実施の形態において、適正値のインデックス化されたベクトルすなわち獲得及びセットハンドラ法に対するポインタが存在しない。全ての値は検索され、すなわち、メソッドを用いる実行時間中に拘束されるメソッドを用いて各オブジェクトに対するルックアップテーブルをセットする。したがって、承継された特性を得るために用いられるメソッドは、親で用いられるメソッドを呼び出すために規定される。上記実施の形態のように、セットファンクションはヌル値にリターンし、これによって、承継された値が重なるのを防止し、すなわちセットファンクションは値をセットしてセットファンクションを変更することができ、その結果、親の値にリターンするよりはむしろその値にリターンする。
【０１２８】
上記承継技術は、ワンウェイ抑制承継を提供し、すなわち、親の特性の値は、個の特性の値となるが、子の値の変化によって親の値は変化しない。本発明を、子の変化が親に戻すことができるように実現することができる。本発明を、親と子オブジェクト間のファセット（登録商標）−タイプ特性サブグループ名の識別が承継に対して予め要求されないように実現することもできる。各オブジェクトのファセット（登録商標）−タイプ特性サブグループの構造を、既知の技術によりコンパイラによって創成された符号テーブル中に維持することができる。
【０１２９】
オブジェクトの形状は、典型的にはそのファセット（登録商標）−タイプ特性サブグループ構造に依存しない。すなわち、動作が形状（フォントサイズ、充填）に対して規定される場合、特性フォントサイズ及び充填がオブジェクトＡの二つの相違するファセット（登録商標）−タイプ特性サブグループに存在したとしても、形状は上記オブジェクトＡに適用可能である。
【０１３０】
したがって、オブジェクトの密閉、承継順序、細分性及び抑制階層の標準的なオブジェクト適合プログラミングの十分既知の問題を解決するオブジェクト適合アーキテクチャに対する新規のデータ構造を記載した。本発明において、承継は、承継するオブジェクトで制御される。プログラマは、どの特性がどの親から承継されたか、特性がｉｓ−ａ階層を通じて承継されるのかｈａｓ−ａ階層を通じて承継されるのか宣言することができる。プログラマはもはや、どのオブジェクトが承継するかを決定するために祖先オブジェクトの構造及び調停ルールを知り及び分析する必要がない。したがって、本発明は、独自に伸張可能であり、スケール化可能なアプリケーション開発アーキテクチャを創成し、オブジェクトを用いるアプリケーション設計に適用可能である。
【０１３１】
本発明はクラスアーキテクチャを訂正し、その結果、タイピングのメソッド、すなわち、クラスインスタンスを用いるオブジェクト、オブジェクトプロトタイプ又は単一抑制ツリーアーキテクチャを識別することに依存する必要がなくなる。本発明は、ソフトウェアを複雑にするとともに言語アーキテクチャに内在する問題を解決しない親クラス記録、宣言承継、注文コーディング及び重ね合わせを用いることに起因する問題を解決する既知のメソッドを回避することができる。
【０１３２】
本発明は、オブジェクト適合言語アーキテクチャそれ自体を変更して、クラスオブジェクト、承継又は宣言を用いる標準的なメソッドに加えてメソッドの承継及び複数の抑制階層からの特性を許容する。これは、オブジェクトを規定するクラス承継、オブジェクトプロトタイプ及び単一抑制ツリーの履歴使用に対して重要な補足である。複数の抑制階層の使用が上記標準的なオブジェクト適合プログラミング言語の問題を解決するだけでなく、ダイナミックタイプの表示のプログラミングアーキテクチャ、単一メソッド又は特性の細分性を有する承継及びダイナミックなメソッド承継を著しく向上させることができる。
【０１３３】
標準的なオブジェクト適合プログラミングは、オブジェクトが共有された特性を有するオブジェクトのセットのメンバであるか否かを決定するために承継及び密閉を用いる。二つのオブジェクトが同一の親を指摘する場合、これらは「同一」となる。本発明において、比較された二つのオブジェクトの特性を参照することによってのみ一致を決定する。二つのオブジェクトが同一セットの特性を共有する場合、これらは「同一セットを保持する。」本発明は、オブジェクトが形成されるメソッドに注意しない（標準的な承継はオブジェクト属性に対する一つのあり得るソースのままである。）。
【０１３４】
オブジェクトに関連するメソッドは、オブジェクトが有する特性セットのみに基づいて同様に得られる。メソッドは、オブジェクトの抑制階層に依存せずに得られる。これは望ましいことである。その理由は、オブジェクトがしばしば共同し又は複数の環境中に同時に存在し、要求される動作又は特性がこれら環境によって表されたコンテキストに依存するからである。例えば、円グラフのような図形オブジェクトはそのページ（位置、表題サイズ）、その発行タイプ（ニュースレター又はＨＴＭＬ）及び現在の出力装置（プリンタ又は表示スクリーン）から特性又は動作を得ることができる。この問題は、単一の抑制ツリーを用いて解決するのに困難であり、これは現在の課題である。本発明において、全ての分類階層はプログラマが利用することができ、単一特性及びメソッドのレベルに対して細分されたオブジェクト規定を用いてオブジェクトを発生させるのに指定されたコードを必要としない。ファセット（登録商標）−タイプ特性サブグループアーキテクチャは、メソッドに依存しないオブジェクトの構成を宣言して、密閉を破壊し又は注文コーディングを必要とすることなくオブジェクトを動的に変化させることができる。
【０１３５】
このようにして、アプリケーションは、親クラスから承継されたメソッドの重ね合わせ又は親から受け継いだ混成順序のルールなしで、あいまいさを有しながらオブジェクトの特性を結合するメソッドを表現することができる。このアーキテクチャによって、オブジェクト適合プログラミングをアプリケーションプログラマのドメインとする。プログラマは、クラスライブラリを処理する専門的技術を用いるよりはむしろ、アプリケーションのアーキテクチャを強いることができる。
【０１３６】
本発明のシステムを、記憶媒体を利用できるコンピュータを具える製造の物品で実現することができる。このような媒体は、ディスク、ＣＤ−ＲＯＭ並びにプログラム可能な及びプログラム可能でない読出し専用メモリを含む、磁気、光、シリコン物品を含む。
【０１３７】
本発明は上記実施の形態に限定されるものではなく、幾多の変更及び変形が可能であることは明らかである。例えば、上記実施の形態において、一度規定したオブジェクトは有効範囲を逸脱することがなく、すなわち、プログラムの一部に規定されたオブジェクトはプログラム全体を通じて規定されたままである。本発明を、オブジェクトが有効範囲を有するとともに特定の形状又は特性を有する最終オブジェクトが有効範囲外になったときに形状テーブル及び特性名テーブルの対応するエンティティが除去されるように実現することができる。本発明は一般に、任意のソフトウェア、すなわち、特性及び動作を有する構成に適用可能であり、ここで用いられるような用語「オブジェクト」は、相違するコンピュータ言語又はモデルの種々の規定の任意のものに制限されるものとして構成されない。したがって、本発明の範囲は、以下の請求の範囲によってのみ決定される。
【０１３８】
本発明のコンピュータ実行システムにおいて、オブジェクト宣言は、オブジェクトの名前と、特性の組とを含む。この特性の組を、オブジェクトの「形状」と呼ぶ。指定された形状に適用できるが、個々のオブジェクトに適用できる必要はないメソッドを宣言する。メソッドを、前記指定された形状を有するどのようなオブジェクト、または、その形状を前記指定された形状に変換できるどのようなオブジェクトにも用いることができる。第２の形状の特性が指定された形状の特性のスーパセットである場合、前記第２の形状を前記指定された形状に変換することができる。メソッドの適応性を、指定された規準を満たすオブジェクトに限定することもできる。本発明は他のオブジェクトからの特性の承継を与えるが、メソッドの個々のオブジェクトへの適応性は、一般的に、先行技術におけるＣ＋＋のようなオブジェクト指向言語のような特定の起源を有するオブジェクトに限定されない。
【０１３９】
したがって本発明におけるメソッドのオブジェクトへの適応性は、前記オブジェクトをどのように得たかよりも、前記オブジェクトの特性によって決定される。したがって、プログラマは、複雑な承継図および特性ルールを分析し、どのメソッドをオブジェクトに利用できるかを決定することを必要とせず、すなわち、彼または彼女は、前記オブジェクトの形状と、前記メソッドの形状とを比較することだけを必要とする。
【０１４０】
本発明を、多くの異なった方法において実行することができる。異なった実施形態は、計算オーバヘッドをコンパイル時間および実行時間間で異なって割り当てる。本発明を実行するために必要なステップを、例えば、コンパイル時間においてコンパイラによって、実行時間においてインタラプタによって、またはこれらのなんらかの組み合わせによって行ってもよい。実行時間動作に依存する技術は、コンパイル時間においてメソッドおよび特性を結合する技術よりも、一般に柔軟であるが、実行が遅い。計算オーバヘッドの好適な割り当ては用途に依存し、特定の実行がすべての用途に対してより良いとは考えられない。以下の説明において、言葉「システム」を、本発明のステップを実行する、コンパイラ、インタプリタ、実行時間システム、または、これらの組み合わせのようなプログラムを意味するために使用する。
オブジェクトの規定
本発明のプログラミングシステムにおいて、プログラマは、以下図４−８に関係して説明するようにオブジェクトおよび動作を別々に規定する。図４は、本発明の第１実施形態において新たなオブジェクトを形成するのに必要なステップを示すフローチャートである。ステップ１００において、オブジェクトを、名前付けし、特性のグループを与えることによって宣言する。例えば、プログラマは、図５に示す「ボタン」と呼ばれるオブジェクト１０２を規定し、図６に示すグラフィカルユーザインタフェース１０６の一部として使用されるボタン１０４を表してもよい。図５は、以下の特性、可視度、境界、表題およびフォントを有するようなボタンオブジェクト１０２を示す。
【０１４１】
すべての宣言されたオブジェクトのすべての特性のリストを、例えば、図７に示す特性名テーブル１０８において保持する。ステップ１１６は、オブジェクトが宣言された場合、この新たなオブジェクトの一部であると宣言された特性の名前を、特性名テーブル１０８に存在する特性名と比較し、この新たなオブジェクトと共に宣言された特性名がすでに存在しているかどうかを決定することを示す。
【０１４２】
ステップ１１８は、特性名テーブル１０８にまだリストされていない特性名を前記テーブルに入力し、索引することを示す。このように特性名テーブル１０８は、各々の固有特性名１２４に対する固有特性名テーブルインデックス番号１２２を有するエントリーを含む。多数のオブジェクトが同じ特性を含む場合、特性名テーブル１０８においてこの特性に対して１つのエントリーのみが存在する。
【０１４３】
特性名テーブル１０８においてエントリーが形成された後、本システムは、特性名１２４のすべての順次の使用を、特性名テーブル１０８からの対応する特性名テーブルインデックス番号１２２に置き換える。コンピュータにとって整数のインデックス値を見つけ、比較することは、不定の長さの英数字列を見つけ、比較するよりも極めて早いため、特性名をインデックス番号に置き換えることは、プログラムの実行を速くする。さらに、特性名テーブルインデックス番号は、形状内の特性を参照付ける自然のまたは標準的な順序を与え、それによって、形状を探索または比較する場合、特性順序の順列を検査する必要性を取り除く。
【０１４４】
オブジェクトを宣言する場合、本システムは、この宣言においてプログラマによって指定される特性順序に係わらず、標準的な順序の特性を使用するオブジェクト形状を規定する。したがって、オブジェクトのメモリ構造は、先行技術のシステムと異なり、オブジェクト宣言における特性の順序によって決定されない。例えば、第１のオブジェクトを、可視、境界および表題の特性を有すると宣言した場合、これらの特性名が特性名テーブル１０８に入力される。第２のオブジェクトを、フォントサイズ、表題および境界の特性を有するを宣言した場合、新たな特性フォントサイズが特性名テーブル１０８に入力され、前記第２のオブジェクトの特性は、可視、表題およびフォントサイズのように配置される。同様に、フォントサイズ、表題および可視の特性を有するとして宣言されたオブジェクトは、可視、表題およびフォントサイズの特性を有するとして宣言された他のオブジェクトと同じ形状を有すると見なされる。
【０１４５】
先行技術のプログラミングシステムにおいて、プログラマは、データ密閉を、ポインタと、オブジェクトの内部メモリ構造の彼または彼女の知識とを使用することによって、ショートカットすることができる。この習慣は、しばしば有用であるとしても、オブジェクトを規定するプログラムの一部における変更がショートカットを使用するセクションにおける障害を招く恐れがあるため、下手なプログラミング技術であると見なされる。前記宣言における順序からメモリ構造を分離することによって、プログラマがオブジェクトを格納する順序を知らないため、プログラマがこの好ましくないショートカットを行うことを防止する。さらに、構造の宣言順序からの分離は、本システムが前記特性名テーブルを再整理し、形状間の変換に必要な計算を減少することを可能にする。
動作の規定
オブジェクトの動作は、該オブジェクトに用いるメソッドの組を具える。本発明において、動作を一般に規定し、個々のオブジェクトよりも指定された形状に用いる。動作を、前記指定された形状を有するか、動作規定における指定された形状に変換可能な形状を有するどのようなオブジェクトにも適用できる。比喩的に言って、動作を宣言する場合、前記指定された形状または変換できる形状の存在するオブジェクトに「塗布される」または「覆われる」。
【０１４６】
メソッドを、該メソッドを用いる形状を指定する動作条項内で規定する。メソッドを、どのようなオブジェクトに関しても別個に規定してもよい。例えば、変更表題フォントサイズと表題を付けられたメソッドを規定し、表題およびフォントサイズ特性を有するオブジェクトにおいて動作させてもよい。この宣言を、
表題、フォントサイズの形状に関する動作
｛
変更表題フォントサイズ（新たなフォントサイズ）
｛
フォントサイズ＝新たなフォントサイズ
｝
｝
のようにしてもよい。
したがって、ボタンオブジェクト１０２（図５）は、前記変更表題フォントサイズメソッドの形状に変換できる、すなわち前記変更表題フォントサイズメソッドの形状のサブセットである形状を有するため、この変更表題フォントサイズメソッドは、ボタンオブジェクト１０２において動作できる。メソッドを、クラスの一部として規定し、この規定するクラスのオブジェクトか、この規定するクラスから得られたオブジェクトにのみ適用できる、以前のプログラミングシステムと相違して、本発明の方法は、オブジェクトの起源に係わらず、必要とする特性を有するどのようなオブジェクトにおいても動作できる。
動作における制限
本発明は、動作における制限も許可する。このような制限は、前記動作を適用するオブジェクトを限定する。動作を、例えば、オブジェクトの特性値または他の特徴に基づいて限定してもよい。例えば、メソッド、ダブルフォントサイズおよびハーフフォントサイズを規定し、形状、フォントサイズおよび可視を有するオブジェクトにおいて、可視特性のみが真の値を有する場合にのみ動作することができる。この宣言を、例えば、
｛
ダブルフォントサイズ（）
｛
フォント＝２＊フォント
｝
ハーフフォントサイズ（）
｛
フォント＝フォント／２
｝
｝
のようにしてもよい。
【０１４７】
特性が制限を満たすかどうかを決定する試験を、前記メソッドを呼んだ場合に用いる。動作の適用性における制限を、前記オブジェクトに、前記オブジェクトの特性に対するよりも、全体として用いることができる。例えば、メソッドを規定し、指定されたオブジェクトにおいてのみ、または、指定されたオブジェクトに含まれるか、これから得られるオブジェクトにおいてのみ作用させてもよい。
動作の実行
本発明におけるメソッドを、全体的に、またはオブジェクトに関連して構成することができる。メソッドを構成するこれらの２つの技術のいずれかを、以下に説明する特性値を格納する３つの技術のいずれかと共に使用することができる。メソッドを全体的に構成した場合、メソッドをオブジェクトごとに別々に、例えば、中央メソッドテーブルに格納する。メソッドがオブジェクトにその引き数として呼ばれた場合、本システムは、前記オブジェクトの形状を前記メソッドの形状と比較する。前記オブジェクトの形状が前記メソッドの形状と同じであるか、前記メソッドの形状に変換できる場合、次に前記メソッド制限を、渡されているオブジェクトに関して検査する。前記制限が満たされている場合、前記メソッドを前記オブジェクトにおいて実行する。この実施形態においてメソッドを全体的に構成していても、メソッドにおける制限を含む能力は、例えば、個々のオブジェクトまたは個々のコンテナにおけるオブジェクトに任意に限定すべきメソッドの適用性を許可する。メソッドの実行を、以下により詳細に説明する。
【０１４８】
メソッドをオブジェクトに関係して構成する実施形態において、動作が宣言された場合、この新たな動作の形状を、存在するオブジェクトの形状と比較する。前記動作を具えるメソッドへの参照を、前記メソッドの形状か、前記メソッドの形状に変換できる形状かを有する各々の存在するオブジェクトに加える。このようにしてメソッドをオブジェクトに関係付け、前記オブジェクトに関係するメソッドのみが、前記オブジェクトにおいて作用できる。前記メソッドそれ自身の複製を各々のオブジェクトと共に格納することができ、または、前記メソッドの１つの複製に対する参照を格納することができる。メソッドを各々のオブジェクトに関係付ける前に適合性に関して試験するため、メソッドが呼ばれる時に適合性に関して試験する必要はない。動作宣言が制限を含む場合、これらの制限が、特性値のようなプログラム実行中に変化するかもしれないパラメータに基づいているかもしれないため、これらの制限が満たされているかどうかの検査が依然として必要である。オブジェクトから独立してメソッドを規定し、動作における制限を規定する能力は、先行技術によるプログラミングシステムを上回る利点を与える。
形状表
特性名テーブル１０８を保持する他に、本発明のシステムは、図８に概念的に示す形状テーブル１３４も保持する。形状テーブル１３４は、宣言されたオブジェクトおよびメソッドの異なった形状の各々に対する索引エントリー１３５を含む。
【０１４９】
図４に戻って、ステップ１３８は、新たなオブジェクトが宣言された場合、本システムが、この新たなオブジェクトの形状と、形状表１３４に存在する形状エントリー１３６と比較し、この新たなオブジェクトの形状が存在する形状と一致するかどうかを決定することを示す。この新たなオブジェクトの形状が存在する形状と一致しない場合、ステップ１４０は、この新たな形状を形状テーブル１３４に加え、対応する新たな形状インデックス値１４２を付けることを示す。
【０１５０】
例えば、図８に示す形状１５２を有する図５のボタンオブジェクト１０２に、形状テーブル１３４における第１の形状１３６のようにインデックスを付ける。形状１５２の特性１５４を標準的な順序、すなわち、特性名テーブル１０８におけるこれらのインデックスの順序とし、それによって、形状の一致のために前記形状表を検索する場合に、特性名の順列を検査する必要性を取り除く。特性名の代わりに特性インデックス番号１２２を使用して形状テーブル１３４を保持し、特性名テーブルインデックス番号を標準的な順序において保持することは、変換可能な形状を決定し、特性をマッピングするために必要な検索時間も大幅に減少する。
【０１５１】
特性名テーブル１０８に対応する特性名テーブルインデックス番号の他に、形状における各々の特性は、該形状内のその位置に対応するオブジェクト内特性番号１５６も有する。大きいボタンオブジェクト１５８（図９）のような第２のオブジェクトを、ボタンオブジェクト１０２のような第１のオブジェクトと同じ特性を有すると規定した場合、新たな形状は形成されていないため、形状表１３４において追加のエントリーは形成されない。他方において、カラーボタン１６０（図１０）のような新たなオブジェクトを、固有の形状１６２（図８）を規定する特性を有するように宣言した場合、本システムは、新たな形状（可視、カラー、境界、表題、およびフォントサイズ）が存在するどのような形状にも対応しないことを決定し、形状テーブル１３４において新たなエントリー１３６を形成し、インデックス化する。同様に、動作を、指定された形状に適用できるとして宣言した場合、この動作の形状を形状テーブル１３４において存在する形状と比較し、まだ存在しない場合、形状テーブル１３４に加える。言葉「オブジェクト内特性番号１５６」を一般的に使用し、なんらかの「形状内」の特性順序を示し、「メソッド内」をメソッド内の特性順序とする。
【０１５２】
新たな形状エントリー１３６を形成した後、図４のステップ１７０は、本システムが、この新たな形状を存在する形状エントリー１３６の各々と比較し、この新たな形状が存在する形状のいずれかに変換可能であるかどうかを決定する。この新たな形状の特性が前記存在する形状の特性のスーパセットである場合、すなわち、この新たな形状が古い形状の特性のすべてと、少なくとも１つの追加の特性とを含む場合、この新たな形状は存在する形状に変換可能である。したがって、前記存在する形状は、この変換可能な新たな形状の射影である。したがって、前記存在する形状の特性の組と、変換可能な新たな形状の特性の組との交差は、前記存在する形状の特性の組である。
【０１５３】
前記新たな形状が存在する形状に変換可能である場合、ステップ１７２は、この新たな形状を変換することができる存在する形状を示すこの新たな形状に対する変換可能性エントリー１７４を形状テーブルエントリー１３６において形成することを示す。この新たな形状を２つ以上の存在する形状に変換できる場合、この新たな形状のための形状テーブルエントリー１３６は、この新たな形状を変換することができる各々の存在するエントリーに対する変換可能性エントリー１７４を含む。ステップ１７６は、前記新たな形状のどの特性が、前記存在する形状の特性の各々に対応するかを示すマップ表１７８を形成することを示す。形状テーブル１３４を、前記新たな形状を変換できる存在する形状の数が任意に制限されず、新たな形状を規定するにつれて増加してもよいことを示すために、右端なしで示す。
【０１５４】
例えば、形状テーブル１３４（図８）は、形状４が形状１および３のスーパセットであり、したがって、形状１および３に変換可能であることを示す。形状テーブル１３４は、いくつかの実施形態において、形状４を形状１または形状３にどのように変換するかを示すマップテーブル１７８も含む。形状１および３において動作するために規定されるメソッドは、形状４のオブジェクトにおいて、このオブジェクトをマップテーブル１７８に従って変換した後、動作することができる。例えば、形状４および形状３の第１の特性は可視であり、したがって形状４の第１の特性は形状３の第１の特性にマップする。形状３の第２の特性はフォントサイズであり、これは形状４の第４の特性であり、したがって形状４の第４の特性は形状３の第２の特性にマップする。マップテーブル１７８において使用する番号は、オブジェクト内特性番号１５６である。したがって、メソッドは、特性を内部的にこれらの形状内特性番号によって参照することができ、これは、特性名１２４または特性名テーブルインデックス番号１２２に内部的に参照するよりも効率的である。
【０１５５】
前記新たな形状を変換できるすべての存在する形状を形状テーブル１３４の新たな形状エントリー１３６に入れ、対応するマップテーブル１７８を形成した後、ステップ１８８は、本システムが逆のプロセスを行う、すなわち、前記存在する形状を解析し、前記新たな形状が前記存在する形状の何らかのサブセットであるかどうかを確かめることを示す。もしそうなら、ステップ１９０は、この新たな形状を変換可能なエントリー１７４として、前記存在する形状のための変換可能な形状のリストに追加することを示し、ステップ１９２は、対応するマップテーブル１７８を形成することを示す。このように、形状テーブル１３４に存在する形状を、各々の新たな形状を追加するごとに更新する。
【０１５６】
形状テーブル１３４および特性名テーブル１０８は、本発明を使用するプログラミング用途のための構造を与える。しかしながらこれらのテーブルは、実際のオブジェクトを含まない。本発明のオブジェクトを、図１１に示すようなオブジェクトメモリ構造１９８としてメモリに格納する。オブジェクトメモリ構造１９８は、形状インデックス２００および特性値２０２から成る。この形状インデックスは、形状テーブル１３４におけるインデックス化エントリーに関係する。いくつかの実施形態において、オブジェクトメモリ構造１９８は動作２０４も含み、これは、このオブジェクトに適用できるメソッドへの参照を具える。
データ構成、第１実施形態
図１２に示す第１実施形態において、特性値２０２を、各々の特性の特性名テーブルインデックス番号１２２の昇順においてオブジェクトメモリ構造２０６に格納する。各々の特性値２０２は、同じ長さ、一般に３２ビットを有し、特性値２０２は、特性値ベクトル２０８を集合的に構成する。形状テーブル１３４は、前記オブジェクトの特性を（特性名テーブルインデックスによって）載せ、特性値ベクトル２０８に含まれるデータは、前記オブジェクトのリスト化された特性と１対１の順序で対応する。特性値ベクトル２０８における特性値２０２エントリーのいくつかまたはすべてを、実際の値よりもこれらの値に対するポインタとしてもよい。
【０１５７】
特性値ベクトル２０８は、オブジェクトメモリ構造２０６内で特性値にアクセスするためにインデックスを使用することを可能にする。インデックスの使用は、実行するのが簡単であり、値にアクセスするのが比較的高速であるという利点を有するが、この技術は、各々の特性に対するデータを等しいサイズにするか、少なくとも予め規定されたサイズにし、本システムが、オブジェクトメモリ構造１９８において各々のオブジェクトに対するデータエントリーがどこから始まるかを決定できるようにする必要がある。
【０１５８】
特性値ベクトル２０８における実際のデータの代わりにポインタを使用することは、実際のデータを異なったサイズのものとすることを許可することによって柔軟性を増し、以下に説明するように承継において使用される。実際には、オブジェクトメモリ構造２０６は、第１にポインタと、一般に小さい整数のような短いデータ形式のみに関して格納される実際のデータとを含む。前記データエントリー領域におけるメモリ位置におけるコードを使用し、その領域におけるデータエントリーが値を表すかポインタを表すかを示すことができる。この実施形態を、フラグを使用し、各々の特性に関してデータ領域の開始および終了を示すことによって実行することもできる。
【０１５９】
図１３は、本発明の第１実施形態において使用される形状テーブル１３４の好適な実現化を図式的に示し、この実現化は、特性値ベクトル２０８を含むオブジェクトメモリ構造２０６を使用する。形状テーブル２１８における各々のインデックス化形状エントリー２１６は、２つのポインタ、すなわち、特性の特性リスト２２２を指し示す第１ポインタ２２０と、前記エントリー形状を変換できる形状の変換可能性リスト２３０を指し示す第２ポインタ２２８とを含む。
【０１６０】
各々の特性リスト２２２は、前記形状を規定する特性を含む。特性リスト２２２は、実際の特性名１２４よりも、特性名テーブル１０８から特性名テーブルインデックス番号１２２を使用する。上述したように、一度、特性名１２４が特性名テーブル１０８に入力され、特性名テーブルインデックス番号１２２が割り当てられると、特性名は一般に使用されない。特性リスト２２２は、対応するオブジェクトまたはメソッドのプログラマの宣言におけるこれらの特性の順序に係わらず、特性名テーブルインデックス番号１２２の昇順におけるものである。
【０１６１】
変換可能な形状の変換可能性リスト２３０における各々のエントリーは、形状インデックス番号２３２と、マップテーブル２４４に対するポインタ２３４とから成る。マップテーブル２４４は、形状エントリー１３６が変換される形状の特性に対応する形状エントリー１３６のオブジェクト内特性番号１５６のリストである。リスト２３０において使用されるオブジェクト内特性番号１５６は、前記形状エントリーにおける特性の逐次番号であり、特性名テーブル１０８からの特性名テーブルインデックス番号ではない。
【０１６２】
例として、形状テーブル２１８の第１インデックス化エントリー２１６を検討し、図１３は、第１インデックス化エントリー２１６におけるポインタ２２０が、特性１、２、３および４（各々、特性名テーブル１０８（図７）からの可視、境界、表題、およびフォントサイズに関係する）を含むリスト２２２を指し示すことを示す。ポインタ２２８は、形状テーブル２１８における第３形状に関係する１つのエントリー３のみを有する変換可能性リスト２３０を指し示し、ポインタ２３４はマップテーブル２４４を指し示す。マップテーブル２４４は、形状３の第１および第２特性に対応する形状１の第１および第４特性を示す番号１および４を含む。
【０１６３】
形状テーブル２１８のインデックス化エントリー２１６を下げ続けると、形状２および３は特性リストに対するポインタ２２０も含むが、形状２および３は他の形状に変換できないため、これらの変換可能テーブルへのポインタ２２６を空に設定する。形状４に対応する変換可能性リスト２３０は、２つのエントリーを含む。第１のエントリーは、１の値を有する形状２００と、オブジェクト内特性番号１、２、３および４を含む対応するマップテーブル２４４に対するポインタ２３４とを有する。他方のエントリーは、形状インデックス３と、オブジェクト内特性番号１および４を含む対応するマップテーブル２４４に対するポインタ２３４とを含む。
データ構成、第２実施形態
オブジェクトの特性値を格納し、これにアクセスする第２の構造は、特性値格納領域２４８を有する、図１４に例示するオブジェクトメモリ構造２４６を使用する。この実施形態において、特性値格納領域２４８に格納された異なった特性値２０２を、異なった長さのものとすることができる。したがって、特性値２０２は、前記第１実施形態におけるようにベクトルを構成せず、インデックスによって特性値格納領域２４８中にアクセスされない。しかしながら、指定された特性は、異なったオブジェクトの特性値格納領域２４８において同じ格納長を有する。
【０１６４】
図１５は、この実施形態において使用される形状テーブル２５０を示す。形状テーブル２５０は、図１３に示す形状テーブル２１８と同様であるが、各々の異なった形状ごとに、ポインタの組２６２から成るメソッドポインタベクトル２５２も含む。各々の組２６２は、前記形状の特性リスト２２２における特性に対応し、対応する特性値を獲得するメソッドへのポインタ２６４と、前記オブジェクトの対応する特性の値を設定するメソッドへのポインタ２６６とを含む。これらのようなメソッドを、ここでは「獲得および設定」メソッドと呼ぶ。これらの獲得および設定メソッドは、対応する形状を有するオブジェクトに関するオブジェクトメモリ構造２４６における特性値の正確な位置およびサイズのトラックを保持し、それによって、異なったサイズの特性値の使用を可能にする。ポインタの組２６２を、これらのメソッドが動作する特性の特性名テーブルインデックス番号の順序において、一般に、特性名テーブルインデックス番号１２２の昇順において格納する。
【０１６５】
各々のエントリー２１６のポインタは、各々が形状参照２７８と、変換メソッドベクトル２８２へのポインタとを含むエントリー２７６を有する変換可能性リスト２７４を指し示す。変換メソッドベクトル２８２は、対応するメソッドポインタベクトル２５２におけるポインタ組２６２のサブセットを含み、このサブセットは、形状エントリー２１６が変換される形状に含まれる特性に対応する。
【０１６６】
例えば、図１５は、第４形状エントリー２１６のポインタ２２８が、１つが形状１に対応し、１つが形状３に対応する２つのエントリー２７６を有する変換メソッドベクトルを指し示すことを示す。形状３に対応する特性リスト２２２は、形状３が、２つの特性、可視（特性名テーブルインデックス番号１）およびフォントサイズ（特性名テーブルインデックス番号４）を含むことを示す。したがって、対応する変換メソッドベクトル２８２は、各々がポインタ２６４および２６６の組２６２を具える２つのエントリーも有する。例えば、３つの形状を有するメソッドに形状４のオブジェクトを入れた場合、本システムは、このオブジェクトの前記メソッド形状において形状内特性番号２を有するフォントサイズ特性に、形状４から形状３に変換する変換メソッドベクトル２８２におけるポインタの第２の組２６２を使用することによってアクセスする。
【０１６７】
この実施形態において、各々のオブジェクトごとに１つのオブジェクトメモリ構造２４６が存在し、各々の形状ごとに獲得および設定メソッドの１つのテーブルが存在する。この第２実施形態は、Ｃ＋＋における仮想機能テーブルにいくぶん類似しているが、各々の形状に関するメソッドを、仮想機能番号よりもオブジェクト内特性番号１５６によってインデックス化する。
【０１６８】
この実施形態の一変形例において、前記獲得および設定メソッドを１つのメソッドに結合することができ、追加の独立変数を前記メソッドに渡し、前記特性を設定すべきかまたは検索すべきかを示すことができる。他の変形例において、獲得および設定メソッドへのポインタのベクトルを、前記オブジェクトおよびオブジェクト内特性番号を渡された場合、適切な特性値にアクセスする１つの獲得および設定ハンドラメソッドへのポインタに置き換えることができる。この場合において、戻るべき特性値を、前記獲得および設定ハンドラメソッド内で、例えば、前記メソッドが呼ぶ前に決定し、次に適切なメソッドを呼ぶよりも、「スイッチ」文を使用することによって決定する。
【０１６９】
上述した２つの実施形態において、特性値に、値またはメソッドのいずれかのベクトルへのインデックス値によってアクセスする。第３実施形態は、特性値に、スモールトークのようなオブジェクト指向言語において使用されるものに類似する実行時間メソッドテーブルを使用してアクセスする。この実施形態において、すべての特性を、前記特性を設定する、またはこれに戻るメソッドとして取り扱う。
データ構成、第３実施形態
この第３実施形態は、図１６に示すようなオブジェクトメモリ構造２８８を使用する。この実施形態における各々のオブジェクトメモリ構造２８８は、その形状を形状テーブルに関して示す形状インデックス２００と、動作２９０と、特性値２９２とを含む。動作２９０は、前記オブジェクトの特性の各々を獲得および設定するメソッドへの参照と、前記オブジェクトにおいて動作する他のメソッドへの参照とを含む。この実施形態は、前記特性値を獲得および設定するメソッドが、前記形状に関係するよりも前記オブジェクトに関係する点において、上述した実施形態と異なる。すなわち、同じ形状を有するすべてのオブジェクトに対して獲得および設定メソッドの１つの組が存在するよりも、各々のオブジェクトに対して１つの組が存在する。したがって、前記獲得および設定メソッドを異なったオブジェクトごとに異ならせることができるため、各々のオブジェクトメモリ構造２８８内のデータを、なんらかの指定された順序とする必要はない。
【０１７０】
図１７は、前記第３実施形態において使用される単純化した形状テーブル２９６を示す。各々の形状エントリー２９８は、特性リスト３０２に対するポインタ３００と、変換可能性リスト３１０に対するポインタ３０８とを含む。変換可能性リスト３１０は、前記エントリーの形状を変換することができる形状のリストのみを具え、マップテーブルに対するポインタを含まない。特性リスト３０２は、特性名テーブル１０８（図７）に参照する特性名テーブルインデックス番号１２２を含む。形状間でどのように変換するかを示す必要はない。以下により詳細に説明するように、特性に、オブジェクト内特性番号１５６によりも、特性名テーブルインデックス番号１２２に参照するメソッド呼出しによってアクセスする。
【０１７１】
形状テーブル２９６における特性は、依然として特性名テーブル１０８からインデックス値１２２を使用する標準的な順序において保持され、その結果、特性順序の順列を気にすることなく、形状テーブル２９６におけるエントリーを新たに宣言されたオブジェクトの形状と比較することができる。
メソッドの形成および実行
メソッド実行の詳細は、上述した３つのデータ構成実施形態のどれを使用するかと、前記２つの技術の内どちらをメソッドの構成に使用するか、すなわち、全体的なメソッドテーブルによるか、オブジェクトに関連するかとに応じて変化する。前記メソッドの実行を、一例のメソッド、ダブルフォントサイズに関して説明し、本発明の原理を説明する。
【０１７２】
図１８は、上述した最初の２つのデータ構成実施形態のいずれかを使用するシステムにおける動作の形成に必要なステップを示す。ステップ３１６は、第１動作の形成を示し、例えば、
形状に関する動作（可視、フォントサイズ）
可視＝真を満たす
ダブルフォントサイズ（）
｛
フォントサイズ＝２＊フォントサイズ
｝
終了
とする。
【０１７３】
ステップ３１８は、形状テーブル１３４（この形状テーブルの形態は、上述した実施形態の内どれを実行するかに依存する）を検索し、前記動作の形状が新しいかどうかを決定することを示す。ステップ３２０は、前記動作が前記形状テーブルにおいてあるものに対応しない場合、この新たな形状を入力することを示す。本例において、前記形状（可視、フォントサイズ）を、形状テーブル１３４において形状番号３としてすでにインデックス化した。
【０１７４】
次に、ステップ３３０は、本システムが、形状テーブル１３４から、形状１および４が形状３に変換可能であることを決定することを示す。ステップ３３２は、本システムが、形状３、１または４を有するすべてのオブジェクトを見つけ、ダブルフォントサイズ（）メソッドへの参照を、各々のオブジェクトの動作リストに加えることを示す。メソッドがオブジェクトに関係しない実施形態において、ステップ３３０および３３２を行わない。前記新たに宣言されたメソッドを、代わりに全体的なメソッドテーブルに加える。
【０１７５】
上記例を続けて、カラーボタンオブジェクトを以下のように宣言する。
【０１７６】
オブジェクトカラーボタン
有する
可視              ブール
境界              矩形
テーブル題              テキスト
フォントサイズ    整数
カラー            整数
終了
終了
図１９は、カラーボタンのようなオブジェクトにおいてメソッドを呼ぶために行うステップを説明するフローチャートである。ステップ３３４は、このプロセスが、メソッドが呼ばれたときに開始することを示す。例えば、ダブルフォントサイズと呼ばれるメソッドを、カラーボタン．ダブルフォントサイズ（）のようなコードの列によって呼び、オブジェクトカラーボタンにおいて動作させることができる。
【０１７７】
ステップ３３６に示すように、次にコンパイラは、一般に、元のメソッド呼出しを前記ダブルフォントサイズメソッドに対する変更されたメソッド呼出しに変換し、この変更された呼出しは、「不可視パラメータ」としてカラーボタンオブジェクトへの参照を有し、例えば、ダブルフォントサイズ（カラーボタン）として現れる。
【０１７８】
メソッドがオブジェクトに関係しない実施形態において、ステップ３３８は、前記メソッドが呼ばれるオブジェクトの形状を、前記オブジェクトのオブジェクトメモリ構造１９８（図１１）から決定することを示す。
【０１７９】
ステップ３４２は、前記全体的なメソッドテーブルを検索し、前記呼ばれたメソッドの名前と一致するメソッド名を有するメソッドを見つけることを示す。一致するメソッド名を見つけた場合、ステップ３４４は、前記メソッドが呼ばれたオブジェクトの形状を、この見つけられたメソッドの形状と比較することを示す。前記オブジェクトの形状が、前記メソッドの形状と同じであるか、これに変換可能である場合、前記メソッドを実行するプロセスを続ける。そうでなければ、ステップ３４２を繰り返し、すなわち、前記全体的なメソッドテーブルを検索し、他の一致するメソッド名を見つける。
【０１８０】
メソッドがオブジェクトに関係する実施形態において、メソッド呼出しは、前記オブジェクトに関係するメソッドテーブルを検索させる。前記オブジェクトに関係するメソッドテーブルに含まれるすべてのメソッドは、前記オブジェクトとの変換可能性に関してすでに検査されており、したがって、追加の形状検査は必要ない。
【０１８１】
メソッドテーブルにおいて前記呼ばれたメソッド名と一致するメソッド名を有するメソッドを見つけ、前記メソッドが呼ばれたオブジェクトと比較した後、ステップ３５０は、前記オブジェクト形状からメソッド形状に変換する手段への参照を、不可視パラメータとして前記メソッド呼び出しに加えることを示す。
【０１８２】
前記最初の２つの実施形態において、前記コンパイラは、一般に、特性名１２４と、メソッドまたはオブジェクトにおける特性名テーブルインデックス番号１２２とに対する参照を、オブジェクト内または形状内特性番号１５６に減らしているため、変換手段が必要である。上述したデータ構成に関する第１実施形態において、形状間の変換手段はマップテーブル２４４（図１３）である。上述したデータ構成に関する第２実施形態において、形状間の変換手段は変換メソッドベクトル２８２（図１５）である。前記メソッドの形状が前記オブジェクトの形状と同じである場合、一致マッピングを使用する。上述したデータ構成に関する第３実施形態において、オブジェクト内特性番号よりも、実行時ルックアップによって特性値を参照し、したがって、形状間で変換するために追加の手段は必要ない。
【０１８３】
適切な形状のメソッドをロードした後、ステップ３５８は、前記オブジェクトを、何らかの「応じる条項」、すなわち前記メソッドにおける制限の承諾に関して検査することを示す。ダブルフォントサイズの例において、特性可視の値を検査し、真であるかどうかを決定する。特性の値を得る技術を以下に説明し、この技術は、どのデータ構成実施形態を使用するかに応じて変化する。どの制限も満たさない場合、ステップ３４２を繰り返し、他のメソッドを捜す。制限が満たされた場合、ステップ３６０は、前記メソッドを渡されたオブジェクトに実行することを示す。
特性にアクセス
メソッド実行中、オブジェクトの特性の値にアクセスし、この値を検索するか、設定することが必要である。特性値にアクセスするために使用する技術は、前記特性値をどのように格納するかに依存するであろう。
【０１８４】
上記ダブルフォントサイズメソッドの例において、メソッドの実行は、フォントサイズ特性の値を得て、それに２を掛けて、その結果をフォントサイズ特性の新たな値として格納することを必要とする。ダブルフォントサイズメソッドの形状において、フォントサイズは第１特性であり、表題は第２特性である。ダブルフォントサイズメソッドをコンパイルした場合、コンパイラは、一般に、フォントサイズに対する参照を特性１に対する参照に交換し、表題に対する参照を特性２に対する参照に交換する。この交換は、実行速度を上昇させる。
【０１８５】
しかしながら、カラーボタンオブジェクトにおいて、第１および第２特性は可視および境界であり、フォントサイズは第４特性である。実行中、前記メソッドは、マップテーブル２４４または変換メソッドテーブル２８２を使用し、ダブルフォントサイズメソッドにおいて使用するために、カラーボタンオブジェクトにおける正しい特性にアクセスする。
第１実施形態
特性値を特性値ベクトル２０８に格納する上述したデータ構成に関する第１実施形態において、フォントサイズ特性の値に、図２０のフローチャートによって示されるようにアクセスする。ステップ３６４は、このプロセスが、本システムが前記メソッドに渡されたオブジェクトの特性値を要求した時に開始することを示す。オブジェクト内の特性を、一般に、これらのオブジェクト内特性番号によって呼ぶ。上述したように、前記オブジェクト、すなわちカラーボタンのマップテーブルへの参照は、前記メソッド呼出しの独立変数パラメータとして含まれる。ステップ２６６は、形状テーブル２１８（図１３）のマップテーブル２４４を調べ、形状４のカラーボタンオブジェクトから形状３にどのように変換するかを決定する。形状４から形状３に変換するマップテーブル２４４は、要素として１および４を有し、形状４の第１および第２特性が形状１のオブジェクトにおける第１および第４特性に対応することを示すリストを具える。
【０１８６】
したがって、ダブルフォントサイズメソッドは、オブジェクトカラーボタンの第４特性にアクセスし、そのフォントサイズ特性を得る。ステップ３６８は、特性値ベクトル２０８における第４エントリーが検索であることを示す。ステップ３７０は、検索されたデータエントリーを、例えば、フラグビットを読み取り、前記データエントリーがデータ値に対応するか、ポインタに対応するかを決定することによって検査することを示す。ステップ３７２は、前記検索されたデータエントリーがポインタである場合、このポインタに従い、フォントサイズの実際のデータエントリー値を検索することを示す。ステップ３７４は、前記特性値を検索または設定することを示す。
【０１８７】
ダブルフォントサイズメソッドの実行は、フォントサイズの前記検索された値に２を掛けることによって続く。次にこの結果を、フォントサイズ特性の新たな値としてボタンオブジェクトに格納する。特性値の格納は、マップテーブル２４４にアクセスし、格納すべき特性値のオブジェクト内特性番号を決定し、この新たな値を正しい場所に書き込むか、この新たな値に対するポインタを正しい場所に書き込むことを必要とする。
【０１８８】
前記メソッドの形状が前記オブジェクトの形状と同じである場合、変換する必要はなく、同一マップテーブルを使用する。
第２実施形態
図２１は、獲得および設定メソッドに対する参照が形状テーブル２５０（図１５）における各々の特性に関係する、データ構成に関する前記第２実施形態において、特性にアクセスするために使用されるステップを示すフローチャートである。上述したように、この実施形態におけるメソッド呼出しは、２つの不可視パラメータ、すなわち、渡されたオブジェクトに対する参照と、前記オブジェクトの形状およびメソッドの形状間で変換する手段に対する参照とを含む。この実施形態において、前記変換手段は、前記オブジェクトの形状から前記メソッドの形状に変換する、対応する変換メソッドベクトル２８２である。変換メソッドベクトル２８２におけるエントリーは、第２の形状の特性の順序においてリスト化された第１の形状の各々に特性に関する前記獲得および設定メソッドに対するポインタである。
【０１８９】
ステップ３８２は、対応する変換メソッドベクトル２８２に対する参照を、関数呼び出しから得ることを示す。ステップ３８４は、前記メソッドからの形状内特性番号１５６（図８）をインデックスとして変換メソッドベクトル２８２中に使用し、オブジェクトメモリ構造２４６における特性値にアクセスするメソッドに対するポインタ２６４および２６６の適切な組２６２を決定することを示す。ステップ３８６は、前記特性値を獲得または設定するために適切なメソッドを実行することを示す。
【０１９０】
例えば、形状１から形状３に変換する変換メソッドベクトル２８２において、前記エントリーは、形状１オブジェクトの可視特性に関する獲得および設定ハンドラに対するポインタに続き、形状１オブジェクトのフォントサイズ特性に関する獲得および設定ハンドラに対するポインタを具える。したがって、変換メソッドベクトル２８２における獲得および設定ハンドラに対するポインタを使用し、それによって形状１から形状３に変換することによって、カラーボタンのフォントサイズ特性にアクセスする。前記獲得および設定メソッドに、カラーボタンオブジェクトを確認し、その特定のオブジェクトの特性値にアクセスしていることを示す他の独立変数パラメータ、自己参照を渡す。
【０１９１】
メソッドが動作するオブジェクトがこのメソッドと同じ形状を有する場合、前記特性値に、変換メソッドベクトル２８２の代わりにメソッドポインタベクトル２５２を使用してアクセスする。
第３実施形態
上述したようなデータを構成する第３実施形態を使用する場合、メソッドを実行するために使用されるステップは、図１９に示すステップと同様であるが、いくつかの違いがある。メソッドをこの実施形態においてコンパイルする場合、特性名１２４は特性名テーブルインデックス番号１２２に減少されるが、オブジェクト内特性番号には減少されない。したがって、マップテーブル２４４も変換メソッドテーブル３５６も必要なく、したがってこれらは形状テーブル２９６（図１７）に含まれない。
【０１９２】
メソッド実行中、カラーボタンオブジェクトのフォントサイズ特性のような特性を、その特性名テーブルインデックス番号によって呼ぶ。カラーボタンオブジェクトのフォントサイズ特性の値にアクセスするために、ダブルフォントサイズメソッドは、フォントサイズと名付けられたメソッドを呼び出す。ダブルフォントサイズメソッドは、オブジェクトカラーボタンにおいて動作するため、カラーボタンに対する自己参照は、独立変数パラメータとしてフォントサイズに対する呼出しに含まれる。フォントサイズに対する呼出しは、フォントサイズの特性値を設定すべきか検索すべきかを示すフラグも含む。
【０１９３】
この実施形態において、各々のオブジェクトに関する動作２０４は、各々の特性の名前を有するメソッドを含み、このメソッドは、前記特性値を獲得または設定するためのアクセスである。オブジェクトの特性に対する参照を、前記オブジェクトに対するメソッド呼出しとして取り扱う。前記メソッド名はアクセスすべき特性を示し、前記メソッド呼び出しは、適用可能なオブジェクトを識別する自己参照と、前記値を設定すべきか検索すべきかを示すフラグとを含む。
【０１９４】
次に前記オブジェクトの動作を含むメソッドテーブルを探索し、前記適切なメソッドを実行し、前記特性値を検索または設定する。上述した第２実施形態におけるように、獲得および設定メソッドは、前記特性値の正確な位置およびサイズのトラックを保持する。しかしながらこの実施形態において、各々の形状が獲得および設定メソッドを有するのではなく、各々のオブジェクトがそれ自身の獲得および設定メソッドを有する。これらのメソッドは各々のオブジェクトに固有であるため、同じ形状のオブジェクト内の特性値のメモリ貯蔵を異ならせることができる。さらに、インデックス化されているのと反対に、前記メソッドテーブルを探索し、前記獲得および設定メソッドを見つけるため、前記テーブルに載せられたメソッドを、何らかの特定の順序とする必要はない。
【０１９５】
図２２は、メソッドの実行中の特性値へのアクセスに含まれるステップを説明するフローチャートである。このプロセスは、特性値が要求されたとき、ステップ３９２で開始する。ステップ４００は、要求された特性の特性名テーブルインデックス番号を、この特性を検索すべきか、または設定すべきかを示すフラグと共に、元もメソッド呼出しの自己独立変数パラメータによって示される前記オブジェクトのメソッドテーブルに渡すことを示す。ステップ４０２は、前記メソッドテーブルを探索し、前記示された特性名テーブルインデックス番号と、獲得または設定フラグとに対応するメソッドを見つけることを示す。ステップ４０４は、適切な獲得または設定メソッドを実行し、前記特性値を返すか、設定することを示す。
【０１９６】
図２２におけるステップは、特性の簡単な獲得または設定を行う場合、形状テーブルへのアクセスを必要としないことを示す。しかしながら、形状テーブルは、どの形状を他の形状に変換できるかを示すために依然として必要とされる。
【０１９７】
上述したデータ構成に関する最初の２つの実施形態において、前記コンパイラが、特性名テーブルインデックス番号１２２（図８）からのメソッドまたはオブジェクトにおける特性に対するすべての参照を、オブジェクト内特性番号１５６に変換し、プログラム実行中にこれらの特性にアクセスするために必要な時間を短縮することが望ましい。メソッドに１つのオブジェクトを渡した場合、前記コンパイラは、上述した技術を使用し、特性名テーブルインデックス番号１２２を使用する特性値に対する参照を、作用される前記オブジェクトのオブジェクト内特性番号１５６に変換することができる。前記オブジェクトと、マップテーブル２４４またはメソッド変換テーブル２８２とに対する自己参照は、前記メソッド中へのエントリーにおいて得られ、したがって、これらのパラメータは、前記メソッドにおいてコード化された特性名を、前記メソッドに送られるオブジェクトのオブジェクト内特性番号に減らすために利用可能である。
【０１９８】
しかしながら時々、前記メソッドが呼ばれるオブジェクトの特性値以外に、オブジェクトの特性値を得る必要がある。これらのような場合において、前記コンパイラは、依然として、特性名をオブジェクト内特性番号に減らそうとするであろう。アクセスされている特性値が、前記メソッドが呼ばれる自己オブジェクトのものではないため、対応する変換手段に対するポインタは、前記メソッド呼出しによって渡されない。したがって、前記コンパイラは、アクセスされている特性値を有するのはどのようなオブジェクトであるかを決定し、このオブジェクトの形状を得て、前記形状テーブルにおいて対応する変換手段を位置決めることを必要とする。このとき前記コンパイラは前記変換手段を使用し、前記メソッドにおける特性を、前記特性を有するオブジェクトに関するオブジェクト内特性番号に変換することができる。
【０１９９】
いくつかの場合において、前記特性を有するオブジェクトの形状は、前記コンパイラに知られているかもしれない。このような場合において、特性名テーブル１２４をその特性名テーブルインデックス番号１２２に減らすが、さらにオブジェクト内特性番号に減らすことはできない。つぎに、前記オブジェクトの形状が決定された場合、特性名テーブルインデックス番号１２２を使用し、実行時における特性値に参照する。データ構成に関する前記最初の２つの実施形態において、特性リスト２２２（図１３、１５）を探索し、前記オブジェクト内特性番号を決定し、このオブジェクト内特性番号を、特性値ベクトル２０８か、メソッドポインタベクトル２５２へのインデックスに使用し、前記特性値を得る。
オブジェクト記述のオブジェクト貯蔵からの分離
本発明の形状の使用と特性値を格納する技術とは、結果として、図１に示すようにオブジェクトに関係するデータを特性が宣言または承継された順序に格納する、Ｃ＋＋のような先行技術のオブジェクト指向言語におけるよりも、柔軟なプログラミング環境が得られる。
【０２００】
形状テーブル１３４の構造および内容は本発明の異なった実行において変化するであろうが、ある機構を設けて、第１セットの特性を有する第１形状から第１セットの特性のスーパセットを有する第２形状に変換することを理解できる。さらに、特性名は、上記実施の形態の各々において、アプリケーション内で独自のものであり、特性名テーブルによって序列化される。このような配置によって、メソッド及びオブジェクトは、内部インデックス番号、すなわち、オブジェクト内又はメソッド内特性番号によって特性を言及することができ、これによって、効率を向上させるとともに、複数オブジェクト及びメソッドを有するシステムのオブジェクト及び動作の実現を容易にする。
【０２０１】
従来の精密な記憶構造は、親の全ての特性及びメソッドが子オブジェクトによって承継され、これによって発明の背景区分に記載された複数承継に伴う問題が生じる。本発明の独自のアーキテクチャによって、オブジェクトの実際の記憶構造をプログラマのオブジェクトの表示から分離することができる。この分離によって、割り当てるメモリのコンパイラに柔軟性を与えるとともに、これまで実際的でなかった最適化をコンパイラが自由に実行する。例えば、コンパイラは、親オブジェクト及び子オブジェクトのように相違するオブジェクト間で記憶構造を共有することができる。構造及び表示の分離によって、承継を規定する際により柔軟性を許容することもできる。
ファセット（登録商標）−タイプサブグループ承継
オブジェクト内プロパティのセットを互いにグループ化するとともにオブジェクトの特定の態様として処理することができる。このような態様を、ファセット（登録商標）−タイプ特性サブグループと称する。プログラマは、宣言と、オブジェクトのファセット（登録商標）−タイプ特性サブグループを親オブジェクトから承継するオブジェクト配置によって制御することができる。親オブジェクトを、子オブジェクトの対応するファセット（登録商標）−タイプ特性サブグループが承継されるファセット（登録商標）−タイプ特性サブグループに分割することもできる。ファセット（登録商標）−タイプ特性サブグループを通じた承継を、ｈａｓ−ａ階層又はｉｓ−ａ階層で実現することかできる。ｈａｓ−ａ階層において、特性は、子オブジェクトがどの親オブジェクトに配置されていようと対応するファセット（登録商標）−タイプ特性サブグループから承継される。ｉｓ−ａ階層において、特性は、特定の親のファセット（登録商標）−タイプ特性サブグループから承継される。ｈａｓ−ａ階層は、オブジェクトプロトタイプモデルに基づくアーキテクチャにより好適になり、それに対して、ｉｓ−ａ承継階層はクラスインスタンスモデルにより適切になる。
【０２０２】
ファセット（登録商標）−タイプ特性サブグループの使用を通じて、本発明は、単一オブジェクトが、複数の（ｈａｓ−ａ）親オブジェクトに含まれるとともに複数の（ｉｓ−ａ）親オブジェクトから取り出されるようにするとともに、子オブジェクトのファセット（登録商標）−タイプ特性サブグループが親オブジェクトの各々から承継される宣言によってプログラマが指定することができるようになり、これによって、承継の細分性及び柔軟性を著しく増大させる。各ファセット（登録商標）−タイプ特性サブグループが一つの親を有し、子オブジェクトのファセット（登録商標）−タイプ特性サブグループ内の個々の特性を、親から承継されたもの又は承継されなかったものとして指定することができる。したがって、オブジェクトを宣誓して、関連の親から要求された特性のみを承継することができる。実際には、本発明は、複数の承継を複数の単一承継に変換し、これによって、従来の複数承継形態の際の承継の混乱を除去する。
【０２０３】
本明細書は、ｈａｓ−ａ階層を用いたファセット（登録商標）−タイプ特性サブグループの実現を以下説明するが、当業者は、同様なメソッドでｉｓ−ａ階層を用いて本発明を実現することができる。
【０２０４】
以下は、オブジェクトＡ〜Ｆに対するオブジェクト宣言の一例であり、これは、図２３に示すようにｈａｓ−ａ承継階層中に現れる。
オブジェクトＡ
｛
ファセットフォント
特性フォントサイズ
特性制御コンポーネント
ファセット構造
特性充填
特性スクロールコンポーネント
｝
オブジェクトＢ
｛
ファセットスタイル
特性充填
ファセット背景
特性色
特性制御コンポーネント
特性スクロールコンポーネント
｝
オブジェクトＣ
｛
ファセットフォント
特性フォントサイズ承継
特性ボックスコンポーネント
ファセット背景
特性色承継
｝
オブジェクトＤ
｛
ファセット背景
特性色承継
ファセット構成
特性充填承継
特性ボックスコンポーネント
｝
オブジェクトＥ
｛
ファセットフォント
特性フォントサイズ承継
特性表題
メソッド１
ファセット出現
特性可視性
ファセット構成
特性充填承継
特性境界
メソッド２
｝
オブジェクトＦ
｛
ファセットフォント
特性フォントサイズ
ファセット出現
特性可視性
｝
図２３のオブジェクトは、従来技術の複数承継を説明した図３のものと類似している。しかしながら、本発明において、ファセット（登録商標）−タイプ特性サブグループ内の特性が承継される親を指定することができ、特性が承継された及び承継されないことを指定することができる。
【０２０５】
図３の例において、両オブジェクトＡ及びＢは、充填と称された特性を有する。従来技術のプログラミングシステムにおいて、オブジェクトＥは最終的には両方の充填特性から承継され、Ｅの充填特性を要求するときいずれの充填特性にアクセスするのかを決定するのは困難であった。オブジェクトＣに規定されたメソッドが、オブジェクトＡ又はＢからの指定された充填特性を有することに依存する場合、オブジェクトＥがオブジェクトＣからメソッドを承継したにもかかわらず、メソッドがオブジェクトＥ上で作動するか否か不確実である。
【０２０６】
これら問題は本発明によって解決される。図２３及び対応する上記宣言は、オブジェクトＡ〜Ｆがそれぞれファセット（登録商標）−タイプ特性サブグループに分割され、各ファセット（登録商標）−タイプ特性サブグループは、指定された特性を含むものとして宣言される。
【０２０７】
オブジェクトＡの制御特性のような承継特性のそれ自体の一部である特性は、「コンポーネント」オブジェクトとしてタグを付けられる。特性がコンポーネントとしてタグを付けられると、その特性に割り当てられたオブジェクトは承継階層に参加することができ、すなわち、割り当てられたオブジェクトは、親コンテナから値を承継する特性を有することができる。例えば、オブジェクトＣはボタンオブジェクトを表すことができる。オブジェクトＣが、Ａ．制御＝Ｃのような割当て状態によるようなオブジェクトＡに配置されると、「ゲートウェイ」は、オブジェクトＡのフォントファセットのフォントサイズのような特性の値に対してオープンされて、オブジェクトＣのフォントファセットの同一特性に流す。コンポーネントとして特性制御のオブジェクトＡにおける説明が承継に対するゲートウェイをオープンしたとしても、指定された特性が承継されるか否かは子オブジェクトの宣言によって制御される。オブジェクトＣのフォントサイズ特性上のタグ「承継」は、フォントサイズ値がコンテナ親の対応するファセットの同一名の特性から承継されることを表す。フォントファセットを有する任意のオブジェクトを、オブジェクトＡの制御コンポーネントとして配置することができる。したがって、好適な実現において、特性が子オブジェクトのファセットに存在し、かつ、子オブジェクトが、子オブジェクトファセットと同一名を有するとともに同一特性を有する親オブジェクトファセット内のコンポーネントに配置されると、子の特性が「承継」のタグを付けられる場合に子オブジェクトの特性は親オブジェクトの特性の値を承継する。
【０２０８】
例えば、上記宣言及び図２３において、オブジェクトＣはオブジェクトＡ及びオブジェクトＢの両方に含まれる。オブジェクトＣを、例えばニュースレターストリーとし、オブジェクトＡ及びＢを、ニュースレターのページ及び欄又はニュースレターそれ自体とすることができる。オブジェクトＣのフォントファセットのフォントサイズ特性は、承継されたものとしてタグされる。オブジェクトＣは、オブジェクトＡのフォントファセットに含まれる。したがって、オブジェクトＣのフォントサイズ特性はオブジェクトＡから承継される。オブジェクトＣも、オブジェクトＢの背景ファセットに含まれる。したがって、オブジェクトＣの背景ファセット中に存在するとともに承継に対してタグされた特性色は、オブジェクトＢから承継される。
【０２０９】
同様に、オブジェクトＤは両オブジェクトＡ及びＢに含まれる。オブジェクトＤは、オブジェクトＢ及びＡからそれぞれ特性色及び充填を承継し、その構成ファセットの特性充填をオブジェクトＥの構成ファセットにパスさせる。オブジェクトＥの出現ファセットの特性可視性は、ｉｓ−ａ承継を通じてオブジェクトＦから値を承継する。その理由は、オブジェクトＦは、オブジェクトＥのファセット出現の親として指定されるからである。
【０２１０】
したがって、承継は、オブジェクトの外側に存在する承継の順序及び調停ルールよりはオブジェクト規定のファセット（登録商標）−タイプ特性サブグループの明快な宣言によって決定される。オブジェクトＥは充填された特性をオブジェクトＣから承継するのかオブジェクトＤから承継するのかを、外部ルールのセットからではなくオブジェクトＥ及びその直接の親内で決定される。プログラマは、オブジェクトＣに配置されたオブジェクトＥが単にオブジェクトＥ及びＣの宣言を観察することによってオブジェクトＣからフォントサイズ特性を承継する。オブジェクトＡから特性フォントサイズを承継するとともにオブジェクトＢから特性色を承継することに依存するオブジェクトＣのメソッドは適切に行われる。その理由は、承継が宣言によって指定されるからである。実際には、本発明は、各々をファセット（登録商標）−タイプ特性サブグループとして説明した単一承継の複数の場合に対する複数の承継を減少させる。
【０２１１】
図２４Ａ及び２４Ｂは、本発明の選択的な承継（図２４Ａ）と選択的でない従来技術の承継（図２４Ｂ）とを対比するための図１及び２の水上飛行機の例を用いる。図２４Ａ及び２４Ｂはそれぞれ、親オブジェクトの飛行機１０及びボート１２を有する水上飛行機オブジェクト４１６及び水上飛行機オブジェクト４１８をそれぞれ示す。図２４Ａは、着陸又は着水装置のような特性が子に要求されない場合にはそれを承継しないことも示す。したがって、親コンテナが、承継のために子オブジェクトに利用できる特性の全てを作成したとしても、「ゲートキーパ」として作用するとともに親からのどの情報が子オブジェクトに流れ出すかの宣言によって決定されるのは子オブジェクトである。図２４Ｂは、従来技術において親の全ての特性が承継されるとともにメソッド間の不一致が水上飛行機オブジェクトの外側のルールによって解決されるとともに承継の順次に関連することを示す。図２４Ａは、本発明において承継が水上オブジェクト４１６内で制御されることを示す。オブジェクトの特性の一部はそれ自体、他のオブジェクトを含むオブジェクトであり、オブジェクトの特性の一部はオブジェクトの簡単な属性であることを理解することができる。
【０２１２】
図１２に図示したようなオブジェクト記憶構造２０６を用いる情報データ構造の第１の実施の形態において、特性値は、オブジェクトの一部として特性値ベクトル２０８内に格納される。特性を、実際の値として又は値に対するポインタとして格納することができる。この記憶技術を用いて特性値を承継するために、子オブジェクトのオブジェクト記憶構造２０６は、親オブジェクトのオブジェクト記憶構造２０６に格納された値に対するポインタを有する。このような実施の形態において、アプリケーションのユーザは、親オブジェクト特性２０８に対するポインタを実際の値又は新たな値に対するポインタに置換することによって、承継された値の変更を強いることができる。
【０２１３】
図２５は、特性の承継の一例を示す。ニュースレターオブジェクト４２０は、フォント特性４２２及びページ特性４２４を有する。オブジェクトページ１はフォント特性４２８を有する。典型的な宣言は、
オブジェクトニュースレター
｛        ファセット  タイプスタイル
特性ページコンポーネント
特性フォント
｝
オブジェクトページ１
｛        ファセット  タイプスタイル
特性フォント承継
特性欄
｝
として現れる。オブジェクトページ１は、
ニュースレター．ページ＝ページ１
のような表現によってニュースレターオブジェクトのページスロットに配置される。
【０２１４】
ページ１オブジェクト４２４の宣言において、そのフォント特性４２８は、その親から承継されたものとして宣言される。親コンテナからｈａｓ−ａ階層を通じて承継される特性を、ここでは「周囲」特性と称する。その理由は、その値がその周囲の環境によって決定されるからである。図２５は、ページ１オブジェクト４２４に対するオブジェクト記憶構造２０６（図１２）のフォント特性４２８に対する値がニュースレターオブジェクト４２０に対するオブジェクト記憶構造２０６のフォント特性４２２エントリに対するポインタである。
【０２１５】
図１４に図示したオブジェクト記憶構造２４６を用いる上記第２の実施の形態において、特性値は、親オブジェクトの対応する特性を指示するオブジェクト記憶構造２４６内の値をセットすることによって承継される。子の特性の値をセットするように試みると、システムは値をセットすることができ、これによって親特性値に対するリンクを除去する。特性をセットすることを許容しない場合には承継を要求し、親の値を変更すると、親は子からの承継を許容する。典型的には第１オプションが用いられ、これによって親からのデフォルト値を重ね合わせることができる。
【０２１６】
第３の実施の形態において、適正値のインデックス化されたベクトルすなわち獲得及びセットハンドラ法に対するポインタが存在しない。全ての値は検索され、すなわち、メソッドを用いる実行時間中に拘束されるメソッドを用いて各オブジェクトに対するルックアップテーブルをセットする。したがって、承継された特性を得るために用いられるメソッドは、親で用いられるメソッドを呼び出すために規定される。上記実施の形態のように、セットファンクションはヌル値にリターンし、これによって、承継された値が重なるのを防止し、すなわちセットファンクションは値をセットしてセットファンクションを変更することができ、その結果、親の値にリターンするよりはむしろその値にリターンする。
【０２１７】
上記承継技術は、ワンウェイ抑制承継を提供し、すなわち、親の特性の値は、個の特性の値となるが、子の値の変化によって親の値は変化しない。本発明を、子の変化が親に戻すことができるように実現することができる。本発明を、親と子オブジェクト間のファセット（登録商標）−タイプ特性サブグループ名の識別が承継に対して予め要求されないように実現することもできる。各オブジェクトのファセット（登録商標）−タイプ特性サブグループの構造を、既知の技術によりコンパイラによって創成された符号テーブル中に維持することができる。
【０２１８】
オブジェクトの形状は、典型的にはそのファセット（登録商標）−タイプ特性サブグループ構造に依存しない。すなわち、動作が形状（フォントサイズ、充填）に対して規定される場合、特性フォントサイズ及び充填がオブジェクトＡの二つの相違するファセット（登録商標）−タイプ特性サブグループに存在したとしても、形状は上記オブジェクトＡに適用可能である。
【０２１９】
したがって、オブジェクトの密閉、承継順序、細分性及び抑制階層の標準的なオブジェクト適合プログラミングの十分既知の問題を解決するオブジェクト適合アーキテクチャに対する新規のデータ構造を記載した。本発明において、承継は、承継するオブジェクトで制御される。プログラマは、どの特性がどの親から承継されたか、特性がｉｓ−ａ階層を通じて承継されるのかｈａｓ−ａ階層を通じて承継されるのか宣言することができる。プログラマはもはや、どのオブジェクトが承継するかを決定するために祖先オブジェクトの構造及び調停ルールを知り及び分析する必要がない。したがって、本発明は、独自に伸張可能であり、スケール化可能なアプリケーション開発アーキテクチャを創成し、オブジェクトを用いるアプリケーション設計に適用可能である。
【０２２０】
本発明はクラスアーキテクチャを訂正し、その結果、タイピングのメソッド、すなわち、クラスインスタンスを用いるオブジェクト、オブジェクトプロトタイプ又は単一抑制ツリーアーキテクチャを識別することに依存する必要がなくなる。本発明は、ソフトウェアを複雑にするとともに言語アーキテクチャに内在する問題を解決しない親クラス記録、宣言承継、注文コーディング及び重ね合わせを用いることに起因する問題を解決する既知のメソッドを回避することができる。
【０２２１】
本発明は、オブジェクト適合言語アーキテクチャそれ自体を変更して、クラスオブジェクト、承継又は宣言を用いる標準的なメソッドに加えてメソッドの承継及び複数の抑制階層からの特性を許容する。これは、オブジェクトを規定するクラス承継、オブジェクトプロトタイプ及び単一抑制ツリーの履歴使用に対して重要な補足である。複数の抑制階層の使用が上記標準的なオブジェクト適合プログラミング言語の問題を解決するだけでなく、ダイナミックタイプの表示のプログラミングアーキテクチャ、単一メソッド又は特性の細分性を有する承継及びダイナミックなメソッド承継を著しく向上させることができる。
【０２２２】
標準的なオブジェクト適合プログラミングは、オブジェクトが共有された特性を有するオブジェクトのセットのメンバであるか否かを決定するために承継及び密閉を用いる。二つのオブジェクトが同一の親を指摘する場合、これらは「同一」となる。本発明において、比較された二つのオブジェクトの特性を参照することによってのみ一致を決定する。二つのオブジェクトが同一セットの特性を共有する場合、これらは「同一セットを保持する。」本発明は、オブジェクトが形成されるメソッドに注意しない（標準的な承継はオブジェクト属性に対する一つのあり得るソースのままである。）。
【０２２３】
オブジェクトに関連するメソッドは、オブジェクトが有する特性セットのみに基づいて同様に得られる。メソッドは、オブジェクトの抑制階層に依存せずに得られる。これは望ましいことである。その理由は、オブジェクトがしばしば共同し又は複数の環境中に同時に存在し、要求される動作又は特性がこれら環境によって表されたコンテキストに依存するからである。例えば、円グラフのような図形オブジェクトはそのページ（位置、表題サイズ）、その発行タイプ（ニュースレター又はＨＴＭＬ）及び現在の出力装置（プリンタ又は表示スクリーン）から特性又は動作を得ることができる。この問題は、単一の抑制ツリーを用いて解決するのに困難であり、これは現在の課題である。本発明において、全ての分類階層はプログラマが利用することができ、単一特性及びメソッドのレベルに対して細分されたオブジェクト規定を用いてオブジェクトを発生させるのに指定されたコードを必要としない。ファセット（登録商標）−タイプ特性サブグループアーキテクチャは、メソッドに依存しないオブジェクトの構成を宣言して、密閉を破壊し又は注文コーディングを必要とすることなくオブジェクトを動的に変化させることができる。
【０２２４】
このようにして、アプリケーションは、親クラスから承継されたメソッドの重ね合わせ又は親から受け継いだ混成順序のルールなしで、あいまいさを有しながらオブジェクトの特性を結合するメソッドを表現することができる。このアーキテクチャによって、オブジェクト適合プログラミングをアプリケーションプログラマのドメインとする。プログラマは、クラスライブラリを処理する専門的技術を用いるよりはむしろ、アプリケーションのアーキテクチャを強いることができる。
【０２２５】
本発明のシステムを、記憶媒体を利用できるコンピュータを具える製造の物品で実現することができる。このような媒体は、ディスク、ＣＤ−ＲＯＭ並びにプログラム可能な及びプログラム可能でない読出し専用メモリを含む、磁気、光、シリコン物品を含む。
【０２２６】
本発明は上記実施の形態に限定されるものではなく、幾多の変更及び変形が可能であることは明らかである。例えば、上記実施の形態において、一度規定したオブジェクトは有効範囲を逸脱することがなく、すなわち、プログラムの一部に規定されたオブジェクトはプログラム全体を通じて規定されたままである。本発明を、オブジェクトが有効範囲を有するとともに特定の形状又は特性を有する最終オブジェクトが有効範囲外になったときに形状テーブル及び特性名テーブルの対応するエンティティが除去されるように実現することができる。本発明は一般に、任意のソフトウェア、すなわち、特性及び動作を有する構成に適用可能であり、ここで用いられるような用語「オブジェクト」は、相違するコンピュータ言語又はモデルの種々の規定の任意のものに制限されるものとして構成されない。したがって、本発明の範囲は、以下の請求の範囲によってのみ決定される。
【図面の簡単な説明】
【０２２７】
【図１Ａ】従来技術のソフトウェアオブジェクトを示す図である。
【図１Ｂ】従来技術のソフトウェアオブジェクトを示す図である。
【図１Ｃ】従来技術のソフトウェアオブジェクトを示し、図１Ａ及び１Ｂのオブジェクトから特性を承継するオブジェクトを示す図である。
【図２Ａ】図１Ａ及び１Ｂのオブジェクトによって表された飛行機及びボートの絵である。
【図２Ｂ】図１Ａ及び１Ｂのオブジェクトによって表された飛行機及びボートの絵である。
【図２Ｃ】従来技術の複数の承継に起因する図１Ｃの水上飛行機オブジェクトの絵であり、最初にボートオブジェクトから承継したものを示す図である。
【図２Ｄ】従来技術の複数の承継に起因する図１Ｃの水上飛行機オブジェクトの絵であり、最初に飛行機オブジェクトから承継したものを示す図である。
【図３】従来の複数承継階層を示すフローチャートである。
【図４】本発明の第１の好適な実施の形態の新たなオブジェクトの創成の際に伴うステップを示すフローチャートである。
【図５】本発明による典型的なオブジェクトであるボタンを示す図である。
【図６】図形的なユーザインタフェースの一部として用いられるとともに図５のオブジェクトによって表されたボタンを示す。
【図７】本発明の好適な実施の形態で用いられる特性名テーブルの一例である。
【図８】本発明の所定の実施の形態で用いられる形状テーブルの概念的な例である。
【図９】本発明の他のオブジェクトであるビッグボタンの例である。
【図１０】本発明の別のオブジェクトであるカラーボタンの例である。
【図１１】本発明の好適な実施の形態で用いられる一般化されたオブジェクト記憶構造を示す。
【図１２】図１１に図示したオブジェクト記憶構造の第１例に用いられる特性値ベクトルを示す。
【図１３】図８に概念的に示す形状テーブルの好適な実現の形態を示す。
【図１４】本発明の第２の実施の形態で用いられるオブジェクト記憶構造を示す。
【図１５】本発明の第２の実施の形態で用いられる形状テーブルを示す。
【図１６】本発明の第３の実施の形態で用いられるオブジェクト記憶構造を示す。
【図１７】本発明の第３の実施の形態で用いられる形状テーブルの好適な実現を線形表示を示す。
【図１８】本発明の一実施の形態の動作を創成する際に伴うステップを示すフローチャートである。
【図１９】メソッドに送られたオブジェクト上の制限を用いる本発明の一実施の形態におけるメソッド呼出しのステップを示すフローチャートである。
【図２０】本発明の第１の実施の形態における特性値にアクセスするのに用いられるステップを示すフローチャートである。
【図２１】本発明の第２の実施の形態における特性値にアクセスするのに用いられるステップを示すフローチャートである。
【図２２】本発明の第３の実施の形態における特性値にアクセスするのに用いられるステップを示すフローチャートである。
【図２３】図３に図示したオブジェクトに類似したオブジェクトからの本発明に基づく承継を示す図である。
【図２４Ａ】本発明の選択的な承継と従来技術の言語システムの承継との概念的な比較である。
【図２４Ｂ】本発明の選択的な承継と従来技術の言語システムの承継との概念的な比較である。
【図２５】図１２に図示したタイプのオブジェクト記憶構造を用いる実施の形態における特性を承継するメソッドを示す図である。トパラメータ
【図１Ａ】
2008243219.tif 000003
【図１Ｂ】
2008243219.tif 000004
【図１Ｃ】
2008243219.tif 000005
【図２Ａ】
2008243219.tif 000006
【図２Ｂ】
2008243219.tif 000007
【図２Ｃ】
2008243219.tif 000008
【図２Ｄ】
2008243219.tif 000009
【図３】
2008243219.tif 000010
【図４】
2008243219.tif 000011
【図５】
2008243219.tif 000012
【図６】
2008243219.tif 000013
【図７】
2008243219.tif 000014
【図８】
2008243219.tif 000015
【図９】
2008243219.tif 000016
【図１０】
2008243219.tif 000017
【図１１】
2008243219.tif 000018
【図１２】
2008243219.tif 000019
【図１３】
2008243219.tif 000020
【図１４】
2008243219.tif 000021
【図１５】
2008243219.tif 000022
【図１６】
2008243219.tif 000023
【図１７】
2008243219.tif 000024
【図１８】
2008243219.tif 000025
【図１９】
2008243219.tif 000026
【図２０】
2008243219.tif 000027
【図２１】
2008243219.tif 000028
【図２２】
2008243219.tif 000029
【図２３】
2008243219.tif 000030
【図２４Ａ】
2008243219.tif 000031
【図２４Ｂ】
2008243219.tif 000032
【図２５】
2008243219.tif 000033