JPH06266563A - 複数同時オブジェクト・バージョンをサポートする効率的ルータ - Google Patents
複数同時オブジェクト・バージョンをサポートする効率的ルータInfo
- Publication number
- JPH06266563A JPH06266563A JP5216496A JP21649693A JPH06266563A JP H06266563 A JPH06266563 A JP H06266563A JP 5216496 A JP5216496 A JP 5216496A JP 21649693 A JP21649693 A JP 21649693A JP H06266563 A JPH06266563 A JP H06266563A
- Authority
- JP
- Japan
- Prior art keywords
- class
- interface
- subclass
- new
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
(OOP)環境を提供すること。 【構成】 OOP環境は、複合データ構造、及びそれら
の構造を操作する内部機構を含む。本発明を構成する内
部機構及び構造は、集合的にニュー・オブジェクト・モ
デル(NOM)と呼ばれる。NOM OOP環境の複合
データ構造及び構成は、より効率的なメソッド解析方
法、並びにコード・ベースの大部分を再コンパイルする
必要なくクラス定義にメソッド・プログラム及びオブジ
ェクト・インスタンス・データを追加する機能を含む。
Description
特に、オブジェクト指向のプログラミング環境に関す
る。
開発は、しばしばコンピュータ時代の幕開けとして提唱
される。それ以来、コンピュータ・システムはアメリカ
ン・ライフ・スタイルの様々な面において浸透してき
た。こうした普及の理由の1つに、コンピュータ・シス
テムが様々なタスクを効率的に実行できる能力が挙げら
れる。これらのタスクを実行するために、コンピュータ
・システムにより使用される機構を、コンピュータ・プ
ログラムと称する。
ンピュータ・プログラムの開発も長年に渡り発展してき
た。EDVACシステムは、"1アドレス"コンピュータ
・プログラミング言語と称される言語を使用した。この
言語は、最も初歩的なコンピュータ・プログラムだけを
考慮した。1950年代初期、科学者達は人間に合理的
に理解できるシンボリック命令を、コンピュータ・シス
テムにより理解される形式に変換する機構を開発した。
各コンピュータ・システムは、特定のグループのこれら
の命令を扱うように設計された。これらのグループの命
令は、命令セットと称される。
ップは、コンピュータ・プログラミング言語の概念であ
った。コンピュータ・プログラミング言語は、シンボリ
ック命令セットよりも、より理解しやすいものであっ
た。コンピュータ・プログラムは様々なコンピュータ・
プログラミング言語を用いて作成される。一度作成され
ると、コンピュータ・プログラムは特定のコンピュータ
・システムの命令セットの一部である命令にコンパイル
される。FORTRAN は通常、特定の命令セットと無関係に
作成されるコンピュータ・プログラムの最初の言語とし
て引用される。1960年代までに、コンピュータ・プ
ログラミング言語の改良は、コンピュータ・プログラム
にまで及んだ。なぜなら、コンピュータ・プログラムが
非常に大規模化し、複雑化したため、コンピュータ・プ
ログラムの開発環境及び保守を管理及び制御することが
困難となったためである。
なプログラミング言語の開発から、大規模なコンピュー
タ・プログラムの日増しに進む複雑化及びコストを収容
可能な、プログラミング方法論及び環境の開発に移行し
た。こうした方法論の1つが、オブジェクト指向プログ
ラミング(OOP:Object Oriented Programming )の
アプローチである。OOPの支持者達は、コンピュータ
・プログラミングにおけるこのアプローチにより、コン
ピュータ・プログラマの生産性が25倍程度改良される
と主張する。こうして、OOP概念が最初に開発されて
から、既にある時間が経過したが、現在でもこの概念が
将来的な方法であると見なされている。
再使用性"である。カプセル化は情報及び情報を使用す
る手段が、概念的に"オブジェクト"と称される個々のエ
ンティティにパッケージ化されることを意味する。オブ
ジェクトは、コンピュータ・システムにより実行される
個々のオペレーション或いはオペレーションのグループ
を表す。1つのオブジェクトに含まれる情報はデータ
(data)と称され、情報に対して特定のオペレーション
を実行するために使用される手段は、メソッド(metho
d)と称される。再使用性の概念は、オブジェクトが他
の多くのオブジェクトのメソッドにより使用可能なよう
に、総称的に作成されることを意味する。オブジェクト
を使用するプログラム或いはメソッド・プログラムは、
オブジェクトのクライアント(すなわちクライアント・
プログラム)であると称される。クライアントはオブジ
ェクトを呼出す一方で、使用されるメソッドを指定す
る。これはメソッド解析と称される。
ブジェクトのメンバであると見なされる。オブジェクト
は生成されると、特定のクラスのメンバとなるか、或い
は特定のクラスのサブクラスのメンバであると見なされ
る。サブクラスのメンバとして生成されるオブジェクト
は、そのサブクラスに対応するクラス(すなわちそれら
のスーパー・クラス)の性質(すなわちデータ及びメソ
ッド)を継承すると言われる。例えば、犬科(Canine)
と称されるオブジェクト・クラスを考えてみよう。この
クラスは、そのクラスのオブジェクトを示すデータ(す
なわち名前、色、目及び足の数など)を有する。このク
ラスはまた、このクラスのデータと共に作用するために
用いられるメソッドを定義される。例えば、クラス犬科
のオブジェクトは、色が黒で、2つの目と4本の足を有
するREXと命令される犬科を表すオブジェクトであっ
たりする。クラス犬科のサブクラスであるドッグ(Dog
)は、更にクラス犬科を定義し、犬科のどのタイプが
含まれるかを示すデータを含む。例えば、クラス・ドッ
グのオブジェクトは、その色が白と茶で、2つの目と4
本の足を有し、タイプがコリー(Collie)であるラッシ
ー(Lassie)と命名される犬を表すように生成される。
クラス犬科はまた、クラス・ドッグのスーパー・クラス
(super class )と見なされる。オブジェクト及びサブ
クラスが追加されることにより、階層的3構造が形成さ
れる。各クラスはそれぞれサブクラス或いはスーパー・
クラスと称され、階層構造における特定のレベルと見な
される。例では、クラス犬科のサブクラスであるクラス
・ドッグは、クラス犬科よりも1つ大きなレベルに適合
する。
れる2つの環境は、"C++"環境と "スモールトーク"(S
malltalk)環境である。C++環境は現存する"C"コンピ
ュータ・プログラミング言語の単に拡張である。従っ
て、これはOOPに対する極めて非柔軟なアプローチと
言える。特定のクラスのオブジェクトに対応するデータ
が変更を要求する場合、或いは特定のクラスのオブジェ
クトに対応するメソッドが追加される場合、変更される
クラスのメンバである全てのオブジェクト、及び変更さ
れるクラスのサブクラスのメンバであるオブジェクトが
再生されて、それらのメソッドが再コンパイルされなけ
ればならない。更に、変更されるクラスのオブジェク
ト、或いは変更されるクラスのサブクラスのメンバであ
るオブジェクトに依存するクライアントもまた、再コン
パイルされなければならない。これは上述の犬科−ドッ
グで示した仮定では特に問題とは思われないが、多数の
クラス及びサブクラスを含む大規模システムでは、非常
にコストが掛かり、また時間を消費する。
チは、再コンパイルを要せずにメソッドの追加を可能と
した点で、C++を改良したものである。しかしながら、
この柔軟性はコストを要さないものではない。スモール
トークのOOP環境の設計者は、再コンパイルを要せず
にメソッドを追加可能とする機能のために、効率的なメ
ソッド解析を犠牲にする。更に、OOPにおけるスモー
ルトークのアプローチは、再生及び再コンパイルの犠牲
を招くことなく、オブジェクトに対するメソッドの追加
を可能とするが、スモールトーク環境は、オブジェクト
・データに対する変更におけるC++の欠点を共有する。
プローチにより実現される生産性の利点を低減させてい
る。
は、改良されたOOP環境を提供することである。
境の構造を生成及び記憶する、改良された方法並びに装
置を提供することである。
P環境のオブジェクトを経路指定する、改良された方法
並びに装置を提供することである。
P環境を生成する、改良された方法並びに装置を提供す
ることである。
境におけるクラスのバージョンを生成する、改良された
方法並びに装置を提供することである。
インスタンスのバージョンをあるバージョンから別のバ
ージョンに変更する、改良された方法並びに装置を提供
することである。
P機構及び装置により達成される。
タ構造及びこれらの構造を操作する内部機構を含む。こ
うした構造は、ユーザがOOPのパワーを実現すること
を可能とする。従って、これらの構造のレイアウト、こ
れらの相関方法及びこれらが生成され使用される方法
は、全て特定のOOP環境のユーティリティにとって重
要である。従って、OOP環境の製造者及び供給者が、
常にユーザ・ユーティリティを最大化する複合データ構
造及び内部機構を設計しようと努力していることは、驚
きに値しない。
称的にニュー・オブジェクト・モデル(NOM)と称さ
れる。NOM OOP環境の複合データ構造及び構成
は、従来技術環境によっては提供されない重要な利点を
提供する。これらの利点には、より効率的なメソッド解
析方法、並びにコード・ベースの大部分を再コンパイル
する必要なく、クラス定義にメソッド・プログラム及び
オブジェクト・インスタンス・データを追加する機能が
含まれる。
含み、それらはオブジェクト構造、インタフェース・テ
ーブル、及びメソッド・テーブルである。オブジェクト
構造は、その性質が現存のOOPオブジェクト構造に類
似であり、オブジェクトを特徴づけるデータ、及びイン
タフェース・テーブルに関するロケーション情報を含
む。オブジェクト・データは更にクラス・レベルにより
細分される。従って、各オブジェクトは、特定の階層木
構造におけるクラスの深さに対応する数のデータ・セッ
トを含む。インタフェース・テーブルは、オブジェクト
が属するクラスに対応するインタフェース・テーブル入
力、及びオブジェクトのスーパー・クラスの各々に対応
する入力(すなわち特定の階層木構造におけるクラスの
深さに至る各レベルに対応して1入力が割当てられる)
を含む。各入力は組(tuple )を有する。組はサブジェ
クト・クラス・レベルに対応するメソッド・テーブルに
関するロケーション情報、特定のクラス・レベルに関連
するオブジェクト・データのオフセット、及びクラス・
シグニチャを含む。ロケーション情報はメソッド・テー
ブルへのアクセスを獲得するために使用され、オフセッ
トはオブジェクトに記憶されるインスタンス・データへ
のアクセスを獲得するために使用される。クラス・シグ
ニチャは、クライアント・プログラムが、特定のオブジ
ェクトの特定のメソッドにより実現される機能を、正確
に呼出すことを保証する安全機構として使用される。ク
ラス・シグニチャに一致するシグニチャを呼出さないク
ライアント・プログラムは、選択されるメソッドを呼出
すことを許可されない。特定のクラス・レベルに対応す
るメソッド・テーブルは、自らが個々のメソッド・プロ
グラムに関するロケーション情報を含むメソッド・テー
ブル入力を含む。
ェクトにおいて具現される機能を利用する時、これはオ
ブジェクト名及び呼出されるメソッド・プログラムの名
前を指定することにより、オブジェクトを呼出す。オブ
ジェクトを呼出すことはまた、オブジェクトに"経路指
定する"とも称される。コンパイルされる時、NOM呼
出しステートメントは4片の情報を含み、それらはオブ
ジェクトID、レベル、呼出しシグニチャ、及びメソッ
ド・オフセットである。オブジェクトIDは特定のオブ
ジェクトを突き止め、アクセスするために使用される。
一度実行されると、オブジェクト内のロケーション情報
が、インタフェース・テーブルへのアクセスを獲得する
ために使用される。レベルは、次に適切なインタフェー
ス・テーブル入力を突き止めるために使用される。既に
述べたように、呼出しシグニチャは、選択されたメソッ
ド・プログラムが関連するクラスのクラス・シグニチャ
に対する一致を見るために使用される。シグニチャが一
致すると、サブジェクト・インタフェース・テーブル入
力内のロケーション情報が、適切なメソッド・テーブル
へのアクセスを獲得するために使用される。メソッド・
オフセットは、次に、正しいメソッド・プログラムをア
クセスして呼出すために使用される。
ムを追加する必要がある場合には、コンピュータ・プロ
グラマは、特定のクラスに関連するメソッド・テーブル
に、別の入力を追加するだけでよい。オブジェクトの再
コンパイルは必要ない。しかしながら、新たなメソッド
・プログラムへのアクセスを必要とするクライアント・
プログラムだけは、再コンパイルを必要とする。
にデータを追加することを望む場合、NOM環境では、
簡単にそのクラスの新たなバージョンが生成され、新た
なデータを要求するオブジェクトだけが再分類され得
る。旧バージョンのオブジェクトは、必要に応じて再分
類される。
ートする内部機構を提供する。これらはバージョン・マ
ネージャ、オブジェクト・マネージャ、並びにクラス定
義ユーティリティを含む。バージョン・マネージャは、
同一クラスのいくつかのバージョンが共存可能なよう
に、クラスのバージョンを生成する。オブジェクト・マ
ネージャは、オブジェクト・インタフェースの生成をサ
ポートし、一方、クラス定義ユーティリティは新たなク
ラスの定義をサポートする。
ロック図を示す。好適な実施例のコンピュータ・システ
ムは、改良されたIBM AS/400中型コンピュー
タ・システムである。しかしながら、OOP環境をサポ
ートできるコンピュータ・システムであれば、使用可能
である。図1に示されるように、コンピュータ・システ
ム100はメイン処理ユニット或いは中央処理ユニット
(CPU)105を含み、これはシステム・バス150
を介して、データ記憶装置140及び端末インタフェー
ス145に接続される。端末インタフェース145によ
り、システム管理者及びコンピュータ・プログラマは、
通常、プログラマブル・ワークステーションを通じて、
コンピュータ・システム100と通信することができ
る。図1に示されるシステムは、単一のメインCPU及
び単一のシステム・バスしか含まないが、本発明が複数
のメインCPU及び複数のI/Oバスを有するコンピュ
ータ・システムにも適応できることは理解されよう。同
様に、実施例のバスは、典型的にはハードワイヤで配線
されるマルチドロップ・バスであるが、双方向通信をサ
ポートする接続手段であれば使用可能である。
ージャ110、システム・オブジェクト・マネージャ1
15、クラス定義ユーティリティ117、クライアント
・プログラム120、オブジェクト125、メソッド・
プログラム130、及びオペレーティング・システム1
35を含む。データ記憶装置140はモノリシックなエ
ンティティとして示されるが、実際には様々なデバイス
を含み、示される全てのプログラム及びファイルが、必
ずしも、ある1つのデバイス内に含まれるものではない
ことが理解されよう。例えば、クライアント・プログラ
ム120及びオペレーティング・システム135の一部
は、典型的には主メモリにロードされて実行され、一
方、ソース・データ・ファイルは、典型的には磁気或い
は光ディスク記憶装置上に記憶される。
説明するために、本明細書を通じて使用されるOOP階
層木構造を示す。2重線で示されるボックスは異なるク
ラスを表し、単線で示されるボックスは、特定のクラス
のオブジェクト・インスタンスを表す。ここで図2が木
構造の概念的表現であることが理解されよう。データ記
憶装置140において、クラス及びオブジェクトが実際
に存在する様子が、図7乃至図10、図11、図13乃
至図14及び図16に示されている。
ラスである。クラスRoot200は、インスタンス変数を
含み、それらは"オブジェクト名"202、 "オブジェク
ト・クラス"204、"クラス・レベル"270、及び"イ
ンスタンス・サイズ" 272である。クラスRoot200
は木構造の最高レベルに位置するため、そのインスタン
ス変数は、それ以降で定義される全てのサブクラスによ
り継承される(クラスFinance 210では示されていな
い)。クラスRoot200はまたクラス・レベル0と見な
される。クラス・レベル1には、Personnel205、Per
sonnel_II 255、及びFinance210の各クラスが定
義されている。クラスPersonnel205は、オブジェク
ト・インスタンス変数として、"オブジェクト名"20
2、 "オブジェクト・クラス" 204、"クラス・レベ
ル"270、"インスタンス・サイズ"272、"従業員番
号"207、及び"給与"209が含まれる。オブジェク
ト・インスタンス変数"オブジェクト名"202、"オブ
ジェクト・クラス"204、 "クラス・レベル" 27
0、及び"インスタンス・サイズ"272は、クラスRoot
から継承され、オブジェクト・インスタンス変数"従業
員番号"207、及び"給与"209は、クラスPersonnel
に対応して特定的に定義される。クラスPersonnel20
5のサブクラスとして定義される各クラスは、オブジェ
クト・インスタンス207及び209を継承する(クラ
スLawyer215及びクラスManager 230では図示され
ていない)。
Personnel 205のサブクラスとして定義される。クラ
スPersonnel 205はそれ自身、クラスRoot200のサ
ブクラスである。従って、クラスEngineer220はその
スーパー・クラスのオブジェクト・インスタンス変数定
義(すなわち"オブジェクト名"202、 "オブジェクト
・クラス" 204、"クラス・レベル"270、"インス
タンス・サイズ"272、"従業員番号"207、及び"給
与"209)を継承する。クラスEngineer220はま
た、固有のクラス定義部分であるインスタンス変数も含
む。それらは "開発分野" 221、及び"現行プロジェ
クト"223である。クラスEngineer220のメンバと
して生成されるオブジェクトは、オブジェクト・インス
タンス変数、すなわちオブジェクト・クラス、クラス・
レベル、インスタンス・サイズ、従業員番号、給与、開
発分野、及び現行プロジェクトに関連する値を有する。
John235及びJoe 240は、クラスEngineer220の
メンバであるオブジェクト例である。
Rootのサブクラスとして定義される。クラスPersonnel_
II255は、クラスPersonnel 205のより新たなバー
ジョンであり、それ自身、クラスPersonnel 205とほ
とんど同じインスタンス変数定義を含む。例外はインス
タンス変数定義"パテント番号"261である。クラスPe
rsonnel205の新たなバージョンとして、クラスPerso
nnel_II255はPersonnel205と同じサブクラスを含
む。サブクラスEngineer_II225は示されているが、
サブクラスLawyer_II及びサブクラスManager_II は示さ
れていない。上述のように、クラスEngineer_II は、そ
のスーパー・クラスのオブジェクト・インスタンス変数
定義(すなわち"オブジェクト名"202、 "オブジェク
ト・クラス" 204、"クラス・レベル"270、"イン
スタンス・サイズ"272、 "従業員番号" 257、"給
与"259、及び"パテント番号"261)を継承する。
クラスEngineer_II 225もまた、固有のクラス定義部
分であるインスタンス変数定義(すなわち"開発分野"2
63、及び"現行プロジェクト"265)を含む。Sam2
45及びSteve250は、クラスEngineer_II 225の
メンバであるオブジェクト例である。NOM概念である
バージョンについては、図13乃至図15に関連して詳
述される。
を理解するために、NOMインタフェース・テーブルを
理解することは重要であり、その詳細を図3で説明す
る。インタフェース・テーブルにおける各入力は、層内
の特定のクラスに関する情報を含む。更に詳細には、各
入力はメソッド・プログラムに関するロケーション情
報、及び特定のクラスのインスタンス・データを含む。
メソッド・プログラムがオブジェクトに経路指定される
と、これらはインタフェース・テーブルに記憶されるロ
ケーション情報を使用することにより、メソッド・プロ
グラム及びインスタンス・データへのアクセスを獲得す
る。
は、インタフェース・テーブル入力280、285及び
290を含む。各インタフェース入力は組(tuple )か
ら構成される。組はメソッド・テーブル・ポインタ(例
えばメソッド・テーブル・ポインタ282)、クラス・
シグニチャ(例えばクラス・シグニチャ283)、デー
タ・オフセット(例えばデータ・オフセット284)を
含む。メソッド・テーブル・ポインタは、クライアント
・プログラムが特定のメソッド・テーブル及び最終的に
はメソッド・プログラムをアクセスするために使用す
る。クラス・シグニチャは、クライアント・プログラム
が、正しいオブジェクト・クラスに経路指定されること
を保証するために使用される。これらのフィールドは、
図11及び図12に関連してより詳細に説明される。デ
ータ・オフセットは、メソッド・プログラムが、オブジ
ェクト・インスタンスに記憶されるオブジェクト・イン
スタンス変数へのアクセスを獲得するために使用する。
このフィールドは図13乃至図15に関連して詳しく述
べられる。
定義ユーティリティ117の内部作業の流れ図であり、
図6はシステム・オブジェクト・マネージャ115の内
部作業の流れ図である。図7から図10は、図2の木構
造の一部が、実際にデータ記憶装置140内に存在する
様子を示す。図4乃至図6は、図2で示されるような階
層構造が実際に生成される様子を説明するために、図7
乃至図10と関連して使用される。
は他のユーザに輸送される時、クラス・オブジェクトRo
ot(図7の400)に対応する複合データ構造、及びRo
otクラス(図7の構造405及び410)は、既にデー
タ記憶装置140にロードされている。当業者には理解
されるように、これらの複合データ構造が最初に生成さ
れて、データ記憶装置140に記憶されるためには、多
数の方法が存在する。同様にこれらの構造の生成及び記
憶は、必ずしも製造工場において実施される必要はな
い。顧客或いはユーザが、クラス定義ユーティリティ1
17及びシステム・オブジェクト・マネージャ115を
独立に呼出すことにより、これらの複合データ構造を生
成及び記憶することも可能である。しかしながら、説明
の都合上、クラス・オブジェクトRoot400、インタフ
ェース・テーブル405(すなわちクラスRootに対応す
るインタフェース・テーブル)、及びメソッド・テーブ
ル410(すなわちクラスRootに対応するメソッド・テ
ーブル)が、製造工場において、データ記憶装置140
に予めロードされるものと仮定する。
クラスPersonnel 205を定義しようと望むと、ユーザ
はクライアント・プログラム(すなわちクライアント・
プログラム120の1つ)を開始し、クライアント・プ
ログラム自身はクラス・オブジェクトRoot400を呼出
す(すなわち"経路指定される")。クライアント・プロ
グラムはそれにより、インタフェース・テーブル405
及びメソッド・テーブル410へのアクセスを獲得す
る。このアクセスが実際にどのように実行されるかに関
しては、図11及び図12に関連して説明される。メソ
ッド・テーブル410へのアクセスが実行されるとクラ
イアント・プログラムはdefine_subclass_p 412を使
用して、クラス定義ユーティリティ117を呼出す。こ
こでクラス定義ユーティリティ117は、実際にはメソ
ッド・プログラム130とそう違わないメソッド・プロ
グラムである。クラス定義ユーティリティ117は、ク
ラス定義において演じる役割に起因して、多数の処理を
引受ける。流れ図(図4乃至図5)は、クラス定義ユー
ティリティ117により実行される第1のステップが、
適切なクラス・オブジェクトの生成であることを示す
(ブロック302)。この場合、生成されるクラス・オ
ブジェクトはクラス・オブジェクトPersonnel 415
(図8に示される)である。ユーザは次にブロック30
4で、クラス名を入力するように求められ、ブロック3
06では、このクラスに対応するインスタンス変数定義
(図8の419で示される)を入力するように求められ
る。そしてブロック308では、メソッド・プログラム
・アドレスを入力するように求められる。
ブロック310でユーザに対し、定義されるクラスがサ
ブクラスであるかを尋ねる。この例では、クラスPerson
nelはクラスRootのサブクラスであるので、この問いは
肯定して返答される。ユーザは次にブロック316で、
定義されるクラスのスーパー・クラスの名前及びレベル
を催促される。名前及びレベルは、両者共に特定のスー
パー・クラスが識別されることを保証するように、指定
されなければならない。この例では、入力されるスーパ
ー・クラスはRootであり、入力されるレベルは0であ
る。クラス定義ユーティリティ117は、次にブロック
312で、クラスPersonnel (ブロック304)に対応
するインタフェース・テーブル及びメソッド・テーブル
を生成し、クラスRootからメソッド・テーブルをコピー
する。これらの構造は、図8にそれぞれ、インタフェー
ス・テーブル420、メソッド・テーブル425及び4
80として示されている。新たなクラス(すなわちPers
onnel )は、次にクラス・レベルが割当てられる(この
場合1)。ブロック324において、クラス定義ユーテ
ィリティ117は、ブロック306でユーザにより入力
されたインスタンス変数定義のオフセットを計算する。
ブロック328で、クラス定義ユーティリティ117
は、クラス・オブジェクトRoot(ブロック400)から
インスタンス変数をコピーし、それらをPersonnel クラ
ス・オブジェクト(ブロック415)に配置する。これ
が図8の418に示される。
415をインタフェース・テーブル420にリンクする
(ブロック326)。これはinterface_tbl_p 417
を、インタフェース・テーブル420の開始アドレスに
等しくセットすることにより達成される。次にブロック
330で、クラス定義ユーティリティ117はクラス・
インスタンス変数のオフセットを、インタフェース・テ
ーブル420内の適切なインタフェース・テーブル入力
に書込む。Personnel クラス・インスタンス変数定義に
対応するオフセットは、インタフェース・テーブル入力
423のprs_instance_data_o フィールドに書込まれ、
スーパー・クラス・インスタンス変数定義に対応するオ
フセットは、インタフェース・テーブル入力421のrt
_insutance_data_oフィールドに書込まれる。最後にメ
ソッド・テーブル及びメソッド・プログラム・アドレス
が、インタフェース・テーブル及びメソッド・テーブル
に、それぞれ書込まれる(ブロック332)。メソッド
・テーブル425のアドレスは、インタフェース・テー
ブル入力423のper_meth_tbl_pフィールドに書込ま
れ、メソッド・テーブル480のアドレスは、インタフ
ェース・テーブル入力421に書込まれる(ブロック3
32)。ブロック336では、メソッド・プログラムの
アドレスが、次にメソッド・テーブル425に書込まれ
る。例えば、"給与更新"と称されるメソッド・プログラ
ムのアドレスは、"update_salary_p"フィールド427
に書込まれる。
と、次のサブクラスEngineerが定義される様子を示す。
Engineerサブクラスを定義するために実行されるステッ
プは、上述の説明と同一であるため、それらの詳細につ
いてはここでは触れない。しかしながら、ここで本明細
書において使用されるいくつかの用語について理解する
ことが重要である。上述のように、NOM環境における
各クラスは、クラス・オブジェクトを有する。特定のク
ラスに対応して定義されたインタフェース・テーブル及
びメソッド・テーブルは、しばしば、それぞれ "クラス
・インタフェース・テーブル" 及び"クラス・メソッド
・テーブル"と称される。サブジェクト・クラスと同じ
でないクラスのクラス・オブジェクトが参照されると
き、これらはサブジェクト・クラスのスーパー・クラス
を表すか、或いはサブジェクト・クラスのサブクラスを
表すかに依存して、 "スーパー・クラス・クラス・オブ
ジェクト" 或いは"サブクラス・クラス・オブジェクト"
と称される。同様にスーパー・クラス・クラス・メソッ
ド、並びにインタフェース・テーブル、及びサブクラス
・クラス・メソッド、並びにインタフェース・テーブル
が参照される。これらは前述同様、サブジェクト・クラ
スのスーパー・クラスを表すか、或いはサブジェクト・
クラスのサブクラスを表すメソッド或いはインタフェー
ス・テーブルを参照する。
ップでは、特定のクラスのメンバであるオブジェクト・
インスタンスを生成する。サブクラス定義ユーティリテ
ィ117の呼出しの場合同様、クラスEngineerのオブジ
ェクト・インスタンスを生成しようと望むコンピュータ
・システム100のユーザは、クラス・オブジェクトEn
gineer430に経路指定されるクライアント・プログラ
ム(すなわちクライアント・プログラム120)を開始
する。クライアント・プログラムはインタフェース・テ
ーブル435及びメソッド・テーブル475(すなわち
クラスRootからコピーされるメソッド・テーブル)への
アクセスを獲得する。このアクセスが実行される様子に
ついては、図11及び図12に関連して説明される。メ
ソッド・テーブル475へのアクセスが実行されると、
クライアント・プログラムはcreate_new_object_p 44
2を通じて、システム・オブジェクト・マネージャ11
5を呼出す。
ジャ115の内部作業の流れ図である。システム・オブ
ジェクト・マネージャ115は、ブロック340で最初
にオブジェクトを生成する。この例では、オブジェクト
・インスタンス445(John)が生成される(図10に
示される)。ユーザは次にブロック344で、オブジェ
クト名を入力するように促され、引き続きブロック34
6ではクラス及びレベルを、更にブロック348ではオ
ブジェクト・インスタンス変数の値を入力するように促
される。この値は図10の447に示される。システム
・オブジェクト・マネージャ115は、次にブロック3
50で、この情報をオブジェクト445に書込む。オブ
ジェクト445は、次にインタフェース・テーブル45
0(すなわちクラスEngineerに対応するインタフェース
・テーブル)にリンクされる。エンジニア"John"に関す
るデータを処理しようと望むクライアント・プログラム
は、次に、オブジェクト・インスタンスJohnを呼出す。
P環境の基本となる主な複合データ構造を示す。オブジ
ェクト・インスタンス500及び510は、エンジニア
John及びJoe に対応するオブジェクト・インスタンス
が、C++環境において存在する様子を表している。仮想
ファンクション・テーブル505は、オブジェクト・イ
ンスタンスJohn及びJoeがそのメンバとして含まれるク
ラス(すなわちEngineer)、及びEngineerがサブクラス
として含まれる全てのスーパー・クラス(すなわちスー
パー・クラスPersonnel 及びRoot)のメソッド・プログ
ラムを指示するメソッド・ポインタを含む。
は、特定のクラスにメソッド・プログラム或いはデータ
を追加する必要が生ずる場合、極めて硬直的である。特
定のクラスのオブジェクトのデータが変更を要すると
き、或いは特定のクラスのオブジェクトのメソッドが追
加されるとき、変更されるクラスのメンバである全ての
オブジェクト、及び変更されるクラスのサブクラスのメ
ンバである全てのオブジェクトが、再生されなければな
らず、それらのメソッド・プログラムが再コンパイルさ
れなければならない。更に、それらのオブジェクトの全
てのクライアントについても、再コンパイルされなけれ
ばならない。この硬直性は、C++データ構造の設計に起
因する。
加:C++環境において、クライアント・プログラムがオ
ブジェクトに経路指定されるとき、メソッド・プログラ
ムを表す仮想ファンクション・テーブル内の入力のオフ
セットが、呼出しステートメントの一部として、呼出さ
れる。図18に示されるように、全階層のメソッド・プ
ログラムに対するポインタは、仮想ファンクション・テ
ーブル505にスタックされる。メソッド・プログラム
を特定のクラスに追加する必要が生じるとき、特定のク
ラスのサブクラスのメソッド・プログラムに対するメソ
ッド・プログラム・ポインタは、全て構造内でシフト・
ダウンされる(すなわち、それらのオフセットが変化す
る)。例えば、メソッド・プログラムをクラスPersonne
l に追加する場合、メソッド・プログラムのアドレスが
507に挿入される。新たなメソッド・プログラムに対
するポインタが、次に以前に"開発分野更新"メソッド・
プログラムに対するポインタ(すなわちupdate_dev_are
a_p 506)により占有されていたオフセットに配置さ
れる。"開発分野更新"メソッド・プログラムに対するポ
インタは、以前に"現行プロジェクト更新" に対するポ
インタにより占有されていたロケーションに、シフト・
ダウンされる。
オブジェクトに経路指定される全てのクライアント・プ
ログラムの再コンパイル(すなわち新たなメソッドの存
在を認識するため)、及び旧メソッド・プログラムの新
たなオフセットを認識するために、クラスPersonnel
(すなわちEngineer)のサブクラスに対応する全てのク
ライアント・プログラムの再コンパイルを必要とする。
義の追加:C++ OOP環境は、特定のクラスへの新た
なインスタンス変数定義の追加の必要に際しても類似の
問題を有する。例えば、新たなインスタンス変数定義
(例えば"パテント数")がクラスPersonnel に対応して
要求される場合、それはオブジェクト・インスタンスJo
hnの502に挿入される必要がある。これはEngineerイ
ンスタンス・データをアクセスする全てのメソッド・プ
ログラムの再コンパイルを要求する。なぜなら、こうし
た再コンパイルを実行しないと、それらのメソッド・プ
ログラムが、Engineerクラス・インスタンス・データの
第1のフィールド(すなわち開発分野フィールド)をア
クセスするとき、Personnel クラス・インスタンス・デ
ータの最後のフィールド(すなわち新たなパテント数フ
ィールド)をアクセスすることになるからである。更
に、これらのメソッドの再コンパイルは、まだ変更され
ていないクラスEngineerのオブジェクト(例えばオブジ
ェクト・インスタンスJoe )に対するオペレーションを
無意味なものとするため、クラスEngineerの全てのオブ
ジェクト、及びクラスEngineerのサブクラスのメンバで
ある全てのオブジェクトもまた、再生されなければなら
ない。
は、呼出したいオブジェクトのオブジェクト長を知る必
要がある。これはC++オブジェクトがランタイムにおい
て生成されることによる。従って、新たなインスタンス
変数"パテント数"の追加が、クラスEngineer及びEngine
erのサブクラスのオブジェクト・インスタンスのサイズ
を変更したとき、オブジェクト・インスタンスを生成す
るクライアント・プログラムもまた、再コンパイルされ
なければならない。
ェクトのインスタンス・データに対する特定の変更によ
り、どのオブジェクト及びクライアント・プログラムが
影響されたかを判断するよりも、全てのコードを単に再
コンパイルすることの方が、容易である。しかしなが
ら、このタイプの再コンパイルは、それを実行するため
にまる一日を費やす可能性がある。
ルトーク OOP環境において基本となる主複合データ
構造を示す。オブジェクト・インスタンス600及び6
10は、スモールトーク環境において、エンジニアJohn
及びJoe に対応するオブジェクト・インスタンスが存在
する様子を表す。C++環境の場合と異なり、スモールト
ーク OOP環境では、階層内に各クラスに対応するビ
ヘイビュア・テーブル(behavior table)を含む。これ
らは図19において、クラスEngineerに対応するビヘイ
ビュア・テーブル605、スーパー・クラスPersonnel
に対応するビヘイビュア・テーブル615、スーパー・
クラスRootに対応するビヘイビュア・テーブル620と
して示されている。
ログラムの追加:この設計の違いは、C++ OOP環境
のユーザの場合に比較して、スモールトーク OOP環
境のユーザに利点を提供する。スモールトーク OOP
環境のユーザは、特定のクラスにメソッド・プログラム
を追加するために、全コード・ベースを再コンパイルす
る必要がない。C++呼出しステートメントとは異なり、
スモールトーク呼出しステートメントは、単に、1つの
ビヘイビュア・テーブル内のあるメソッド・プログラム
・ポインタを識別するために使用される呼出しシグニチ
ャを提供する。説明の都合上、再度、ユーザはクラスPe
rsonnel にメソッド・プログラムを追加することを望む
ものとする。メソッド・プログラムに対するポインタ、
及びメソッド・プログラムに対するシグニチャが、スー
パー・クラスPersonnel に対応するビヘイビュア・テー
ブル(すなわちビヘイビュア・テーブル615)の61
7及び619にそれぞれ追加される。C++環境の場合と
異なり、ここではシフトは発生しない。図示のように、
クラスEngineerに対応するメソッド・プログラムに対す
るポインタ(すなわちupdate_dev_area_p 607及びup
date_curr_prj_p 609)は変位されない。従って、ク
ラスEngineerのオブジェクトを使用するクライアント・
プログラムの再コンパイルは要求されない。新たなメソ
ッド・プログラムへのアクセスを獲得する必要のあるク
ライアント・プログラムだけが、再コンパイルを要す
る。
しかしながら、この利点に関連するランタイム・コスト
は重要である。図20は、クライアント・プログラムに
呼出されるメソッド・プログラムが、実際にロードされ
る様子を示す。ここでクライアント・プログラムが、エ
ンジニアJohnの給与を更新することを望むものとする。
クライアント・プログラムは、そのコードの一部とし
て、呼出しステートメント("John.update_salary" 6
40)を有する。これによりクライアント・プログラム
は、オブジェクトJohnに経路指定される。クライアント
・プログラムのコードは、次にブロック645で、オブ
ジェクト・インスタンスJohn(図19のオブジェクト・
インスタンス600)をロードし、ブロック650でオ
ブジェクトJohnからビヘイビュア・テーブル・ポインタ
(図19のbehavior_tbl_p602)をロードする。次に
ブロック655で、ビヘイビュア・テーブル・ポインタ
がNil であるかを判断する。第1のパスでは、ポインタ
はNil でないため、クライアント・プログラムは、呼出
しシグニチャに一致するメソッド・シグニチャを求め
て、ポインタにより指示されるビヘイビュア・テーブル
(すなわちクラスEngineerに対応するビヘイビュア・テ
ーブル)を探索する。メソッド・プログラム"給与更新"
に対するポインタは、ビヘイビュア・テーブル605に
含まれていないので、クライアント・プログラムはブロ
ック665で、現行ビヘイビュア・テーブルに含まれる
ビヘイビュア・テーブル・ポインタ(すなわちbehavior
_tbl_p611)をロードし、再度ブロック655で、そ
れがNilであるかを判断する。ビヘイビュア・テーブル
・ポインタが再びNilでないと、クライアント・プログ
ラムはブロック670で、呼出しシグニチャに一致する
メソッド・シグニチャを求めて、次のビヘイビュア・テ
ーブル(すなわちビヘイビュア・テーブル615)を探
索する。一致が最終的にブロック675で見い出される
と、ブロック680でメソッド・プログラムが呼出され
る。当業者においては周知のように、これらのテーブル
・アクセス及び探索は、極めてランタイム集中型であ
る。また、レベルの数が増えるほど、高レベルのメソッ
ド・プログラムを呼出すコストが増加することも重要な
点である。更に、メソッド・プログラムの呼出しに関連
するオーバーヘッドがレベルにより変化するため、全体
的システム性能を予測することが困難である。
タンス変数定義の追加:スモールトーク環境は、メソッ
ド・プログラムが相当量の再コンパイルを要せずに、ク
ラスに追加できる点でC++ OOP環境に勝るが、スモ
ールトーク OOP環境は、C++のインスタンス・デー
タ追加問題を共有する。図21はこの問題を説明するた
めに用いられる。上述のように、ユーザがオブジェクト
Steve がメンバとして含まれるクラス(すなわちEngine
er)に、インスタンス変数定義 "パテント数"を追加す
ることを望むと、これはオブジェクト・インスタンスSt
eveの702に挿入される必要がある。このことは、Eng
ineerインスタンス・データをアクセスする全てのメソ
ッド・プログラムの再コンパイルを要求する。なぜな
ら、こうした再コンパイルを実行しない場合、Engineer
クラス・インスタンス・データの第1フィールド(すな
わち開発分野フィールド)をアクセスしようとすると、
それらのメソッドは、Personnel クラス・インスタンス
・データの最後のフィールド(すなわち新たなパテント
数フィールド)をアクセスしてしまうからである。更に
これらのメソッドの再コンパイルは、まだ変更されてい
ないクラスEngineerのオブジェクト(例えばオブジェク
ト・インスタンスJoe 705)に対するオペレーション
を無効にするので、クラスEngineerの全てのオブジェク
ト、及びクラスEngineerのサブクラスのメンバである全
てのオブジェクトについても、再生されなければならな
い。
ブジェクトのインスタンス・データに対する特定の変更
により影響を受けるオブジェクト及びクライアント・プ
ログラムを判断するよりも、全てのコード・ベースを再
コンパイルし、全てのオブジェクトを再生することの方
がより単純である。しかしながら、既に述べたように、
このタイプの再コンパイルには多くの時間を要する。
明の主複合データ構造を示す。オブジェクト・インスタ
ンス800及び810は、エンジニアJohn及びJoe に対
応するオブジェクト・インスタンスが、NOM環境にお
いて存在する様子を表す。C++及びスモールトーク環境
の場合と異なり、NOM OOP環境は、クラスEngine
erに対するインタフェース・テーブル(すなわちインタ
フェース・テーブル805)、及び階層内の各クラスに
対するメソッド・テーブルを含む。これらのメソッド・
テーブルは、図11では、クラスEngineerに対応するメ
ソッド・テーブル825、スーパー・クラスPersonnel
に対応するメソッド・テーブル820、及びスーパー・
クラスRootに対応するメソッド・テーブル815として
示される。
ーザに対し、C++及びスモールトーク OOP環境のユ
ーザによって実現されなかった利点を提供する。スモー
ルトーク OOP環境のユーザの場合同様、NOM環境
のユーザは、メソッド・プログラムを特定のクラスに追
加するために、全てのコード・ベースを再コンパイルす
る必要はない。しかしながら、NOM環境は、スモール
トーク環境の場合よりも、より効率的なメソッド解析を
可能とする。更に、NOM環境は、C++及びスモールト
ーク環境の場合の、インスタンス・データ定義の欠点を
共有しない。
追加:NOMクラスへのメソッド・プログラムの追加を
説明するために、上述のように、ユーザがクラスPerson
nel に対して、メソッド・プログラムを追加することを
望むものと仮定する。メソッド・プログラムに対するポ
インタが、クラスPersonnel に対応するメソッド・プロ
グラム(すなわちメソッド・テーブル820)の822
に追加される。スモールトーク環境の場合同様、C++の
場合とは異なりその際シフトは発生せず、クラスEngine
erに対応するメソッド・プログラムに対するポインタ
(すなわちupdate_dev_area_p827、及びupdate_curr
_prj_p829)が変位される。従って、クラスEngineer
のオブジェクトを使用するクライアント・プログラム
は、再コンパイルを必要としない。新たなメソッド・プ
ログラムへのアクセスを獲得する必要のあるクライアン
ト・プログラムだけが、再コンパイルを要することにな
る。
図12は、クライアント・プログラムによりNOM環境
のメソッド・プログラムが呼出されるときに、それが探
索される様子を示す。ここでも同じ例を用いて、クライ
アント・プログラムがエンジニアJohnの給与を更新する
ことを望むものとする。クライアント・プログラムは、
そのコードの一部として、呼出しステートメント("Joh
n.update_salary" 830)を有する。これによりクラ
イアント・プログラムは、オブジェクトJohnに経路指定
される。コンパイル時にNOM呼出しステートメント
は、オブジェクトID、クラス・レベル、クラス・シグ
ニチャ、及びメソッド・オフセットを含む。呼出しステ
ートメント実行後、クライアント・プログラム・コード
は、ブロック835で、オブジェクト・インスタンスJo
hn(図11のオブジェクト・インスタンス800)をロ
ードする。次にブロック840で、オブジェクトJohnか
らインタフェース・テーブル・ポインタ(図11のinte
rface_tbl_p 802)をロードし、ブロック845でク
ラス・レベルを使用して、正しいインタフェース・テー
ブル入力(すなわちクラス・レベル1により指定される
インタフェース・テーブル入力807)をアクセスす
る。その後、ブロック850で、呼出しシグニチャをイ
ンタフェース・テーブル入力807内に記憶されるクラ
ス・シグニチャ(すなわちclass_signature 809)と
比較する。実施例の呼出しシグニチャ及びクラス・シグ
ニチャは、本コンピュータ・システムの識別番号、クラ
ス・レベル、及びタイム・スタンプを用いて構成される
が、特定の識別子を生成するどのような手段でも使用可
能である。この例では、クライアント・プログラムは、
クラスPersonnel に関連する"給与更新"メソッド・プロ
グラムへのアクセスを獲得しようとするため、ブロック
855でシグニチャは一致する。
グラムはメソッド・テーブル820(すなわちクラスPe
rsonnel に対応するメソッド・テーブル)へのアクセス
を獲得するために、Per_meth_tbl_p808を使用し、ブ
ロック870では、適切なメソッド・プログラムをアク
セスするためにメソッド・オフセットを使用し、その後
ブロック875で、"給与更新"メソッド・プログラムを
呼出す。NOMメソッド解析もまた、クライアント・プ
ログラムがメソッド・プログラムに、オブジェクトI
D、インタフェース・テーブルへのポインタ、及びクラ
ス・レベルを渡すように要求する。この情報の利用につ
いては、図13乃至図15に関連して説明される。
プログラムのアクセスは、スモールトークの場合よりも
極めて効率的であると言える。NOM環境のメソッド・
プログラムのアクセスは、固定数(すなわち2)のテー
ブル・ルックアップ、及び1回の呼出しを要求するが、
スモールトークのメソッド・プログラムのアクセスで
は、不経済な一連のテーブル・アクセス及び探索を含
む。確かに、スモールトークのメソッド経路の各探索
は、ハッシュ・ベースの探索により高速化されるが、ハ
ッシュ・ファンクションは、少なくとも全てのNOMメ
ソッド経路の数の命令を必要とする。もちろん、第1の
ビヘイビュア・テーブルに見い出されないメソッド・プ
ログラム・ポインタに対応するメソッド解析には、より
多くの時間を要する。
定義の追加:上述のように、NOM OOP環境は、新
たなインスタンス変数定義が要求されるときに、大量の
再コンパイルを必要としない点で、C++及びスモールト
ークの場合よりも優れている。NOM複合データ構造
は、オブジェクトの異なるバージョンを共存させ、また
オブジェクトの旧バージョンから新バージョンへの変更
を可能とすることにより、こうした利点を提供する。
雇うXYZ社が、最近、発明表彰プログラムを導入した
ことにより、各従業員により作成されるパテント数を追
跡する必要に迫られ、そのためにXYZ社は、サブクラ
スPersonnel_IIと称するサブクラスPersonnelの新たな
バージョンを定義するものと仮定する(図2のクラスPe
rsonnel_IIで示される)。クラスPersonnelの新たなバ
ージョン(すなわちPersonnel_II)の定義はまた、クラ
スPersonnel の全てのサブクラスの新たなバージョン
(すなわちEngineer_II、Lawyer_II、及びManager_II)
を生成する。エンジニアSam はこの会社に入社したばか
りであり、既に2つのパテントを有する。従って、XY
Z社は、彼に対する新たなタイプのオブジェクト・イン
スタンスを容易に生成する(すなわちオブジェクト・イ
ンスタンスSamがクラスEngineer_IIのメンバとして生成
される)。エンジニアJohn及びJoe はまだパテントを作
成していないため、XYZ社は、彼らを表現するオブジ
ェクト・インスタンスを、旧バージョン(Engineer)か
ら新バージョン(Engineer_II )に、即時変更する必要
はない。従って、XYZ社は、オブジェクト・インスタ
ンスJohn及びJoe を、"バック・レベル"として残すこと
を選択する。
Engineerクラスの2つのバージョン(すなわちEngineer
及びEngineer_II )に対応するオブジェクト・インスタ
ンスが、NOM環境において共存する様子を示す。これ
に関する理解を深めるために、図2がしばしば参照され
る。オブジェクト・インスタンスJohn900はクラスEn
gineerのメンバであり、オブジェクト・インスタンスSa
m 910は、クラスEngineerの新たなバージョン(すな
わちEngineer_II )のメンバである。オブジェクトのこ
れらのバージョンを共存させるために、各バージョンは
その固有のインタフェース・テーブル(図13及び図1
4におけるインタフェース・テーブル905及び91
5)を有する。これらのバージョンが生成される方法
が、図15に詳細に示される。これらの2つのインタフ
ェース・テーブルを見比べると、2つのインタフェース
・テーブルのバージョン間で異なるフィールドは、PerI
I_meth_tbl_pフィールド917とEgII_instance_data_o
フィールド919だけであることが分かる。PerII_meth
_tbl_p917は、クラスEngineerのそれとは異なり、メ
ソッド・プログラムがクラスPersonnel_IIに対応する新
たなオブジェクト・インスタンス変数(すなわち"パテ
ント数"912)を使用することを許可する。EgII_inst
ance_data_o919は、インスタンス変数912の追加
により、クラスEngineer_II に関連するオブジェクト・
インスタンス・データが変位されるために、クラスEngi
neerの場合とは異なる。
いて、例を用いて示すことにする。上述のように、エン
ジニアJohn及びSam に対応するオブジェクト・インスタ
ンスは、異なるバージョンである。これはSam は2つの
パテントを有しているがJohnはまだパテントを作成して
いないことに起因する。それにもかかわらず、この相違
はクライアント、或いは他のインスタンス変数を扱うメ
ソッド・プログラムには影響を与えない。この例は、"
現行プロジェクト"フィールド903及び914の値の
変更を要する。"パテント数"フィールド912の追加
は、 "現行プロジェクト" フィールド903及び914
だけを扱うメソッド・プログラムの再コンパイルを引起
こすべきではない。C++環境及びスモールトーク環境の
場合とは異なり、こうした再コンパイルは、NOM環境
においては不要となる。
完了して、エンジニアSam とJohnが別のプロジェクトに
移行するものと仮定する。NOMパテントはまだ認可さ
れていないため、Johnはまだパテントを作成しておら
ず、従って、彼のオブジェクト・インスタンスのバージ
ョンをEngineerからEngineer_II に変更する必要はな
い。それにもかかわらず、エンジニアJohnとSam が異な
るプロジェクトに移行することを反映して、"現行プロ
ジェクト"フィールド903及び"現行プロジェクト"フ
ィールド914の値を変更することが必要となる。従っ
て、新たなプロジェクトへの移行を反映させるために、
オブジェクト・インスタンスを変更する責任を負うユー
ザは、その変更を実行するために、クライアント・プロ
グラムを開始する。クライアント・プログラムは"現行
プロジェクト"フィールド903を更新するために、最
初にオブジェクトJohnに経路指定される。クライアント
・プログラムは最終的には、メソッド・テーブル920
内のupdate_curr_prj_p ポインタ927を介して、"現
行プロジェクト更新"メソッド・プログラムを呼出す。
ここで各バージョンが、クラスEngineerに対応するメソ
ッド・テーブル(すなわちメソッド・テーブル920及
び925)のコピーを有し、そこに記憶されるポインタ
が、同一のメソッド・プログラム(すなわち同じ実行可
能コード)を指示する点に注目することが重要である。
1及び図12に関連して説明されており、ここでは繰返
さないが、前述の説明で述べたように、NOMメソッド
・プログラムは、インタフェース・テーブルに対するポ
インタ(すなわちinterface_tbl_p 901)、呼出され
るクラス・レベル、及びオブジェクトID(すなわちオ
ブジェクトID904)を渡される。この場合、"現行
プロジェクト更新"メソッド・プログラムは、Eg_instan
ce_data_oフィールド907に記憶されるオフセットへ
のアクセスを獲得するために、この情報を使用する。こ
の情報はオブジェクトID904と一緒に使用されて、
メソッド・プログラムが現行プロジェクト・フィールド
903に対する適切な変更を実施することを許可する。
観点から、オブジェクトSam に対する同じ変更(すなわ
ち現行プロジェクト・フィールド914の更新)は、同
様にして処理される。"現行プロジェクト更新"メソッド
・プログラムが再度呼出され、適切なインタフェース・
テーブル・ポインタ、クラス・レベル、オブジェクトI
D、及びインスタンス・データ・オフセットを介し
て、"現行プロジェクト"フィールド(この場合、現行プ
ロジェクト・フィールド914)に対するアクセスを再
び獲得する。これらのフィールドは、オブジェクト90
0の同一のフィールドを更新するために使用された値と
は異なる値を有するが、こうした事実はメソッド・プロ
グラムにとっては重要でない。当然、こうした相違は予
想される。このように、"バージョン化"を通じて、イン
スタンス・データ定義"パテント数"の追加が、オブジェ
クト・インスタンス、クライアント・オブジェクト、及
び変更により直接的に影響を受けないメソッド・プログ
ラムの再コンパイルを要せずに、特定のオブジェクト・
インスタンスに対して実施される。
異なるバージョンを生成するために、NOM環境におい
て使用される方法を示す。新たなバージョンを生成しよ
うと望むユーザは、ブロック950でバージョン・マネ
ージャ110を呼出す。バージョン・マネージャ110
は、ブロック952で、ユーザに"バージョン化"される
クラスを催促することにより、応答する。ユーザは次に
ブロック954で、新たなインスタンス変数定義の入力
を催促される。バージョン・マネージャ110は、次に
ブロック956で、以前のバージョンからクラス・オブ
ジェクトをコピーし、ブロック958で新たなクラス・
オブジェクトを生成し、新たなインスタンス変数定義の
ために調整する。バージョン・マネージャ110は、次
にブロック960で、以前のバージョンからインタフェ
ース・テーブルをコピーし、ブロック962で、クラス
・オブジェクトをインタフェース・テーブルに、またイ
ンタフェース・テーブルを適切なメソッド・テーブルに
リンクするように、ポインタを調整する。次にバージョ
ン・マネージャ110は、ブロック970で "バージョ
ン化" されるサブクラスが存在するかを判断する。存在
する場合には、バージョン・マネージャは、ブロック9
80で1レベル下がり、ブロック956で処理を継続す
る。ブロック970で"バージョン化"されるサブクラス
が存在せず、ブロック976でユーザが別のクラスを"
バージョン化"する意志がない場合、処理はブロック9
78で終了する。
ジェクト・インスタンスのバージョンを変更するため
に、NOMの変形が使用される。例えば、オブジェクト
・インスタンスSteveについて考えてみよう。XYZ社
が、特許及び登録商標オフィス(the Patentand Tradem
ark Office)から、エンジニアSteve が発明者である特
許出願が認可されたことを伝えられたとする。XYZ社
はこの時、新たなパテント情報が追加されるように、エ
ンジニアSteveがクラスEngineer_IIであることを表すオ
ブジェクト・インスタンスを更新しなければならない。
図16及び図17は、NOMの変形が発生する様子を示
す。
ログラムは、メソッド・テーブル1015内のmetamorp
h_p ポインタ(図16で示される)を介して、変形メソ
ッド・プログラムを呼出す。このメソッド・プログラム
が呼出される方法は、図11及び図12で説明された方
法と同じである。図17は、変形メソッド・プログラム
の流れ図である。変形メソッド・プログラムは最初に、
オブジェクト・インスタンスSteve のコピーを生成する
(ブロック1035)。このコピーが図16に、オブジ
ェクト・コピー1020として示される。変形メソッド
・プログラムは、次にユーザに対し、クラスEngineer_I
I に対応して定義される新たなインスタンス変数に関連
する値を催促し(ブロック1040)、新たなインスタ
ンス変数を収容するように、オブジェクト・インスタン
スを拡張する(ブロック1042)。次に変形メソッド
・プログラムは、クラスEngineerに対応するインタフェ
ース・テーブル(すなわち図16のインタフェース・テ
ーブル1005)の代わりに、クラスEngineer_II に対
応するインタフェース・テーブル(すなわち図16のイ
ンタフェース・テーブル1010)を指示するように、
interface_tbl_p (図16の1007で示される)を再
定義する。これが図16の1004で示される。変形メ
ソッド・プログラムは次に、オブジェクト・インスタン
スのコピー1020からオブジェクト・インスタンス1
000に、旧インスタンス変数値を逆にコピーし、新た
なオブジェクト・インスタンス変数値のための調整を行
う(ブロック1050)。これが完了すると、オブジェ
クト・インスタンスのコピーが消去される(ブロック1
055)。この時点で、オブジェクト・インスタンスSt
eveは、クラスEngineer_IIのオブジェクトとして、完全
に動作可能となる。
ージョン化"は、各バージョンに対応する新たなクラス
・オブジェクトの生成(図15のブロック956及び9
58で表される)を含まない。その代わりに、バージョ
ン・マネージャ110が標準の方法により呼出された後
(図15参照)、存在するクラス・オブジェクトが新た
なインスタンス変数定義を含むように変更される。この
時点で、処理は先の実施例で述べられたように継続され
る。インタフェース・テーブル・ポインタは、新たなバ
ージョンに対応する新たなインタフェース・テーブルを
指示するように調整されるため(図15のブロック96
2参照)、同一のクラスの複数のバージョンを表す複数
のクラス・オブジェクトを有さなくても、その結果は同
じである。サブクラスが"バージョン化"されると、サブ
クラス・クラス・オブジェクトは、全てのサブクラス
が"バージョン化"されるまで、同じ変更を経験する。
改良されたOOP環境が提供される。
である。
る仮のOOP構成を示す図である。
る。
る。
る。
る。
され、記憶装置に表される様子を示す、図8乃至図10
に関連して使用される図である。
され、記憶装置に表される様子を示す、図8乃至図10
に関連して使用される図である。
され、記憶装置に表される様子を示す、図8乃至図10
に関連して使用される図である。
成され、記憶装置に表される様子を示す、図8乃至図1
0に関連して使用される図である。
において表される様子を示す図である。
ッド経路指定手法を示す図である。
・インスタンス・データ定義の追加が扱われる様子を示
す図である。
・インスタンス・データ定義の追加が扱われる様子を示
す図である。
・インスタンス・データ定義の追加が扱われる様子を示
す図である。
別のバージョンに変換される様子を示す図である。
別のバージョンに変換される様子を示す図である。
P環境において表される様子を示す図である。
ーク OOP環境において表される様子を示す図であ
る。
れるメソッド経路指定手法を示す図である。
・インスタンス例に、オブジェクト・インスタンス・デ
ータ定義を追加する場合の影響を示す図である。
ーブル入力 282 メソッド・テーブル・ポインタ 283 クラス・シグニチャ 284 データ・オフセット 400 クラス・オブジェクトRoot 417、802、901、1007 interface_tbl_p 427 "update_salary_p"フィールド 430 クラス・オブジェクトEngineer 442 create_new_object_p 505 仮想ファンクション・テーブル 602、611 behavior_tbl_p 607、827 update_dev_area_p 609、829 update_curr_prj_p 605、615、620 ビヘイビュア・テーブル 640、830 "John.update_salary" 903、914 "現行プロジェクト"フィールド 904 オブジェクトID 907 Eg_instance_data_oフィールド 917 PerII_meth_tbl_pフィールド 919 EgII_instance_data_oフィールド 927 updete_curr_prj_pポインタ
Claims (14)
- 【請求項1】オブジェクト・インスタンスと、 各々がメソッド・プログラムに関するロケーション情報
を含む第1及び第2のメソッド・テーブルと、 上記第1のメソッド・テーブル及び上記第2のメソッド
・テーブルに関するロケーション情報を含み、上記オブ
ジェクト・インスタンスに含まれる接続手段を介して、
上記オブジェクト・インスタンスに接続されるインタフ
ェース・テーブルと、 を含む複合データ構造。 - 【請求項2】複合データ構造を生成及び記憶する方法で
あって、 オブジェクト・インスタンスを生成するステップと、 インタフェース・テーブルを生成するステップと、 第1及び第2のメソッド・テーブルを生成するステップ
と、 上記インタフェース・テーブルを、上記オブジェクト内
に配置される接続手段を介して、上記オブジェクト・イ
ンスタンスに接続するステップと、 上記メソッド・テーブルが、上記インタフェース・テー
ブルに含まれるロケーション情報を介して、上記インタ
フェース・テーブルに個々に接続されるように、上記第
1及び上記第2のメソッド・テーブルを上記インタフェ
ース・テーブル接続するステップと、 メソッド・プログラムが、上記第1及び上記第2のメソ
ッド・テーブルに含まれるロケーション情報を介して、
上記メソッド・テーブルに個々に接続されるように、上
記メソッド・プログラムを各上記メソッド・テーブルに
接続するステップと、 を含む方法。 - 【請求項3】クラス・オブジェクトと、 各々がメソッド・プログラムに関するロケーション情報
を含む第1及び第2のメソッド・テーブルと、 上記第1のメソッド・テーブル及び上記第2のメソッド
・テーブルに関するロケーション情報を含み、上記オブ
ジェクト・インスタンスに含まれる接続手段を介して、
上記オブジェクト・インスタンスに接続されるインタフ
ェース・テーブルと、 を含む複合データ構造。 - 【請求項4】複合データ構造を生成及び記憶する方法で
あって、 クラス・オブジェクトを生成するステップと、 インタフェース・テーブルを生成するステップと、 第1及び第2のメソッド・テーブルを生成するステップ
と、 上記インタフェース・テーブルを、上記クラス・オブジ
ェクト内に配置される接続手段を介して、上記クラス・
オブジェクトに接続するステップと、 上記メソッド・テーブルが上記インタフェース・テーブ
ルに含まれるロケーション情報を介して、上記インタフ
ェース・テーブルに個々に接続されるように、上記第1
及び上記第2のメソッド・テーブルを上記インタフェー
ス・テーブル接続するステップと、 メソッド・プログラムが上記第1及び上記第2のメソッ
ド・テーブルに含まれるロケーション情報を介して、上
記メソッド・テーブルに個々に接続されるように、上記
メソッド・プログラムを各上記メソッド・テーブルに接
続するステップと、 を含む方法。 - 【請求項5】特定のクラスに対応するメソッド・プログ
ラムを呼出す方法であって、 オブジェクトのアドレス、上記呼出しが指向される上記
クラスを表すレベル、及び呼出される上記メソッド・プ
ログラムを表すメソッド・プログラム・オフセットを含
む呼出しステートメントを介して、上記オブジェクトを
呼出すステップと、 上記オブジェクト・アドレスを介して、上記オブジェク
トをアクセスするステップと、 上記オブジェクトに記憶されるインタフェース・テーブ
ル・アドレスを介して、インタフェース・テーブルをア
クセスするステップと、 上記インタフェース・テーブルに記憶されて、上記レベ
ルを介して決定されるメソッド・テーブル・アドレスを
介して、メソッド・テーブルをアクセスするステップ
と、 上記メソッド・プログラム・アドレスを通じて、上記メ
ソッド・プログラムを呼出すステップと、 を含む方法。 - 【請求項6】オブジェクト指向のプログラミング環境を
生成する方法であって、 Rootクラス・インタフェース・テーブルに接続されるRo
otクラス・オブジェクト、Rootクラス・メソッド・テー
ブルに接続されるRootクラス・インタフェース・テーブ
ル、及び上記Rootクラス・メソッド・テーブルを含むRo
otクラスを生成するステップと、 上記Rootクラスに対して、Xレベルのサブクラスを生成
するステップとを含む方法であって、Xは1よりも大き
い正の整数であり、各上記Xレベルのサブクラスは、各
々が特定のクラス・オブジェクト、クラス・インタフェ
ース・テーブル、クラス・メソッド・テーブル、及びX
スーパー・クラス・クラス・メソッド・テーブルを含む
第1のクラス及び第2のクラスを含み、上記クラス・イ
ンタフェース・テーブルが上記クラス・オブジェクト及
び上記クラス・メソッド・テーブルに接続され、上記X
スーパー・クラス・クラス・メソッド・テーブルが、上
記クラス・インタフェース・テーブルに接続される方
法。 - 【請求項7】オブジェクト指向プログラミング環境を変
更する方法であって、 クラス・オブジェクトが新たなインスタンス変数定義を
含み、新たなクラスインタフェース・テーブルに接続さ
れるように、クラスの新たなバージョンを生成するため
に、上記クラスの上記クラス・オブジェクトを変更する
ステップと、 上記クラスのサブクラスを表すサブクラス・クラス・オ
ブジェクトが上記新たなインスタンス変数定義を含み、
新たなサブクラス・インタフェース・テーブルに接続さ
れるように、上記クラスの上記サブクラスの新たなバー
ジョンを生成するために、上記クラスの上記サブクラス
を表す全ての上記サブクラス・クラス・オブジェクトを
変更するステップとを含む方法。 - 【請求項8】オブジェクト指向プログラミング環境を変
更する方法であって、 旧クラス・オブジェクトにより表されるクラスの新たな
バージョンを表す新たなクラス・オブジェクトを生成す
るステップと、 上記クラスの上記新たなバージョンに対応する新たなク
ラス・インタフェース・テーブル及び新たなクラス・メ
ソッド・テーブルを生成するステップと、 上記クラスの各サブクラスに対応する新たなサブクラス
・クラス・オブジェクトを生成するステップと、 上記各サブクラスに対応する新たなサブクラス・クラス
・インタフェース・テーブルと、各上記サブクラスに対
応する新たなサブクラス・クラス・メソッド・テーブル
を生成するステップと、 各上記サブクラスのスーパー・クラスに対応するメソッ
ド・テーブルである全てのクラス・メソッド・テーブル
をコピーするステップとを含む方法。 - 【請求項9】複合データ構造を生成及び記憶する装置で
あって、 オブジェクト・インスタンスを生成する手段と、 インタフェース・テーブルを生成する手段と、 第1及び第2のメソッド・テーブルを生成する手段と、 上記インタフェース・テーブルを、上記オブジェクト内
に配置される接続手段を介して、上記オブジェクト・イ
ンスタンスに接続する手段と、 上記メソッド・テーブルが、上記インタフェース・テー
ブルに含まれるロケーション情報を介して、上記インタ
フェース・テーブルに個々に接続されるように、上記第
1及び上記第2のメソッド・テーブルを上記インタフェ
ース・テーブル接続する手段と、 メソッド・プログラムが、上記第1及び上記第2のメソ
ッド・テーブルに含まれるロケーション情報を介して、
上記メソッド・テーブルに個々に接続されるように、上
記メソッド・プログラムを各上記メソッド・テーブルに
接続する手段と、 を含む装置。 - 【請求項10】複合データ構造を生成及び記憶する装置
であって、 クラス・オブジェクトを生成する手段と、 インタフェース・テーブルを生成する手段と、 第1及び第2のメソッド・テーブルを生成する手段と、 上記インタフェース・テーブルを、上記クラス・オブジ
ェクト内に配置される接続手段を介して、上記クラス・
オブジェクトに接続する手段と、 上記メソッド・テーブルが、上記インタフェース・テー
ブルに含まれるロケーション情報を介して、上記インタ
フェース・テーブルに個々に接続されるように、上記第
1及び上記第2のメソッド・テーブルを上記インタフェ
ース・テーブル接続する手段と、 メソッド・プログラムが、上記第1及び上記第2のメソ
ッド・テーブルに含まれるロケーション情報を介して、
上記メソッド・テーブルに個々に接続されるように上記
メソッド・プログラムを各上記メソッド・テーブルに接
続する手段と、 を含む装置。 - 【請求項11】特定のクラスに対応するメソッド・プロ
グラムを呼出す装置であって、 オブジェクトのアドレス、上記呼出しが指向される上記
クラスを表すレベル、及び呼出される上記メソッド・プ
ログラムを表すメソッド・プログラム・オフセットを含
む呼出しステートメントを介して、上記オブジェクトを
呼出す手段と、 上記オブジェクト・アドレスを介して、上記オブジェク
トをアクセスする手段と、 上記オブジェクトに記憶されるインタフェース・テーブ
ル・アドレスを介して、インタフェース・テーブルをア
クセスする手段と、 上記インタフェース・テーブルに記憶されて、上記レベ
ルを介して決定されるメソッド・テーブル・アドレスを
介して、メソッド・テーブルをアクセスする手段と、 上記メソッド・プログラム・アドレスを通じて、上記メ
ソッド・プログラムを呼出す手段と、 を含む装置。 - 【請求項12】オブジェクト指向のプログラミング環境
を生成する装置であって、 Rootクラス・インタフェース・テーブルに接続されるRo
otクラス・オブジェクト、Rootクラス・メソッド・テー
ブルに接続されるRootクラス・インタフェース・テーブ
ル、及び上記Rootクラス・メソッド・テーブルを含むRo
otクラスを生成する手段と、 上記Rootクラスに対して、Xレベルのサブクラスを生成
する手段とを含む方法であって、Xは1よりも大きい正
の整数であり、各上記Xレベルのサブクラスは、各々が
特定のクラス・オブジェクト、クラス・インタフェース
・テーブル、クラス・メソッド・テーブル、及びXスー
パー・クラス・クラス・メソッド・テーブルを含む第1
のクラス及び第2のクラスを含み、上記クラス・インタ
フェース・テーブルが上記クラス・オブジェクト及び上
記クラス・メソッド・テーブルに接続され、上記Xスー
パー・クラス・クラス・メソッド・テーブルが、上記ク
ラス・インタフェース・テーブルに接続される、 装置。 - 【請求項13】オブジェクト指向プログラミング環境を
変更する装置であって、 クラス・オブジェクトが新たなインスタンス変数定義を
含み、新たなクラス・インタフェース・テーブルに接続
されるように、クラスの新たなバージョンを生成するた
めに、上記クラスの上記クラス・オブジェクトを変更す
る手段と、 上記クラスのサブクラスを表すサブクラス・クラス・オ
ブジェクトが上記新たなインスタンス変数定義を含み、
新たなサブクラス・インタフェース・テーブルに接続さ
れるように、上記クラスの上記サブクラスの新たなバー
ジョンを生成するために、上記クラスの上記サブクラス
を表す全ての上記サブクラス・クラス・オブジェクトを
変更する手段と、 を含む装置。 - 【請求項14】オブジェクト指向プログラミング環境を
変更する装置であって、 旧クラス・オブジェクトにより表されるクラスの新たな
バージョンを表す新たなクラス・オブジェクトを生成す
る手段と、 上記クラスの上記新たなバージョンに対応する新たなク
ラス・インタフェース・テーブル及び新たなクラス・メ
ソッド・テーブルを生成する手段と、 上記クラスの各サブクラスに対応する新たなサブクラス
・クラス・オブジェクトを生成する手段と、 上記各サブクラスに対応する新たなサブクラス・クラス
・インタフェース・テーブルと、各上記サブクラスに対
応する新たなサブクラス・クラス・メソッド・テーブル
を生成する手段と、 各上記サブクラスのスーパー・クラスに対応するメソッ
ド・テーブルである全てのクラス・メソッド・テーブル
をコピーする手段と、 を含む装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US954138 | 1992-09-30 | ||
US07/954,138 US5404525A (en) | 1992-09-30 | 1992-09-30 | Efficient method router that supports multiple simultaneous object versions |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06266563A true JPH06266563A (ja) | 1994-09-22 |
JP2986042B2 JP2986042B2 (ja) | 1999-12-06 |
Family
ID=25494983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5216496A Expired - Lifetime JP2986042B2 (ja) | 1992-09-30 | 1993-08-31 | オブジェクト指向プログラミング環境を変更するための方法及び装置 |
Country Status (2)
Country | Link |
---|---|
US (5) | US5404525A (ja) |
JP (1) | JP2986042B2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06266564A (ja) * | 1992-11-12 | 1994-09-22 | Internatl Business Mach Corp <Ibm> | 複合データ構造を生成及び記憶する方法及び装置 |
US5764989A (en) * | 1996-02-29 | 1998-06-09 | Supercede, Inc. | Interactive software development system |
US5848274A (en) * | 1996-02-29 | 1998-12-08 | Supercede, Inc. | Incremental byte code compilation system |
US6067413A (en) * | 1996-06-13 | 2000-05-23 | Instantations, Inc. | Data representation for mixed-language program development |
US6112253A (en) * | 1995-10-12 | 2000-08-29 | International Business Machines Corporation | Object-oriented method maintenance mechanism that does not require cessation of the computer system or its programs |
Families Citing this family (86)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5404525A (en) * | 1992-09-30 | 1995-04-04 | International Business Machines Corporation | Efficient method router that supports multiple simultaneous object versions |
US6070006A (en) * | 1993-04-14 | 2000-05-30 | Kabushiki Kaisha Toshiba | Object oriented software development tool for creation of new class(es) |
JPH06309204A (ja) * | 1993-04-20 | 1994-11-04 | Matsushita Electric Ind Co Ltd | データ処理方法及びその装置 |
US5632034A (en) * | 1993-06-01 | 1997-05-20 | International Business Machines Corporation | Controlling method invocation sequence through virtual functions in an object-oriented class library |
AU683038B2 (en) * | 1993-08-10 | 1997-10-30 | Addison M. Fischer | A method for operating computers and for processing information among computers |
US5604907A (en) * | 1993-12-30 | 1997-02-18 | International Business Machines Corporation | Computer system for executing action slots including multiple action object classes |
AU1522095A (en) * | 1994-01-05 | 1995-08-01 | Peter J. Covey | Dynamic-state, multi-dimensional, multi-media database |
DE69526165T2 (de) * | 1994-09-19 | 2002-10-31 | Sun Microsystems Inc | Verfahren und Einrichtung für das Aufrufen von Objekten mit Schnittstellenvererbung |
US5742826A (en) * | 1994-11-09 | 1998-04-21 | International Business Machines Corporation | Object encapsulation protection apparatus |
US6678880B1 (en) | 1995-05-08 | 2004-01-13 | Apple Computer, Inc. | System for iteratively designing an object heterarchy in an object-oriented computing environment |
US6519767B1 (en) * | 1995-06-07 | 2003-02-11 | Microsoft Corporation | Compiler and method for automatically building version compatible object applications |
US5680621A (en) * | 1995-06-07 | 1997-10-21 | International Business Machines Corporation | System and method for domained incremental changes storage and retrieval |
US5768582A (en) * | 1995-06-07 | 1998-06-16 | International Business Machines Corporation | Computer program product for domained incremental changes storage and retrieval |
US6973656B1 (en) * | 1995-08-16 | 2005-12-06 | International Business Machines Corporation | Method and apparatus for linking data in a distributed data processing system |
US5732263A (en) * | 1995-10-03 | 1998-03-24 | International Business Machines Corporation | Systems, methods and computer program products for generating and validating user defined object classes in an object oriented programming environment after build time |
US5867709A (en) * | 1995-10-18 | 1999-02-02 | Kapre Software, Inc. | Method and system for reusing customizations to a software product |
US7168088B1 (en) * | 1995-11-02 | 2007-01-23 | Sun Microsystems, Inc. | Method and apparatus for reliable disk fencing in a multicomputer system |
US6526565B1 (en) * | 1995-12-21 | 2003-02-25 | International Business Machines Corporation | Packaging algorithm for providing object oriented applications having reduced footprints |
US5758349A (en) * | 1995-12-27 | 1998-05-26 | International Business Machines Corporation | Process and system for run-time inheritance and disinheritance of methods and data |
US5970242A (en) * | 1996-01-24 | 1999-10-19 | Sun Microsystems, Inc. | Replicating code to eliminate a level of indirection during execution of an object oriented computer program |
US6128771A (en) | 1996-02-09 | 2000-10-03 | Sun Microsystems, Inc. | System and method for automatically modifying database access methods to insert database object handling instructions |
US5848236A (en) * | 1996-03-22 | 1998-12-08 | Sun Microsystems, Inc. | Object-oriented development framework for distributed hardware simulation |
US6314089B1 (en) * | 1996-05-07 | 2001-11-06 | Inventions, Inc. | Creating and using an adaptable multiple-contact transaction object |
US5878432A (en) * | 1996-10-29 | 1999-03-02 | International Business Machines Corporation | Object oriented framework mechanism for a source code repository |
US5953524A (en) * | 1996-11-22 | 1999-09-14 | Sybase, Inc. | Development system with methods for runtime binding of user-defined classes |
US6175855B1 (en) * | 1996-12-20 | 2001-01-16 | Siemens Aktiengesellschaft | Method for instantiating a class having different versions |
US5907707A (en) * | 1997-01-14 | 1999-05-25 | International Business Machines Corporation | Object model for Java |
US5920720A (en) * | 1997-02-25 | 1999-07-06 | Microsoft Corporation | Efficient computer based virtual machine object structure |
CA2201278C (en) * | 1997-03-27 | 2001-02-20 | Ibm Canada Limited-Ibm Canada Limitee | Hierarchical metadata store for an integrated development environment |
US6353859B1 (en) * | 1997-04-30 | 2002-03-05 | International Business Machines Corporation | Object-oriented apparatus and method for controlling accesses to objects in a distributed object environment |
US5842220A (en) * | 1997-05-02 | 1998-11-24 | Oracle Corporation | Methods and apparatus for exposing members of an object class through class signature interfaces |
US6442753B1 (en) | 1997-08-28 | 2002-08-27 | International Business Machines Corporation | Apparatus and method for checking dependencies among classes in an object-oriented program |
US5974428A (en) * | 1997-08-29 | 1999-10-26 | International Business Machines Corporation | Method and apparatus for class version naming and mapping |
KR100512157B1 (ko) * | 1997-09-04 | 2005-11-01 | 삼성전자주식회사 | 오오피 기반의 마이크로컨트롤러 응용 개발 시스템 |
US6385660B2 (en) | 1997-10-06 | 2002-05-07 | Sun Microsystems, Inc. | Site specific message dispatch in object-oriented systems |
US6317796B1 (en) * | 1997-10-06 | 2001-11-13 | Sun Microsystems, Inc. | Inline database for receiver types in object-oriented systems |
US5953526A (en) * | 1997-11-10 | 1999-09-14 | Internatinal Business Machines Corp. | Object oriented programming system with displayable natural language documentation through dual translation of program source code |
US6360363B1 (en) * | 1997-12-31 | 2002-03-19 | Eternal Systems, Inc. | Live upgrade process for object-oriented programs |
US6092079A (en) * | 1998-01-29 | 2000-07-18 | International Business Machines Corporation | Apparatus and method for updating an object without affecting the unique identity of the object |
US6023704A (en) * | 1998-01-29 | 2000-02-08 | International Business Machines Corporation | Apparatus and method for swapping identities of two objects to reference the object information of the other |
US6192368B1 (en) | 1998-02-11 | 2001-02-20 | International Business Machines Corporation | Apparatus and method for automatically propagating a change made to at least one of a plurality of objects to at least one data structure containing data relating to the plurality of objects |
US6044380A (en) * | 1998-02-17 | 2000-03-28 | International Business Machines Corporation | Apparatus and method for morphing an object on first touch |
US6182277B1 (en) * | 1998-04-15 | 2001-01-30 | Oracle Corporation | Methods and apparatus for declarative programming techniques in an object oriented environment |
EP1039378A3 (en) * | 1999-03-01 | 2004-04-21 | Canon Kabushiki Kaisha | Improvements in object-oriented computer processing |
US6415435B1 (en) | 1999-03-18 | 2002-07-02 | International Business Machines Corporation | Method and apparatus for determining compatibility of parent classes in an object oriented environment using versioning |
GB2351370A (en) | 1999-06-25 | 2000-12-27 | Ibm | Data processing with policed object union |
US6687759B1 (en) | 1999-08-13 | 2004-02-03 | Sun Microsystems, Inc. | Method and apparatus for performing method lookup in the presence of modularity constructs to support transitive method override |
US6725280B1 (en) * | 1999-08-13 | 2004-04-20 | Sun Microsystems, Inc. | Method and apparatus for constructing dispatch tables which enable transitive method override |
US6687760B1 (en) | 1999-08-13 | 2004-02-03 | Sun Microsystems, Inc. | Method and apparatus for preforming method lookup in the presence of modularity constructs to support transitive method override |
US8028049B1 (en) * | 2000-02-01 | 2011-09-27 | Peer Intellectual Property Inc. | Apparatus and method for web-based tool management |
GB2363866B (en) * | 2000-05-31 | 2002-11-06 | Intamission Ltd | Data processing apparatus, method and system |
FI20001524A (fi) * | 2000-06-27 | 2001-12-28 | Nokia Networks Oy | Yhdistettyjen olioiden hallinta verkossa |
GB2371378A (en) * | 2000-10-12 | 2002-07-24 | Abb Ab | Object oriented control system |
US6996832B2 (en) * | 2001-05-30 | 2006-02-07 | Bea Systems, Inc. | System and method for software component plug-in framework |
US6981250B1 (en) * | 2001-07-05 | 2005-12-27 | Microsoft Corporation | System and methods for providing versioning of software components in a computer programming language |
US7032230B2 (en) * | 2001-08-27 | 2006-04-18 | International Business Machines Corporation | Efficient virtual function calls for compiled/interpreted environments |
US7010791B2 (en) * | 2001-09-20 | 2006-03-07 | Intel Corporation | Method for implementing multiple type hierarchies |
US8010887B2 (en) * | 2001-09-21 | 2011-08-30 | International Business Machines Corporation | Implementing versioning support for data using a two-table approach that maximizes database efficiency |
US8359335B2 (en) * | 2001-09-29 | 2013-01-22 | Siebel Systems, Inc. | Computing system and method to implicitly commit unsaved data for a world wide web application |
US6907451B1 (en) | 2001-09-29 | 2005-06-14 | Siebel Systems, Inc. | Method, apparatus, and system for immediate posting of changes in a client server environment |
DE10211953A1 (de) * | 2002-03-18 | 2003-10-09 | Siemens Ag | System und Verfahren zur Projektierung mit Objektbaum aus hierarchisch stufbaren Objekten |
US7085933B2 (en) * | 2002-06-11 | 2006-08-01 | Lenvo (Singapore) Pte, Ltd. | Computer system apparatus and method for improved assurance of authentication |
US8051211B2 (en) | 2002-10-29 | 2011-11-01 | Cisco Technology, Inc. | Multi-bridge LAN aggregation |
US20040133583A1 (en) * | 2002-11-20 | 2004-07-08 | Tingey Kenneth B. | system architecture and method for entering and accessing entity data in events accounting |
US7386836B2 (en) * | 2003-06-09 | 2008-06-10 | International Business Machines Corporation | Maintaining multiple valid concurrent serialized object versions |
US7584454B1 (en) | 2003-09-10 | 2009-09-01 | Nextaxiom Technology, Inc. | Semantic-based transactional support and recovery for nested composite software services |
US7533387B1 (en) * | 2003-09-10 | 2009-05-12 | Nextaxiom Technology, Inc. | Guaranteed invocation/consumption of nested, composite software services |
US7483901B1 (en) | 2003-09-10 | 2009-01-27 | Nextaxiom Technology, Inc. | System and method for data transfer between two or more connected software services |
US7581205B1 (en) | 2003-09-30 | 2009-08-25 | Nextaxiom Technology, Inc. | System and method of implementing a customizable software platform |
US8225282B1 (en) | 2003-11-25 | 2012-07-17 | Nextaxiom Technology, Inc. | Semantic-based, service-oriented system and method of developing, programming and managing software modules and software solutions |
JP4230966B2 (ja) * | 2004-06-28 | 2009-02-25 | 株式会社日立製作所 | ソリューションビジネス用コンフィギュレーションシステム及びその構成方法 |
US7203027B2 (en) | 2004-11-10 | 2007-04-10 | Certance, Llc | System and method for measuring the position of a tape drive head |
US7230788B2 (en) * | 2004-11-10 | 2007-06-12 | Certance, Llc | System and method for tape drive control |
US9063725B2 (en) * | 2005-06-24 | 2015-06-23 | Oracle International Corporation | Portable management |
US9075596B2 (en) * | 2005-06-24 | 2015-07-07 | Oracle International Corporation | Deployment |
US9542175B2 (en) * | 2005-06-24 | 2017-01-10 | Oracle International Corporation | Continuous deployment |
US20070226731A1 (en) * | 2005-11-16 | 2007-09-27 | Tseitlin Ariel D | Modularity |
US20070250828A1 (en) * | 2005-11-16 | 2007-10-25 | Tseitlin Ariel D | Portable libraries |
US8539474B2 (en) * | 2006-09-28 | 2013-09-17 | International Business Machines Corporation | Method and system for management of interim software fixes |
US7913236B2 (en) * | 2006-09-29 | 2011-03-22 | Intel Corporation | Method and apparatus for performing dynamic optimization for software transactional memory |
US9792563B1 (en) * | 2007-03-22 | 2017-10-17 | Workday, Inc. | Human resources system development |
US9178785B1 (en) | 2008-01-24 | 2015-11-03 | NextAxiom Technology, Inc | Accounting for usage and usage-based pricing of runtime engine |
US8387012B2 (en) * | 2008-12-08 | 2013-02-26 | International Business Machines Corporation | Determining deltas in a spatial locality of a function call graph in a source controlled system |
US9864763B2 (en) * | 2012-06-01 | 2018-01-09 | Entit Software Llc | Merging data from a source location into a target location |
CN106855794A (zh) * | 2015-12-08 | 2017-06-16 | 平安科技(深圳)有限公司 | 应用于ios操作系统的多对象间的数据共享方法及系统 |
US10839598B2 (en) * | 2016-07-26 | 2020-11-17 | Hewlett-Packard Development Company, L.P. | Indexing voxels for 3D printing |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03257530A (ja) * | 1990-03-07 | 1991-11-18 | Fujitsu Ltd | オブジェクト指向プログラムの実行処理方式 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4809170A (en) * | 1987-04-22 | 1989-02-28 | Apollo Computer, Inc. | Computer device for aiding in the development of software system |
US4853843A (en) * | 1987-12-18 | 1989-08-01 | Tektronix, Inc. | System for merging virtual partitions of a distributed database |
JPH0833862B2 (ja) * | 1989-10-23 | 1996-03-29 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | オブジエクト指向コンピユータ・システム |
US5093914A (en) * | 1989-12-15 | 1992-03-03 | At&T Bell Laboratories | Method of controlling the execution of object-oriented programs |
US5297279A (en) * | 1990-05-30 | 1994-03-22 | Texas Instruments Incorporated | System and method for database management supporting object-oriented programming |
US5280610A (en) * | 1990-08-14 | 1994-01-18 | Digital Equipment Corporation | Methods and apparatus for implementing data bases to provide object-oriented invocation of applications |
US5265206A (en) * | 1990-10-23 | 1993-11-23 | International Business Machines Corporation | System and method for implementing a messenger and object manager in an object oriented programming environment |
US5291593A (en) * | 1990-10-24 | 1994-03-01 | International Business Machines Corp. | System for persistent and delayed allocation object reference in an object oriented environment |
DE69228621T2 (de) * | 1991-02-25 | 1999-07-22 | Hewlett Packard Co | Objektorientiertes verteiltes Rechnersystem |
US5187786A (en) * | 1991-04-05 | 1993-02-16 | Sun Microsystems, Inc. | Method for apparatus for implementing a class hierarchy of objects in a hierarchical file system |
US5297284A (en) * | 1991-04-09 | 1994-03-22 | Microsoft Corporation | Method and system for implementing virtual functions and virtual base classes and setting a this pointer for an object-oriented programming language |
US5261098A (en) * | 1991-08-28 | 1993-11-09 | Sun Microsystems, Inc. | Method and apparatus for deriving object type and obtaining object type attribute values |
US5367635A (en) * | 1991-08-29 | 1994-11-22 | Hewlett-Packard Company | Network management agent with user created objects providing additional functionality |
US5421016A (en) * | 1991-12-12 | 1995-05-30 | International Business Machines Corporation | System and method for dynamically invoking object methods from an application designed for static method invocation |
JPH05257664A (ja) * | 1991-12-12 | 1993-10-08 | Internatl Business Mach Corp <Ibm> | バージョン独立のオブジェクト指向アプリケーション・プログラムを生成するシステム及び方法 |
US5361350A (en) * | 1991-12-12 | 1994-11-01 | International Business Machines Corporation | Object oriented method management system and software for managing class method names in a computer system |
CA2077273C (en) * | 1991-12-12 | 1996-12-03 | Mike H. Conner | Language neutral objects |
EP0546682A3 (en) * | 1991-12-12 | 1993-12-08 | Ibm | Parent class shadowing |
US5371891A (en) * | 1992-04-09 | 1994-12-06 | Microsoft Corporation | Method for object construction in a compiler for an object-oriented programming language |
US5432936A (en) * | 1992-04-09 | 1995-07-11 | Microsoft Corporation | Method for implementing pointers to members in a compiler for an object-oriented programming language |
US5327562A (en) * | 1992-05-06 | 1994-07-05 | Microsoft Corporation | Method for implementing virtual function tables in a compiler for an object-oriented programming language |
US5339430A (en) * | 1992-07-01 | 1994-08-16 | Telefonaktiebolaget L M Ericsson | System for dynamic run-time binding of software modules in a computer system |
JPH06103075A (ja) * | 1992-07-06 | 1994-04-15 | Internatl Business Mach Corp <Ibm> | オブジェクト指向適用業務 |
US5404525A (en) * | 1992-09-30 | 1995-04-04 | International Business Machines Corporation | Efficient method router that supports multiple simultaneous object versions |
US5386564A (en) * | 1993-02-24 | 1995-01-31 | Hewlett-Packard Company | Conversion of data and objects across classes in an object management system |
-
1992
- 1992-09-30 US US07/954,138 patent/US5404525A/en not_active Expired - Lifetime
-
1993
- 1993-08-31 JP JP5216496A patent/JP2986042B2/ja not_active Expired - Lifetime
-
1995
- 1995-04-03 US US08/416,404 patent/US5774723A/en not_active Expired - Lifetime
- 1995-04-03 US US08/415,393 patent/US6983447B1/en not_active Expired - Fee Related
- 1995-04-03 US US08/415,907 patent/US5644771A/en not_active Expired - Fee Related
- 1995-04-03 US US08/415,392 patent/US5768588A/en not_active Expired - Lifetime
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03257530A (ja) * | 1990-03-07 | 1991-11-18 | Fujitsu Ltd | オブジェクト指向プログラムの実行処理方式 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06266564A (ja) * | 1992-11-12 | 1994-09-22 | Internatl Business Mach Corp <Ibm> | 複合データ構造を生成及び記憶する方法及び装置 |
US6112253A (en) * | 1995-10-12 | 2000-08-29 | International Business Machines Corporation | Object-oriented method maintenance mechanism that does not require cessation of the computer system or its programs |
US5764989A (en) * | 1996-02-29 | 1998-06-09 | Supercede, Inc. | Interactive software development system |
US5848274A (en) * | 1996-02-29 | 1998-12-08 | Supercede, Inc. | Incremental byte code compilation system |
US6067413A (en) * | 1996-06-13 | 2000-05-23 | Instantations, Inc. | Data representation for mixed-language program development |
Also Published As
Publication number | Publication date |
---|---|
US6983447B1 (en) | 2006-01-03 |
US5404525A (en) | 1995-04-04 |
US5768588A (en) | 1998-06-16 |
JP2986042B2 (ja) | 1999-12-06 |
US5644771A (en) | 1997-07-01 |
US5774723A (en) | 1998-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2986042B2 (ja) | オブジェクト指向プログラミング環境を変更するための方法及び装置 | |
US5918052A (en) | Multiple inheritance mechanism for an object oriented programming environment | |
JP3437849B2 (ja) | オブジェクト指向プログラミングを支援するデータベース管理システム及び方法 | |
JP2569092B2 (ja) | 入出力機器制御プログラムのアドレス解決方法 | |
US5339435A (en) | Heterogenous software configuration management apparatus | |
US6163776A (en) | System and method for exchanging data and commands between an object oriented system and relational system | |
US5675804A (en) | System and method for enabling a compiled computer program to invoke an interpretive computer program | |
US5819282A (en) | Database generator | |
US5974428A (en) | Method and apparatus for class version naming and mapping | |
US5842220A (en) | Methods and apparatus for exposing members of an object class through class signature interfaces | |
US6072953A (en) | Apparatus and method for dynamically modifying class files during loading for execution | |
US5732263A (en) | Systems, methods and computer program products for generating and validating user defined object classes in an object oriented programming environment after build time | |
KR100659889B1 (ko) | 데이터 액세스 방법, 기록매체 및 컴퓨터 | |
US5497491A (en) | System and method for importing and exporting data between an object oriented computing environment and an external computing environment | |
US20030093420A1 (en) | Method and system for retrieving sharable information using a hierarchically dependent directory structure | |
US20040003388A1 (en) | Preparation of a software configuration using an XML type programming language | |
KR100301274B1 (ko) | 컴퓨터시스템및프로그램제품전송방법 | |
JPH0675846A (ja) | アプリケーションのオブジェクト指向呼出しをデータベースで行うための方法及び装置 | |
JPH0743686B2 (ja) | 分散不均一環境におけるアプリケーションの動的呼出しの方法及び装置 | |
US5394546A (en) | Database management system and method of extending system functions | |
WO1994023360A1 (en) | Shared library locating system | |
US5062039A (en) | Sharing of workspaces in interactive processing using workspace name tables for linking of workspaces | |
US7827525B1 (en) | Data object utilization in software applications | |
US6715148B1 (en) | Efficient method router that supports multiple simultaneous object versions | |
JP3019915B2 (ja) | 手続き呼出し方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081001 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091001 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101001 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101001 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111001 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121001 Year of fee payment: 13 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131001 Year of fee payment: 14 |