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
Application number
JP5216496A
Other languages
English (en)
Other versions
JP2986042B2 (ja
Inventor
John C Endicott
ジョン・クラランス・エンディコット
J Munrow Steven
スティーブン・ジェイ・マンロー
Robert P Resch
ロバート・ピーター・レスチ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH06266563A publication Critical patent/JPH06266563A/ja
Application granted granted Critical
Publication of JP2986042B2 publication Critical patent/JP2986042B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-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

(57)【要約】 【目的】 改良されたオブジェクト指向プログラミング
(OOP)環境を提供すること。 【構成】 OOP環境は、複合データ構造、及びそれら
の構造を操作する内部機構を含む。本発明を構成する内
部機構及び構造は、集合的にニュー・オブジェクト・モ
デル(NOM)と呼ばれる。NOM OOP環境の複合
データ構造及び構成は、より効率的なメソッド解析方
法、並びにコード・ベースの大部分を再コンパイルする
必要なくクラス定義にメソッド・プログラム及びオブジ
ェクト・インスタンス・データを追加する機能を含む。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はデータ処理分野に関し、
特に、オブジェクト指向のプログラミング環境に関す
る。
【0002】
【従来の技術】1948年のEDVACコンピュータの
開発は、しばしばコンピュータ時代の幕開けとして提唱
される。それ以来、コンピュータ・システムはアメリカ
ン・ライフ・スタイルの様々な面において浸透してき
た。こうした普及の理由の1つに、コンピュータ・シス
テムが様々なタスクを効率的に実行できる能力が挙げら
れる。これらのタスクを実行するために、コンピュータ
・システムにより使用される機構を、コンピュータ・プ
ログラムと称する。
【0003】コンピュータ・システム自身と同様に、コ
ンピュータ・プログラムの開発も長年に渡り発展してき
た。EDVACシステムは、"1アドレス"コンピュータ
・プログラミング言語と称される言語を使用した。この
言語は、最も初歩的なコンピュータ・プログラムだけを
考慮した。1950年代初期、科学者達は人間に合理的
に理解できるシンボリック命令を、コンピュータ・シス
テムにより理解される形式に変換する機構を開発した。
各コンピュータ・システムは、特定のグループのこれら
の命令を扱うように設計された。これらのグループの命
令は、命令セットと称される。
【0004】コンピュータ・プログラム開発の次のステ
ップは、コンピュータ・プログラミング言語の概念であ
った。コンピュータ・プログラミング言語は、シンボリ
ック命令セットよりも、より理解しやすいものであっ
た。コンピュータ・プログラムは様々なコンピュータ・
プログラミング言語を用いて作成される。一度作成され
ると、コンピュータ・プログラムは特定のコンピュータ
・システムの命令セットの一部である命令にコンパイル
される。FORTRAN は通常、特定の命令セットと無関係に
作成されるコンピュータ・プログラムの最初の言語とし
て引用される。1960年代までに、コンピュータ・プ
ログラミング言語の改良は、コンピュータ・プログラム
にまで及んだ。なぜなら、コンピュータ・プログラムが
非常に大規模化し、複雑化したため、コンピュータ・プ
ログラムの開発環境及び保守を管理及び制御することが
困難となったためである。
【0005】こうして1970年代には、焦点は、新た
なプログラミング言語の開発から、大規模なコンピュー
タ・プログラムの日増しに進む複雑化及びコストを収容
可能な、プログラミング方法論及び環境の開発に移行し
た。こうした方法論の1つが、オブジェクト指向プログ
ラミング(OOP:Object Oriented Programming )の
アプローチである。OOPの支持者達は、コンピュータ
・プログラミングにおけるこのアプローチにより、コン
ピュータ・プログラマの生産性が25倍程度改良される
と主張する。こうして、OOP概念が最初に開発されて
から、既にある時間が経過したが、現在でもこの概念が
将来的な方法であると見なされている。
【0006】OOPの基本的概念は、"カプセル化"と"
再使用性"である。カプセル化は情報及び情報を使用す
る手段が、概念的に"オブジェクト"と称される個々のエ
ンティティにパッケージ化されることを意味する。オブ
ジェクトは、コンピュータ・システムにより実行される
個々のオペレーション或いはオペレーションのグループ
を表す。1つのオブジェクトに含まれる情報はデータ
(data)と称され、情報に対して特定のオペレーション
を実行するために使用される手段は、メソッド(metho
d)と称される。再使用性の概念は、オブジェクトが他
の多くのオブジェクトのメソッドにより使用可能なよう
に、総称的に作成されることを意味する。オブジェクト
を使用するプログラム或いはメソッド・プログラムは、
オブジェクトのクライアント(すなわちクライアント・
プログラム)であると称される。クライアントはオブジ
ェクトを呼出す一方で、使用されるメソッドを指定す
る。これはメソッド解析と称される。
【0007】オブジェクトはまた、特定の"クラス"のオ
ブジェクトのメンバであると見なされる。オブジェクト
は生成されると、特定のクラスのメンバとなるか、或い
は特定のクラスのサブクラスのメンバであると見なされ
る。サブクラスのメンバとして生成されるオブジェクト
は、そのサブクラスに対応するクラス(すなわちそれら
のスーパー・クラス)の性質(すなわちデータ及びメソ
ッド)を継承すると言われる。例えば、犬科(Canine)
と称されるオブジェクト・クラスを考えてみよう。この
クラスは、そのクラスのオブジェクトを示すデータ(す
なわち名前、色、目及び足の数など)を有する。このク
ラスはまた、このクラスのデータと共に作用するために
用いられるメソッドを定義される。例えば、クラス犬科
のオブジェクトは、色が黒で、2つの目と4本の足を有
するREXと命令される犬科を表すオブジェクトであっ
たりする。クラス犬科のサブクラスであるドッグ(Dog
)は、更にクラス犬科を定義し、犬科のどのタイプが
含まれるかを示すデータを含む。例えば、クラス・ドッ
グのオブジェクトは、その色が白と茶で、2つの目と4
本の足を有し、タイプがコリー(Collie)であるラッシ
ー(Lassie)と命名される犬を表すように生成される。
クラス犬科はまた、クラス・ドッグのスーパー・クラス
(super class )と見なされる。オブジェクト及びサブ
クラスが追加されることにより、階層的3構造が形成さ
れる。各クラスはそれぞれサブクラス或いはスーパー・
クラスと称され、階層構造における特定のレベルと見な
される。例では、クラス犬科のサブクラスであるクラス
・ドッグは、クラス犬科よりも1つ大きなレベルに適合
する。
【0008】これらのOOP概念を用いる最もよく知ら
れる2つの環境は、"C++"環境と "スモールトーク"(S
malltalk)環境である。C++環境は現存する"C"コンピ
ュータ・プログラミング言語の単に拡張である。従っ
て、これはOOPに対する極めて非柔軟なアプローチと
言える。特定のクラスのオブジェクトに対応するデータ
が変更を要求する場合、或いは特定のクラスのオブジェ
クトに対応するメソッドが追加される場合、変更される
クラスのメンバである全てのオブジェクト、及び変更さ
れるクラスのサブクラスのメンバであるオブジェクトが
再生されて、それらのメソッドが再コンパイルされなけ
ればならない。更に、変更されるクラスのオブジェク
ト、或いは変更されるクラスのサブクラスのメンバであ
るオブジェクトに依存するクライアントもまた、再コン
パイルされなければならない。これは上述の犬科−ドッ
グで示した仮定では特に問題とは思われないが、多数の
クラス及びサブクラスを含む大規模システムでは、非常
にコストが掛かり、また時間を消費する。
【0009】OOPに対するスモールトークのアプロー
チは、再コンパイルを要せずにメソッドの追加を可能と
した点で、C++を改良したものである。しかしながら、
この柔軟性はコストを要さないものではない。スモール
トークのOOP環境の設計者は、再コンパイルを要せず
にメソッドを追加可能とする機能のために、効率的なメ
ソッド解析を犠牲にする。更に、OOPにおけるスモー
ルトークのアプローチは、再生及び再コンパイルの犠牲
を招くことなく、オブジェクトに対するメソッドの追加
を可能とするが、スモールトーク環境は、オブジェクト
・データに対する変更におけるC++の欠点を共有する。
【0010】本質的に、今日のOOP環境は、OOPア
プローチにより実現される生産性の利点を低減させてい
る。
【0011】
【発明が解決しようとする課題】本発明の第1の目的
は、改良されたOOP環境を提供することである。
【0012】本発明の別の目的は、改良されたOOP環
境の構造を生成及び記憶する、改良された方法並びに装
置を提供することである。
【0013】更に本発明の別の目的は、改良されたOO
P環境のオブジェクトを経路指定する、改良された方法
並びに装置を提供することである。
【0014】更に本発明の別の目的は、改良されたOO
P環境を生成する、改良された方法並びに装置を提供す
ることである。
【0015】更に本発明の目的は、改良されたOOP環
境におけるクラスのバージョンを生成する、改良された
方法並びに装置を提供することである。
【0016】更に本発明の別の目的は、オブジェクト・
インスタンスのバージョンをあるバージョンから別のバ
ージョンに変更する、改良された方法並びに装置を提供
することである。
【0017】これらの目的が、本発明で述べられるOO
P機構及び装置により達成される。
【0018】
【課題を解決するための手段】OOP環境は、複合デー
タ構造及びこれらの構造を操作する内部機構を含む。こ
うした構造は、ユーザがOOPのパワーを実現すること
を可能とする。従って、これらの構造のレイアウト、こ
れらの相関方法及びこれらが生成され使用される方法
は、全て特定のOOP環境のユーティリティにとって重
要である。従って、OOP環境の製造者及び供給者が、
常にユーザ・ユーティリティを最大化する複合データ構
造及び内部機構を設計しようと努力していることは、驚
きに値しない。
【0019】本発明を構成する内部機構及び構造は、総
称的にニュー・オブジェクト・モデル(NOM)と称さ
れる。NOM OOP環境の複合データ構造及び構成
は、従来技術環境によっては提供されない重要な利点を
提供する。これらの利点には、より効率的なメソッド解
析方法、並びにコード・ベースの大部分を再コンパイル
する必要なく、クラス定義にメソッド・プログラム及び
オブジェクト・インスタンス・データを追加する機能が
含まれる。
【0020】NOM環境は3つの主要複合データ構造を
含み、それらはオブジェクト構造、インタフェース・テ
ーブル、及びメソッド・テーブルである。オブジェクト
構造は、その性質が現存のOOPオブジェクト構造に類
似であり、オブジェクトを特徴づけるデータ、及びイン
タフェース・テーブルに関するロケーション情報を含
む。オブジェクト・データは更にクラス・レベルにより
細分される。従って、各オブジェクトは、特定の階層木
構造におけるクラスの深さに対応する数のデータ・セッ
トを含む。インタフェース・テーブルは、オブジェクト
が属するクラスに対応するインタフェース・テーブル入
力、及びオブジェクトのスーパー・クラスの各々に対応
する入力(すなわち特定の階層木構造におけるクラスの
深さに至る各レベルに対応して1入力が割当てられる)
を含む。各入力は組(tuple )を有する。組はサブジェ
クト・クラス・レベルに対応するメソッド・テーブルに
関するロケーション情報、特定のクラス・レベルに関連
するオブジェクト・データのオフセット、及びクラス・
シグニチャを含む。ロケーション情報はメソッド・テー
ブルへのアクセスを獲得するために使用され、オフセッ
トはオブジェクトに記憶されるインスタンス・データへ
のアクセスを獲得するために使用される。クラス・シグ
ニチャは、クライアント・プログラムが、特定のオブジ
ェクトの特定のメソッドにより実現される機能を、正確
に呼出すことを保証する安全機構として使用される。ク
ラス・シグニチャに一致するシグニチャを呼出さないク
ライアント・プログラムは、選択されるメソッドを呼出
すことを許可されない。特定のクラス・レベルに対応す
るメソッド・テーブルは、自らが個々のメソッド・プロ
グラムに関するロケーション情報を含むメソッド・テー
ブル入力を含む。
【0021】クライアント・プログラムが特定のオブジ
ェクトにおいて具現される機能を利用する時、これはオ
ブジェクト名及び呼出されるメソッド・プログラムの名
前を指定することにより、オブジェクトを呼出す。オブ
ジェクトを呼出すことはまた、オブジェクトに"経路指
定する"とも称される。コンパイルされる時、NOM呼
出しステートメントは4片の情報を含み、それらはオブ
ジェクトID、レベル、呼出しシグニチャ、及びメソッ
ド・オフセットである。オブジェクトIDは特定のオブ
ジェクトを突き止め、アクセスするために使用される。
一度実行されると、オブジェクト内のロケーション情報
が、インタフェース・テーブルへのアクセスを獲得する
ために使用される。レベルは、次に適切なインタフェー
ス・テーブル入力を突き止めるために使用される。既に
述べたように、呼出しシグニチャは、選択されたメソッ
ド・プログラムが関連するクラスのクラス・シグニチャ
に対する一致を見るために使用される。シグニチャが一
致すると、サブジェクト・インタフェース・テーブル入
力内のロケーション情報が、適切なメソッド・テーブル
へのアクセスを獲得するために使用される。メソッド・
オフセットは、次に、正しいメソッド・プログラムをア
クセスして呼出すために使用される。
【0022】特定のクラスに対し、メソッド・プログラ
ムを追加する必要がある場合には、コンピュータ・プロ
グラマは、特定のクラスに関連するメソッド・テーブル
に、別の入力を追加するだけでよい。オブジェクトの再
コンパイルは必要ない。しかしながら、新たなメソッド
・プログラムへのアクセスを必要とするクライアント・
プログラムだけは、再コンパイルを必要とする。
【0023】コンピュータ・プログラマが特定のクラス
にデータを追加することを望む場合、NOM環境では、
簡単にそのクラスの新たなバージョンが生成され、新た
なデータを要求するオブジェクトだけが再分類され得
る。旧バージョンのオブジェクトは、必要に応じて再分
類される。
【0024】更にNOM環境は、複合データ構造をサポ
ートする内部機構を提供する。これらはバージョン・マ
ネージャ、オブジェクト・マネージャ、並びにクラス定
義ユーティリティを含む。バージョン・マネージャは、
同一クラスのいくつかのバージョンが共存可能なよう
に、クラスのバージョンを生成する。オブジェクト・マ
ネージャは、オブジェクト・インタフェースの生成をサ
ポートし、一方、クラス定義ユーティリティは新たなク
ラスの定義をサポートする。
【0025】
【実施例】図1は本発明のコンピュータ・システムのブ
ロック図を示す。好適な実施例のコンピュータ・システ
ムは、改良されたIBM AS/400中型コンピュー
タ・システムである。しかしながら、OOP環境をサポ
ートできるコンピュータ・システムであれば、使用可能
である。図1に示されるように、コンピュータ・システ
ム100はメイン処理ユニット或いは中央処理ユニット
(CPU)105を含み、これはシステム・バス150
を介して、データ記憶装置140及び端末インタフェー
ス145に接続される。端末インタフェース145によ
り、システム管理者及びコンピュータ・プログラマは、
通常、プログラマブル・ワークステーションを通じて、
コンピュータ・システム100と通信することができ
る。図1に示されるシステムは、単一のメインCPU及
び単一のシステム・バスしか含まないが、本発明が複数
のメインCPU及び複数のI/Oバスを有するコンピュ
ータ・システムにも適応できることは理解されよう。同
様に、実施例のバスは、典型的にはハードワイヤで配線
されるマルチドロップ・バスであるが、双方向通信をサ
ポートする接続手段であれば使用可能である。
【0026】データ記憶装置140はバージョン・マネ
ージャ110、システム・オブジェクト・マネージャ1
15、クラス定義ユーティリティ117、クライアント
・プログラム120、オブジェクト125、メソッド・
プログラム130、及びオペレーティング・システム1
35を含む。データ記憶装置140はモノリシックなエ
ンティティとして示されるが、実際には様々なデバイス
を含み、示される全てのプログラム及びファイルが、必
ずしも、ある1つのデバイス内に含まれるものではない
ことが理解されよう。例えば、クライアント・プログラ
ム120及びオペレーティング・システム135の一部
は、典型的には主メモリにロードされて実行され、一
方、ソース・データ・ファイルは、典型的には磁気或い
は光ディスク記憶装置上に記憶される。
【0027】図2は、本発明の装置、方法、及び構造を
説明するために、本明細書を通じて使用されるOOP階
層木構造を示す。2重線で示されるボックスは異なるク
ラスを表し、単線で示されるボックスは、特定のクラス
のオブジェクト・インスタンスを表す。ここで図2が木
構造の概念的表現であることが理解されよう。データ記
憶装置140において、クラス及びオブジェクトが実際
に存在する様子が、図7乃至図10、図11、図13乃
至図14及び図16に示されている。
【0028】クラス"Root"200は模範木構造の基本ク
ラスである。クラス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では図示され
ていない)。
【0029】例えば、クラスEngineer220は、クラス
Personnel 205のサブクラスとして定義される。クラ
スPersonnel 205はそれ自身、クラスRoot200のサ
ブクラスである。従って、クラスEngineer220はその
スーパー・クラスのオブジェクト・インスタンス変数定
義(すなわち"オブジェクト名"202、 "オブジェクト
・クラス" 204、"クラス・レベル"270、"インス
タンス・サイズ"272、"従業員番号"207、及び"給
与"209)を継承する。クラスEngineer220はま
た、固有のクラス定義部分であるインスタンス変数も含
む。それらは "開発分野" 221、及び"現行プロジェ
クト"223である。クラスEngineer220のメンバと
して生成されるオブジェクトは、オブジェクト・インス
タンス変数、すなわちオブジェクト・クラス、クラス・
レベル、インスタンス・サイズ、従業員番号、給与、開
発分野、及び現行プロジェクトに関連する値を有する。
John235及びJoe 240は、クラスEngineer220の
メンバであるオブジェクト例である。
【0030】クラスPersonnel_II255もまた、クラス
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に関連して詳
述される。
【0031】NOMインタフェース・テーブル:本発明
を理解するために、NOMインタフェース・テーブルを
理解することは重要であり、その詳細を図3で説明す
る。インタフェース・テーブルにおける各入力は、層内
の特定のクラスに関する情報を含む。更に詳細には、各
入力はメソッド・プログラムに関するロケーション情
報、及び特定のクラスのインスタンス・データを含む。
メソッド・プログラムがオブジェクトに経路指定される
と、これらはインタフェース・テーブルに記憶されるロ
ケーション情報を使用することにより、メソッド・プロ
グラム及びインスタンス・データへのアクセスを獲得す
る。
【0032】NOMインタフェース・テーブル275
は、インタフェース・テーブル入力280、285及び
290を含む。各インタフェース入力は組(tuple )か
ら構成される。組はメソッド・テーブル・ポインタ(例
えばメソッド・テーブル・ポインタ282)、クラス・
シグニチャ(例えばクラス・シグニチャ283)、デー
タ・オフセット(例えばデータ・オフセット284)を
含む。メソッド・テーブル・ポインタは、クライアント
・プログラムが特定のメソッド・テーブル及び最終的に
はメソッド・プログラムをアクセスするために使用す
る。クラス・シグニチャは、クライアント・プログラム
が、正しいオブジェクト・クラスに経路指定されること
を保証するために使用される。これらのフィールドは、
図11及び図12に関連してより詳細に説明される。デ
ータ・オフセットは、メソッド・プログラムが、オブジ
ェクト・インスタンスに記憶されるオブジェクト・イン
スタンス変数へのアクセスを獲得するために使用する。
このフィールドは図13乃至図15に関連して詳しく述
べられる。
【0033】NOM環境の生成:図4乃至図5はクラス
定義ユーティリティ117の内部作業の流れ図であり、
図6はシステム・オブジェクト・マネージャ115の内
部作業の流れ図である。図7から図10は、図2の木構
造の一部が、実際にデータ記憶装置140内に存在する
様子を示す。図4乃至図6は、図2で示されるような階
層構造が実際に生成される様子を説明するために、図7
乃至図10と関連して使用される。
【0034】コンピュータ・システム100が顧客或い
は他のユーザに輸送される時、クラス・オブジェクトRo
ot(図7の400)に対応する複合データ構造、及びRo
otクラス(図7の構造405及び410)は、既にデー
タ記憶装置140にロードされている。当業者には理解
されるように、これらの複合データ構造が最初に生成さ
れて、データ記憶装置140に記憶されるためには、多
数の方法が存在する。同様にこれらの構造の生成及び記
憶は、必ずしも製造工場において実施される必要はな
い。顧客或いはユーザが、クラス定義ユーティリティ1
17及びシステム・オブジェクト・マネージャ115を
独立に呼出すことにより、これらの複合データ構造を生
成及び記憶することも可能である。しかしながら、説明
の都合上、クラス・オブジェクトRoot400、インタフ
ェース・テーブル405(すなわちクラスRootに対応す
るインタフェース・テーブル)、及びメソッド・テーブ
ル410(すなわちクラスRootに対応するメソッド・テ
ーブル)が、製造工場において、データ記憶装置140
に予めロードされるものと仮定する。
【0035】コンピュータ・システム100のユーザが
クラス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では、メソッド・プログラム
・アドレスを入力するように求められる。
【0036】クラス定義ユーティリティ117は、次に
ブロック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に示される。
【0037】次のステップでは、クラス・オブジェクト
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
に書込まれる。
【0038】図4及び図5は、図9と関連して検討する
と、次のサブクラスEngineerが定義される様子を示す。
Engineerサブクラスを定義するために実行されるステッ
プは、上述の説明と同一であるため、それらの詳細につ
いてはここでは触れない。しかしながら、ここで本明細
書において使用されるいくつかの用語について理解する
ことが重要である。上述のように、NOM環境における
各クラスは、クラス・オブジェクトを有する。特定のク
ラスに対応して定義されたインタフェース・テーブル及
びメソッド・テーブルは、しばしば、それぞれ "クラス
・インタフェース・テーブル" 及び"クラス・メソッド
・テーブル"と称される。サブジェクト・クラスと同じ
でないクラスのクラス・オブジェクトが参照されると
き、これらはサブジェクト・クラスのスーパー・クラス
を表すか、或いはサブジェクト・クラスのサブクラスを
表すかに依存して、 "スーパー・クラス・クラス・オブ
ジェクト" 或いは"サブクラス・クラス・オブジェクト"
と称される。同様にスーパー・クラス・クラス・メソッ
ド、並びにインタフェース・テーブル、及びサブクラス
・クラス・メソッド、並びにインタフェース・テーブル
が参照される。これらは前述同様、サブジェクト・クラ
スのスーパー・クラスを表すか、或いはサブジェクト・
クラスのサブクラスを表すメソッド或いはインタフェー
ス・テーブルを参照する。
【0039】図2の階層木構造例を構成する最後のステ
ップでは、特定のクラスのメンバであるオブジェクト・
インスタンスを生成する。サブクラス定義ユーティリテ
ィ117の呼出しの場合同様、クラスEngineerのオブジ
ェクト・インスタンスを生成しようと望むコンピュータ
・システム100のユーザは、クラス・オブジェクトEn
gineer430に経路指定されるクライアント・プログラ
ム(すなわちクライアント・プログラム120)を開始
する。クライアント・プログラムはインタフェース・テ
ーブル435及びメソッド・テーブル475(すなわち
クラスRootからコピーされるメソッド・テーブル)への
アクセスを獲得する。このアクセスが実行される様子に
ついては、図11及び図12に関連して説明される。メ
ソッド・テーブル475へのアクセスが実行されると、
クライアント・プログラムはcreate_new_object_p 44
2を通じて、システム・オブジェクト・マネージャ11
5を呼出す。
【0040】図6は、システム・オブジェクト・マネー
ジャ115の内部作業の流れ図である。システム・オブ
ジェクト・マネージャ115は、ブロック340で最初
にオブジェクトを生成する。この例では、オブジェクト
・インスタンス445(John)が生成される(図10に
示される)。ユーザは次にブロック344で、オブジェ
クト名を入力するように促され、引き続きブロック34
6ではクラス及びレベルを、更にブロック348ではオ
ブジェクト・インスタンス変数の値を入力するように促
される。この値は図10の447に示される。システム
・オブジェクト・マネージャ115は、次にブロック3
50で、この情報をオブジェクト445に書込む。オブ
ジェクト445は、次にインタフェース・テーブル45
0(すなわちクラスEngineerに対応するインタフェース
・テーブル)にリンクされる。エンジニア"John"に関す
るデータを処理しようと望むクライアント・プログラム
は、次に、オブジェクト・インスタンスJohnを呼出す。
【0041】C++の欠点:図18は、C++におけるOO
P環境の基本となる主な複合データ構造を示す。オブジ
ェクト・インスタンス500及び510は、エンジニア
John及びJoe に対応するオブジェクト・インスタンス
が、C++環境において存在する様子を表している。仮想
ファンクション・テーブル505は、オブジェクト・イ
ンスタンスJohn及びJoeがそのメンバとして含まれるク
ラス(すなわちEngineer)、及びEngineerがサブクラス
として含まれる全てのスーパー・クラス(すなわちスー
パー・クラスPersonnel 及びRoot)のメソッド・プログ
ラムを指示するメソッド・ポインタを含む。
【0042】従来の技術で述べられたように、C++環境
は、特定のクラスにメソッド・プログラム或いはデータ
を追加する必要が生ずる場合、極めて硬直的である。特
定のクラスのオブジェクトのデータが変更を要すると
き、或いは特定のクラスのオブジェクトのメソッドが追
加されるとき、変更されるクラスのメンバである全ての
オブジェクト、及び変更されるクラスのサブクラスのメ
ンバである全てのオブジェクトが、再生されなければな
らず、それらのメソッド・プログラムが再コンパイルさ
れなければならない。更に、それらのオブジェクトの全
てのクライアントについても、再コンパイルされなけれ
ばならない。この硬直性は、C++データ構造の設計に起
因する。
【0043】C++への新たなメソッド・プログラムの追
加:C++環境において、クライアント・プログラムがオ
ブジェクトに経路指定されるとき、メソッド・プログラ
ムを表す仮想ファンクション・テーブル内の入力のオフ
セットが、呼出しステートメントの一部として、呼出さ
れる。図18に示されるように、全階層のメソッド・プ
ログラムに対するポインタは、仮想ファンクション・テ
ーブル505にスタックされる。メソッド・プログラム
を特定のクラスに追加する必要が生じるとき、特定のク
ラスのサブクラスのメソッド・プログラムに対するメソ
ッド・プログラム・ポインタは、全て構造内でシフト・
ダウンされる(すなわち、それらのオフセットが変化す
る)。例えば、メソッド・プログラムをクラスPersonne
l に追加する場合、メソッド・プログラムのアドレスが
507に挿入される。新たなメソッド・プログラムに対
するポインタが、次に以前に"開発分野更新"メソッド・
プログラムに対するポインタ(すなわちupdate_dev_are
a_p 506)により占有されていたオフセットに配置さ
れる。"開発分野更新"メソッド・プログラムに対するポ
インタは、以前に"現行プロジェクト更新" に対するポ
インタにより占有されていたロケーションに、シフト・
ダウンされる。
【0044】この"シフト"作用は、クラスPersonnel の
オブジェクトに経路指定される全てのクライアント・プ
ログラムの再コンパイル(すなわち新たなメソッドの存
在を認識するため)、及び旧メソッド・プログラムの新
たなオフセットを認識するために、クラスPersonnel
(すなわちEngineer)のサブクラスに対応する全てのク
ライアント・プログラムの再コンパイルを必要とする。
【0045】C++クラスへの新たなインスタンス変数定
義の追加:C++ OOP環境は、特定のクラスへの新た
なインスタンス変数定義の追加の必要に際しても類似の
問題を有する。例えば、新たなインスタンス変数定義
(例えば"パテント数")がクラスPersonnel に対応して
要求される場合、それはオブジェクト・インスタンスJo
hnの502に挿入される必要がある。これはEngineerイ
ンスタンス・データをアクセスする全てのメソッド・プ
ログラムの再コンパイルを要求する。なぜなら、こうし
た再コンパイルを実行しないと、それらのメソッド・プ
ログラムが、Engineerクラス・インスタンス・データの
第1のフィールド(すなわち開発分野フィールド)をア
クセスするとき、Personnel クラス・インスタンス・デ
ータの最後のフィールド(すなわち新たなパテント数フ
ィールド)をアクセスすることになるからである。更
に、これらのメソッドの再コンパイルは、まだ変更され
ていないクラスEngineerのオブジェクト(例えばオブジ
ェクト・インスタンスJoe )に対するオペレーションを
無意味なものとするため、クラスEngineerの全てのオブ
ジェクト、及びクラスEngineerのサブクラスのメンバで
ある全てのオブジェクトもまた、再生されなければなら
ない。
【0046】更に、全てのクライアント・プログラム
は、呼出したいオブジェクトのオブジェクト長を知る必
要がある。これはC++オブジェクトがランタイムにおい
て生成されることによる。従って、新たなインスタンス
変数"パテント数"の追加が、クラスEngineer及びEngine
erのサブクラスのオブジェクト・インスタンスのサイズ
を変更したとき、オブジェクト・インスタンスを生成す
るクライアント・プログラムもまた、再コンパイルされ
なければならない。
【0047】多くの場合において、特定クラスのオブジ
ェクトのインスタンス・データに対する特定の変更によ
り、どのオブジェクト及びクライアント・プログラムが
影響されたかを判断するよりも、全てのコードを単に再
コンパイルすることの方が、容易である。しかしなが
ら、このタイプの再コンパイルは、それを実行するため
にまる一日を費やす可能性がある。
【0048】スモールトークの欠点:図19は、スモー
ルトーク OOP環境において基本となる主複合データ
構造を示す。オブジェクト・インスタンス600及び6
10は、スモールトーク環境において、エンジニアJohn
及びJoe に対応するオブジェクト・インスタンスが存在
する様子を表す。C++環境の場合と異なり、スモールト
ーク OOP環境では、階層内に各クラスに対応するビ
ヘイビュア・テーブル(behavior table)を含む。これ
らは図19において、クラスEngineerに対応するビヘイ
ビュア・テーブル605、スーパー・クラスPersonnel
に対応するビヘイビュア・テーブル615、スーパー・
クラスRootに対応するビヘイビュア・テーブル620と
して示されている。
【0049】スモールトークのクラスへのメソッド・プ
ログラムの追加:この設計の違いは、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のオブジェクトを使用するクライアント・
プログラムの再コンパイルは要求されない。新たなメソ
ッド・プログラムへのアクセスを獲得する必要のあるク
ライアント・プログラムだけが、再コンパイルを要す
る。
【0050】メソッド・プログラムの効率的アクセス:
しかしながら、この利点に関連するランタイム・コスト
は重要である。図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でメソッド・プログラムが呼出され
る。当業者においては周知のように、これらのテーブル
・アクセス及び探索は、極めてランタイム集中型であ
る。また、レベルの数が増えるほど、高レベルのメソッ
ド・プログラムを呼出すコストが増加することも重要な
点である。更に、メソッド・プログラムの呼出しに関連
するオーバーヘッドがレベルにより変化するため、全体
的システム性能を予測することが困難である。
【0051】スモールトーク・クラスへの新たなインス
タンス変数定義の追加:スモールトーク環境は、メソッ
ド・プログラムが相当量の再コンパイルを要せずに、ク
ラスに追加できる点でC++ OOP環境に勝るが、スモ
ールトーク OOP環境は、C++のインスタンス・デー
タ追加問題を共有する。図21はこの問題を説明するた
めに用いられる。上述のように、ユーザがオブジェクト
Steve がメンバとして含まれるクラス(すなわちEngine
er)に、インスタンス変数定義 "パテント数"を追加す
ることを望むと、これはオブジェクト・インスタンスSt
eveの702に挿入される必要がある。このことは、Eng
ineerインスタンス・データをアクセスする全てのメソ
ッド・プログラムの再コンパイルを要求する。なぜな
ら、こうした再コンパイルを実行しない場合、Engineer
クラス・インスタンス・データの第1フィールド(すな
わち開発分野フィールド)をアクセスしようとすると、
それらのメソッドは、Personnel クラス・インスタンス
・データの最後のフィールド(すなわち新たなパテント
数フィールド)をアクセスしてしまうからである。更に
これらのメソッドの再コンパイルは、まだ変更されてい
ないクラスEngineerのオブジェクト(例えばオブジェク
ト・インスタンスJoe 705)に対するオペレーション
を無効にするので、クラスEngineerの全てのオブジェク
ト、及びクラスEngineerのサブクラスのメンバである全
てのオブジェクトについても、再生されなければならな
い。
【0052】C++環境の場合と同様、特定のクラスのオ
ブジェクトのインスタンス・データに対する特定の変更
により影響を受けるオブジェクト及びクライアント・プ
ログラムを判断するよりも、全てのコード・ベースを再
コンパイルし、全てのオブジェクトを再生することの方
がより単純である。しかしながら、既に述べたように、
このタイプの再コンパイルには多くの時間を要する。
【0053】NOM OOP環境の利点:図11は本発
明の主複合データ構造を示す。オブジェクト・インスタ
ンス800及び810は、エンジニアJohn及びJoe に対
応するオブジェクト・インスタンスが、NOM環境にお
いて存在する様子を表す。C++及びスモールトーク環境
の場合と異なり、NOM OOP環境は、クラスEngine
erに対するインタフェース・テーブル(すなわちインタ
フェース・テーブル805)、及び階層内の各クラスに
対するメソッド・テーブルを含む。これらのメソッド・
テーブルは、図11では、クラスEngineerに対応するメ
ソッド・テーブル825、スーパー・クラスPersonnel
に対応するメソッド・テーブル820、及びスーパー・
クラスRootに対応するメソッド・テーブル815として
示される。
【0054】これらの違いは、NOM OOP環境のユ
ーザに対し、C++及びスモールトーク OOP環境のユ
ーザによって実現されなかった利点を提供する。スモー
ルトーク OOP環境のユーザの場合同様、NOM環境
のユーザは、メソッド・プログラムを特定のクラスに追
加するために、全てのコード・ベースを再コンパイルす
る必要はない。しかしながら、NOM環境は、スモール
トーク環境の場合よりも、より効率的なメソッド解析を
可能とする。更に、NOM環境は、C++及びスモールト
ーク環境の場合の、インスタンス・データ定義の欠点を
共有しない。
【0055】NOMクラスへのメソッド・プログラムの
追加:NOMクラスへのメソッド・プログラムの追加を
説明するために、上述のように、ユーザがクラスPerson
nel に対して、メソッド・プログラムを追加することを
望むものと仮定する。メソッド・プログラムに対するポ
インタが、クラスPersonnel に対応するメソッド・プロ
グラム(すなわちメソッド・テーブル820)の822
に追加される。スモールトーク環境の場合同様、C++の
場合とは異なりその際シフトは発生せず、クラスEngine
erに対応するメソッド・プログラムに対するポインタ
(すなわちupdate_dev_area_p827、及びupdate_curr
_prj_p829)が変位される。従って、クラスEngineer
のオブジェクトを使用するクライアント・プログラム
は、再コンパイルを必要としない。新たなメソッド・プ
ログラムへのアクセスを獲得する必要のあるクライアン
ト・プログラムだけが、再コンパイルを要することにな
る。
【0056】メソッド・プログラムの効率的アクセス:
図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でシグニチャは一致する。
【0057】ブロック865では、クライアント・プロ
グラムはメソッド・テーブル820(すなわちクラスPe
rsonnel に対応するメソッド・テーブル)へのアクセス
を獲得するために、Per_meth_tbl_p808を使用し、ブ
ロック870では、適切なメソッド・プログラムをアク
セスするためにメソッド・オフセットを使用し、その後
ブロック875で、"給与更新"メソッド・プログラムを
呼出す。NOMメソッド解析もまた、クライアント・プ
ログラムがメソッド・プログラムに、オブジェクトI
D、インタフェース・テーブルへのポインタ、及びクラ
ス・レベルを渡すように要求する。この情報の利用につ
いては、図13乃至図15に関連して説明される。
【0058】上述の説明から、NOM環境のメソッド・
プログラムのアクセスは、スモールトークの場合よりも
極めて効率的であると言える。NOM環境のメソッド・
プログラムのアクセスは、固定数(すなわち2)のテー
ブル・ルックアップ、及び1回の呼出しを要求するが、
スモールトークのメソッド・プログラムのアクセスで
は、不経済な一連のテーブル・アクセス及び探索を含
む。確かに、スモールトークのメソッド経路の各探索
は、ハッシュ・ベースの探索により高速化されるが、ハ
ッシュ・ファンクションは、少なくとも全てのNOMメ
ソッド経路の数の命令を必要とする。もちろん、第1の
ビヘイビュア・テーブルに見い出されないメソッド・プ
ログラム・ポインタに対応するメソッド解析には、より
多くの時間を要する。
【0059】NOMクラスへの新たなインスタンス変数
定義の追加:上述のように、NOM OOP環境は、新
たなインスタンス変数定義が要求されるときに、大量の
再コンパイルを必要としない点で、C++及びスモールト
ークの場合よりも優れている。NOM複合データ構造
は、オブジェクトの異なるバージョンを共存させ、また
オブジェクトの旧バージョンから新バージョンへの変更
を可能とすることにより、こうした利点を提供する。
【0060】説明の都合上、エンジニアJohnとSteve を
雇う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 を、"バック・レベル"として残すこと
を選択する。
【0061】NOMバージョン:図13及び図14は、
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の場合とは異なる。
【0062】これらの間の最小の相違に関する利点につ
いて、例を用いて示すことにする。上述のように、エン
ジニアJohn及びSam に対応するオブジェクト・インスタ
ンスは、異なるバージョンである。これはSam は2つの
パテントを有しているがJohnはまだパテントを作成して
いないことに起因する。それにもかかわらず、この相違
はクライアント、或いは他のインスタンス変数を扱うメ
ソッド・プログラムには影響を与えない。この例は、"
現行プロジェクト"フィールド903及び914の値の
変更を要する。"パテント数"フィールド912の追加
は、 "現行プロジェクト" フィールド903及び914
だけを扱うメソッド・プログラムの再コンパイルを引起
こすべきではない。C++環境及びスモールトーク環境の
場合とは異なり、こうした再コンパイルは、NOM環境
においては不要となる。
【0063】次に説明の都合上、NOMプロジェクトが
完了して、エンジニアSam とJohnが別のプロジェクトに
移行するものと仮定する。NOMパテントはまだ認可さ
れていないため、Johnはまだパテントを作成しておら
ず、従って、彼のオブジェクト・インスタンスのバージ
ョンをEngineerからEngineer_II に変更する必要はな
い。それにもかかわらず、エンジニアJohnとSam が異な
るプロジェクトに移行することを反映して、"現行プロ
ジェクト"フィールド903及び"現行プロジェクト"フ
ィールド914の値を変更することが必要となる。従っ
て、新たなプロジェクトへの移行を反映させるために、
オブジェクト・インスタンスを変更する責任を負うユー
ザは、その変更を実行するために、クライアント・プロ
グラムを開始する。クライアント・プログラムは"現行
プロジェクト"フィールド903を更新するために、最
初にオブジェクトJohnに経路指定される。クライアント
・プログラムは最終的には、メソッド・テーブル920
内のupdate_curr_prj_p ポインタ927を介して、"現
行プロジェクト更新"メソッド・プログラムを呼出す。
ここで各バージョンが、クラスEngineerに対応するメソ
ッド・テーブル(すなわちメソッド・テーブル920及
び925)のコピーを有し、そこに記憶されるポインタ
が、同一のメソッド・プログラム(すなわち同じ実行可
能コード)を指示する点に注目することが重要である。
【0064】NOMメソッド解析については、既に図1
1及び図12に関連して説明されており、ここでは繰返
さないが、前述の説明で述べたように、NOMメソッド
・プログラムは、インタフェース・テーブルに対するポ
インタ(すなわちinterface_tbl_p 901)、呼出され
るクラス・レベル、及びオブジェクトID(すなわちオ
ブジェクトID904)を渡される。この場合、"現行
プロジェクト更新"メソッド・プログラムは、Eg_instan
ce_data_oフィールド907に記憶されるオフセットへ
のアクセスを獲得するために、この情報を使用する。こ
の情報はオブジェクトID904と一緒に使用されて、
メソッド・プログラムが現行プロジェクト・フィールド
903に対する適切な変更を実施することを許可する。
【0065】クライアント及びメソッド・プログラムの
観点から、オブジェクトSam に対する同じ変更(すなわ
ち現行プロジェクト・フィールド914の更新)は、同
様にして処理される。"現行プロジェクト更新"メソッド
・プログラムが再度呼出され、適切なインタフェース・
テーブル・ポインタ、クラス・レベル、オブジェクトI
D、及びインスタンス・データ・オフセットを介し
て、"現行プロジェクト"フィールド(この場合、現行プ
ロジェクト・フィールド914)に対するアクセスを再
び獲得する。これらのフィールドは、オブジェクト90
0の同一のフィールドを更新するために使用された値と
は異なる値を有するが、こうした事実はメソッド・プロ
グラムにとっては重要でない。当然、こうした相違は予
想される。このように、"バージョン化"を通じて、イン
スタンス・データ定義"パテント数"の追加が、オブジェ
クト・インスタンス、クライアント・オブジェクト、及
び変更により直接的に影響を受けないメソッド・プログ
ラムの再コンパイルを要せずに、特定のオブジェクト・
インスタンスに対して実施される。
【0066】図15は、オブジェクト・インスタンスの
異なるバージョンを生成するために、NOM環境におい
て使用される方法を示す。新たなバージョンを生成しよ
うと望むユーザは、ブロック950でバージョン・マネ
ージャ110を呼出す。バージョン・マネージャ110
は、ブロック952で、ユーザに"バージョン化"される
クラスを催促することにより、応答する。ユーザは次に
ブロック954で、新たなインスタンス変数定義の入力
を催促される。バージョン・マネージャ110は、次に
ブロック956で、以前のバージョンからクラス・オブ
ジェクトをコピーし、ブロック958で新たなクラス・
オブジェクトを生成し、新たなインスタンス変数定義の
ために調整する。バージョン・マネージャ110は、次
にブロック960で、以前のバージョンからインタフェ
ース・テーブルをコピーし、ブロック962で、クラス
・オブジェクトをインタフェース・テーブルに、またイ
ンタフェース・テーブルを適切なメソッド・テーブルに
リンクするように、ポインタを調整する。次にバージョ
ン・マネージャ110は、ブロック970で "バージョ
ン化" されるサブクラスが存在するかを判断する。存在
する場合には、バージョン・マネージャは、ブロック9
80で1レベル下がり、ブロック956で処理を継続す
る。ブロック970で"バージョン化"されるサブクラス
が存在せず、ブロック976でユーザが別のクラスを"
バージョン化"する意志がない場合、処理はブロック9
78で終了する。
【0067】NOMの変形:上述のように、特定のオブ
ジェクト・インスタンスのバージョンを変更するため
に、NOMの変形が使用される。例えば、オブジェクト
・インスタンスSteveについて考えてみよう。XYZ社
が、特許及び登録商標オフィス(the Patentand Tradem
ark Office)から、エンジニアSteve が発明者である特
許出願が認可されたことを伝えられたとする。XYZ社
はこの時、新たなパテント情報が追加されるように、エ
ンジニアSteveがクラスEngineer_IIであることを表すオ
ブジェクト・インスタンスを更新しなければならない。
図16及び図17は、NOMの変形が発生する様子を示
す。
【0068】処理を開始するために、クライアント・プ
ログラムは、メソッド・テーブル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のオブジェクトとして、完全
に動作可能となる。
【0069】
【本発明の別の実施例】本発明の別の実施例では、"バ
ージョン化"は、各バージョンに対応する新たなクラス
・オブジェクトの生成(図15のブロック956及び9
58で表される)を含まない。その代わりに、バージョ
ン・マネージャ110が標準の方法により呼出された後
(図15参照)、存在するクラス・オブジェクトが新た
なインスタンス変数定義を含むように変更される。この
時点で、処理は先の実施例で述べられたように継続され
る。インタフェース・テーブル・ポインタは、新たなバ
ージョンに対応する新たなインタフェース・テーブルを
指示するように調整されるため(図15のブロック96
2参照)、同一のクラスの複数のバージョンを表す複数
のクラス・オブジェクトを有さなくても、その結果は同
じである。サブクラスが"バージョン化"されると、サブ
クラス・クラス・オブジェクトは、全てのサブクラス
が"バージョン化"されるまで、同じ変更を経験する。
【0070】
【発明の効果】以上説明したように、本発明によれば、
改良されたOOP環境が提供される。
【図面の簡単な説明】
【図1】好適実施例のコンピュータ・システムを示す図
である。
【図2】本発明のOOP環境を説明するために使用され
る仮のOOP構成を示す図である。
【図3】NOMインタフェース・テーブルの詳細図であ
る。
【図4】NOM OOP環境が生成される流れ図であ
る。
【図5】NOM OOP環境が生成される流れ図であ
る。
【図6】NOM OOP環境が生成される流れ図であ
る。
【図7】NOM環境を構成するデータ構造が実際に生成
され、記憶装置に表される様子を示す、図8乃至図10
に関連して使用される図である。
【図8】NOM環境を構成するデータ構造が実際に生成
され、記憶装置に表される様子を示す、図8乃至図10
に関連して使用される図である。
【図9】NOM環境を構成するデータ構造が実際に生成
され、記憶装置に表される様子を示す、図8乃至図10
に関連して使用される図である。
【図10】NOM環境を構成するデータ構造が実際に生
成され、記憶装置に表される様子を示す、図8乃至図1
0に関連して使用される図である。
【図11】オブジェクト・インスタンス例がNOM環境
において表される様子を示す図である。
【図12】NOM OOP環境において使用されるメソ
ッド経路指定手法を示す図である。
【図13】NOM OOP環境において、オブジェクト
・インスタンス・データ定義の追加が扱われる様子を示
す図である。
【図14】NOM OOP環境において、オブジェクト
・インスタンス・データ定義の追加が扱われる様子を示
す図である。
【図15】NOM OOP環境において、オブジェクト
・インスタンス・データ定義の追加が扱われる様子を示
す図である。
【図16】NOMのオブジェクトがあるバージョンから
別のバージョンに変換される様子を示す図である。
【図17】NOMのオブジェクトがあるバージョンから
別のバージョンに変換される様子を示す図である。
【図18】オブジェクト・インスタンス例がC++ OO
P環境において表される様子を示す図である。
【図19】オブジェクト・インスタンス例がスモールト
ーク OOP環境において表される様子を示す図であ
る。
【図20】スモールトーク OOP環境において使用さ
れるメソッド経路指定手法を示す図である。
【図21】スモールトーク OOP環境のオブジェクト
・インスタンス例に、オブジェクト・インスタンス・デ
ータ定義を追加する場合の影響を示す図である。
【符号の説明】
100 コンピュータ・システム 105 中央処理ユニット 110 バージョン・マネージャ 115 システム・オブジェクト・マネージャ 117 クラス定義ユーティリティ 120 クライアント・プログラム 125 オブジェクト 130 メソッド・プログラム 135 オペレーティング・システム 140 データ記憶装置 145 端末インタフェース 150 システム・バス 200 クラス"Root" 202 "オブジェクト名" 204 "オブジェクト・クラス" 205 クラスPersonnel 207 "従業員番号" 209 "給与" 210 クラスFinance 215 クラスLawyer 220 クラスEngineer 221 "開発分野" 223 "現行プロジェクト" 235 John 240 Joe 245 Sam 250 Steve 255 クラスPersonnel_II 261 "パテント番号" 275 NOMインタフェース・テーブル 280、421、423、807 インタフェース・テ
ーブル入力 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ポインタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スティーブン・ジェイ・マンロー アメリカ合衆国55901、ミネソタ州ロチェ スター、ノース・ウエスト、サーティサー ド・ストリート 1320 (72)発明者 ロバート・ピーター・レスチ アメリカ合衆国55920、ミネソタ州バイロ ン、ノース・ウエスト、メイプル・ドライ ブ 6911

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】オブジェクト・インスタンスと、 各々がメソッド・プログラムに関するロケーション情報
    を含む第1及び第2のメソッド・テーブルと、 上記第1のメソッド・テーブル及び上記第2のメソッド
    ・テーブルに関するロケーション情報を含み、上記オブ
    ジェクト・インスタンスに含まれる接続手段を介して、
    上記オブジェクト・インスタンスに接続されるインタフ
    ェース・テーブルと、 を含む複合データ構造。
  2. 【請求項2】複合データ構造を生成及び記憶する方法で
    あって、 オブジェクト・インスタンスを生成するステップと、 インタフェース・テーブルを生成するステップと、 第1及び第2のメソッド・テーブルを生成するステップ
    と、 上記インタフェース・テーブルを、上記オブジェクト内
    に配置される接続手段を介して、上記オブジェクト・イ
    ンスタンスに接続するステップと、 上記メソッド・テーブルが、上記インタフェース・テー
    ブルに含まれるロケーション情報を介して、上記インタ
    フェース・テーブルに個々に接続されるように、上記第
    1及び上記第2のメソッド・テーブルを上記インタフェ
    ース・テーブル接続するステップと、 メソッド・プログラムが、上記第1及び上記第2のメソ
    ッド・テーブルに含まれるロケーション情報を介して、
    上記メソッド・テーブルに個々に接続されるように、上
    記メソッド・プログラムを各上記メソッド・テーブルに
    接続するステップと、 を含む方法。
  3. 【請求項3】クラス・オブジェクトと、 各々がメソッド・プログラムに関するロケーション情報
    を含む第1及び第2のメソッド・テーブルと、 上記第1のメソッド・テーブル及び上記第2のメソッド
    ・テーブルに関するロケーション情報を含み、上記オブ
    ジェクト・インスタンスに含まれる接続手段を介して、
    上記オブジェクト・インスタンスに接続されるインタフ
    ェース・テーブルと、 を含む複合データ構造。
  4. 【請求項4】複合データ構造を生成及び記憶する方法で
    あって、 クラス・オブジェクトを生成するステップと、 インタフェース・テーブルを生成するステップと、 第1及び第2のメソッド・テーブルを生成するステップ
    と、 上記インタフェース・テーブルを、上記クラス・オブジ
    ェクト内に配置される接続手段を介して、上記クラス・
    オブジェクトに接続するステップと、 上記メソッド・テーブルが上記インタフェース・テーブ
    ルに含まれるロケーション情報を介して、上記インタフ
    ェース・テーブルに個々に接続されるように、上記第1
    及び上記第2のメソッド・テーブルを上記インタフェー
    ス・テーブル接続するステップと、 メソッド・プログラムが上記第1及び上記第2のメソッ
    ド・テーブルに含まれるロケーション情報を介して、上
    記メソッド・テーブルに個々に接続されるように、上記
    メソッド・プログラムを各上記メソッド・テーブルに接
    続するステップと、 を含む方法。
  5. 【請求項5】特定のクラスに対応するメソッド・プログ
    ラムを呼出す方法であって、 オブジェクトのアドレス、上記呼出しが指向される上記
    クラスを表すレベル、及び呼出される上記メソッド・プ
    ログラムを表すメソッド・プログラム・オフセットを含
    む呼出しステートメントを介して、上記オブジェクトを
    呼出すステップと、 上記オブジェクト・アドレスを介して、上記オブジェク
    トをアクセスするステップと、 上記オブジェクトに記憶されるインタフェース・テーブ
    ル・アドレスを介して、インタフェース・テーブルをア
    クセスするステップと、 上記インタフェース・テーブルに記憶されて、上記レベ
    ルを介して決定されるメソッド・テーブル・アドレスを
    介して、メソッド・テーブルをアクセスするステップ
    と、 上記メソッド・プログラム・アドレスを通じて、上記メ
    ソッド・プログラムを呼出すステップと、 を含む方法。
  6. 【請求項6】オブジェクト指向のプログラミング環境を
    生成する方法であって、 Rootクラス・インタフェース・テーブルに接続されるRo
    otクラス・オブジェクト、Rootクラス・メソッド・テー
    ブルに接続されるRootクラス・インタフェース・テーブ
    ル、及び上記Rootクラス・メソッド・テーブルを含むRo
    otクラスを生成するステップと、 上記Rootクラスに対して、Xレベルのサブクラスを生成
    するステップとを含む方法であって、Xは1よりも大き
    い正の整数であり、各上記Xレベルのサブクラスは、各
    々が特定のクラス・オブジェクト、クラス・インタフェ
    ース・テーブル、クラス・メソッド・テーブル、及びX
    スーパー・クラス・クラス・メソッド・テーブルを含む
    第1のクラス及び第2のクラスを含み、上記クラス・イ
    ンタフェース・テーブルが上記クラス・オブジェクト及
    び上記クラス・メソッド・テーブルに接続され、上記X
    スーパー・クラス・クラス・メソッド・テーブルが、上
    記クラス・インタフェース・テーブルに接続される方
    法。
  7. 【請求項7】オブジェクト指向プログラミング環境を変
    更する方法であって、 クラス・オブジェクトが新たなインスタンス変数定義を
    含み、新たなクラスインタフェース・テーブルに接続さ
    れるように、クラスの新たなバージョンを生成するため
    に、上記クラスの上記クラス・オブジェクトを変更する
    ステップと、 上記クラスのサブクラスを表すサブクラス・クラス・オ
    ブジェクトが上記新たなインスタンス変数定義を含み、
    新たなサブクラス・インタフェース・テーブルに接続さ
    れるように、上記クラスの上記サブクラスの新たなバー
    ジョンを生成するために、上記クラスの上記サブクラス
    を表す全ての上記サブクラス・クラス・オブジェクトを
    変更するステップとを含む方法。
  8. 【請求項8】オブジェクト指向プログラミング環境を変
    更する方法であって、 旧クラス・オブジェクトにより表されるクラスの新たな
    バージョンを表す新たなクラス・オブジェクトを生成す
    るステップと、 上記クラスの上記新たなバージョンに対応する新たなク
    ラス・インタフェース・テーブル及び新たなクラス・メ
    ソッド・テーブルを生成するステップと、 上記クラスの各サブクラスに対応する新たなサブクラス
    ・クラス・オブジェクトを生成するステップと、 上記各サブクラスに対応する新たなサブクラス・クラス
    ・インタフェース・テーブルと、各上記サブクラスに対
    応する新たなサブクラス・クラス・メソッド・テーブル
    を生成するステップと、 各上記サブクラスのスーパー・クラスに対応するメソッ
    ド・テーブルである全てのクラス・メソッド・テーブル
    をコピーするステップとを含む方法。
  9. 【請求項9】複合データ構造を生成及び記憶する装置で
    あって、 オブジェクト・インスタンスを生成する手段と、 インタフェース・テーブルを生成する手段と、 第1及び第2のメソッド・テーブルを生成する手段と、 上記インタフェース・テーブルを、上記オブジェクト内
    に配置される接続手段を介して、上記オブジェクト・イ
    ンスタンスに接続する手段と、 上記メソッド・テーブルが、上記インタフェース・テー
    ブルに含まれるロケーション情報を介して、上記インタ
    フェース・テーブルに個々に接続されるように、上記第
    1及び上記第2のメソッド・テーブルを上記インタフェ
    ース・テーブル接続する手段と、 メソッド・プログラムが、上記第1及び上記第2のメソ
    ッド・テーブルに含まれるロケーション情報を介して、
    上記メソッド・テーブルに個々に接続されるように、上
    記メソッド・プログラムを各上記メソッド・テーブルに
    接続する手段と、 を含む装置。
  10. 【請求項10】複合データ構造を生成及び記憶する装置
    であって、 クラス・オブジェクトを生成する手段と、 インタフェース・テーブルを生成する手段と、 第1及び第2のメソッド・テーブルを生成する手段と、 上記インタフェース・テーブルを、上記クラス・オブジ
    ェクト内に配置される接続手段を介して、上記クラス・
    オブジェクトに接続する手段と、 上記メソッド・テーブルが、上記インタフェース・テー
    ブルに含まれるロケーション情報を介して、上記インタ
    フェース・テーブルに個々に接続されるように、上記第
    1及び上記第2のメソッド・テーブルを上記インタフェ
    ース・テーブル接続する手段と、 メソッド・プログラムが、上記第1及び上記第2のメソ
    ッド・テーブルに含まれるロケーション情報を介して、
    上記メソッド・テーブルに個々に接続されるように上記
    メソッド・プログラムを各上記メソッド・テーブルに接
    続する手段と、 を含む装置。
  11. 【請求項11】特定のクラスに対応するメソッド・プロ
    グラムを呼出す装置であって、 オブジェクトのアドレス、上記呼出しが指向される上記
    クラスを表すレベル、及び呼出される上記メソッド・プ
    ログラムを表すメソッド・プログラム・オフセットを含
    む呼出しステートメントを介して、上記オブジェクトを
    呼出す手段と、 上記オブジェクト・アドレスを介して、上記オブジェク
    トをアクセスする手段と、 上記オブジェクトに記憶されるインタフェース・テーブ
    ル・アドレスを介して、インタフェース・テーブルをア
    クセスする手段と、 上記インタフェース・テーブルに記憶されて、上記レベ
    ルを介して決定されるメソッド・テーブル・アドレスを
    介して、メソッド・テーブルをアクセスする手段と、 上記メソッド・プログラム・アドレスを通じて、上記メ
    ソッド・プログラムを呼出す手段と、 を含む装置。
  12. 【請求項12】オブジェクト指向のプログラミング環境
    を生成する装置であって、 Rootクラス・インタフェース・テーブルに接続されるRo
    otクラス・オブジェクト、Rootクラス・メソッド・テー
    ブルに接続されるRootクラス・インタフェース・テーブ
    ル、及び上記Rootクラス・メソッド・テーブルを含むRo
    otクラスを生成する手段と、 上記Rootクラスに対して、Xレベルのサブクラスを生成
    する手段とを含む方法であって、Xは1よりも大きい正
    の整数であり、各上記Xレベルのサブクラスは、各々が
    特定のクラス・オブジェクト、クラス・インタフェース
    ・テーブル、クラス・メソッド・テーブル、及びXスー
    パー・クラス・クラス・メソッド・テーブルを含む第1
    のクラス及び第2のクラスを含み、上記クラス・インタ
    フェース・テーブルが上記クラス・オブジェクト及び上
    記クラス・メソッド・テーブルに接続され、上記Xスー
    パー・クラス・クラス・メソッド・テーブルが、上記ク
    ラス・インタフェース・テーブルに接続される、 装置。
  13. 【請求項13】オブジェクト指向プログラミング環境を
    変更する装置であって、 クラス・オブジェクトが新たなインスタンス変数定義を
    含み、新たなクラス・インタフェース・テーブルに接続
    されるように、クラスの新たなバージョンを生成するた
    めに、上記クラスの上記クラス・オブジェクトを変更す
    る手段と、 上記クラスのサブクラスを表すサブクラス・クラス・オ
    ブジェクトが上記新たなインスタンス変数定義を含み、
    新たなサブクラス・インタフェース・テーブルに接続さ
    れるように、上記クラスの上記サブクラスの新たなバー
    ジョンを生成するために、上記クラスの上記サブクラス
    を表す全ての上記サブクラス・クラス・オブジェクトを
    変更する手段と、 を含む装置。
  14. 【請求項14】オブジェクト指向プログラミング環境を
    変更する装置であって、 旧クラス・オブジェクトにより表されるクラスの新たな
    バージョンを表す新たなクラス・オブジェクトを生成す
    る手段と、 上記クラスの上記新たなバージョンに対応する新たなク
    ラス・インタフェース・テーブル及び新たなクラス・メ
    ソッド・テーブルを生成する手段と、 上記クラスの各サブクラスに対応する新たなサブクラス
    ・クラス・オブジェクトを生成する手段と、 上記各サブクラスに対応する新たなサブクラス・クラス
    ・インタフェース・テーブルと、各上記サブクラスに対
    応する新たなサブクラス・クラス・メソッド・テーブル
    を生成する手段と、 各上記サブクラスのスーパー・クラスに対応するメソッ
    ド・テーブルである全てのクラス・メソッド・テーブル
    をコピーする手段と、 を含む装置。
JP5216496A 1992-09-30 1993-08-31 オブジェクト指向プログラミング環境を変更するための方法及び装置 Expired - Lifetime JP2986042B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03257530A (ja) * 1990-03-07 1991-11-18 Fujitsu Ltd オブジェクト指向プログラムの実行処理方式

Family Cites Families (25)

* Cited by examiner, † Cited by third party
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03257530A (ja) * 1990-03-07 1991-11-18 Fujitsu Ltd オブジェクト指向プログラムの実行処理方式

Cited By (5)

* Cited by examiner, † Cited by third party
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