JP2597460B2 - 複合データ構造を生成及び記憶する方法及び装置 - Google Patents
複合データ構造を生成及び記憶する方法及び装置Info
- Publication number
- JP2597460B2 JP2597460B2 JP5273354A JP27335493A JP2597460B2 JP 2597460 B2 JP2597460 B2 JP 2597460B2 JP 5273354 A JP5273354 A JP 5273354A JP 27335493 A JP27335493 A JP 27335493A JP 2597460 B2 JP2597460 B2 JP 2597460B2
- Authority
- JP
- Japan
- Prior art keywords
- class
- interface
- interface table
- program
- instance
- 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.)
- Expired - Lifetime
Links
Classifications
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【0001】
【産業上の利用分野】本発明はデータ処理分野に関し、
特にオブジェクト指向のプログラミング環境に関する。
特にオブジェクト指向のプログラミング環境に関する。
【0002】
【従来の技術】1948年のEDVACコンピュータ・
システムの開発は、しばしばコンピュータ時代の幕開け
と呼ばれている。その時以来、コンピュータ・システム
はアメリカン・ライフ・スタイルのあらゆる分野に浸透
してきた。こうした普及の1つの理由は、コンピュータ
・システムが様々なタスクを効率的に実行する能力を有
することにある。これらのタスクを実行するためにコン
ピュータ・システムにより使用される機構は、コンピュ
ータ・プログラムと呼ばれる。
システムの開発は、しばしばコンピュータ時代の幕開け
と呼ばれている。その時以来、コンピュータ・システム
はアメリカン・ライフ・スタイルのあらゆる分野に浸透
してきた。こうした普及の1つの理由は、コンピュータ
・システムが様々なタスクを効率的に実行する能力を有
することにある。これらのタスクを実行するためにコン
ピュータ・システムにより使用される機構は、コンピュ
ータ・プログラムと呼ばれる。
【0003】コンピュータ・システム自身と同様に、コ
ンピュータ・プログラムの開発も長年に渡り発展してき
た。EDVACシステムは、"1アドレス"コンピュータ
・プログラミング言語と称される言語を使用した。この
言語は、最も初歩的なコンピュータ・プログラムだけを
考慮した。1950年代初期、科学者達は人間に合理的
に理解できるシンボリック命令を、コンピュータ・シス
テムにより理解される形式に変換する機構を開発した。
各コンピュータ・システムは、特定のグループのこれら
の命令を扱うように設計された。これらのグループの命
令は、命令セットと称される。
ンピュータ・プログラムの開発も長年に渡り発展してき
た。EDVACシステムは、"1アドレス"コンピュータ
・プログラミング言語と称される言語を使用した。この
言語は、最も初歩的なコンピュータ・プログラムだけを
考慮した。1950年代初期、科学者達は人間に合理的
に理解できるシンボリック命令を、コンピュータ・シス
テムにより理解される形式に変換する機構を開発した。
各コンピュータ・システムは、特定のグループのこれら
の命令を扱うように設計された。これらのグループの命
令は、命令セットと称される。
【0004】コンピュータ・プログラム開発の次のステ
ップは、コンピュータ・プログラミング言語の概念であ
った。コンピュータ・プログラミング言語は、シンボリ
ック命令セットよりも、より理解しやすいものであっ
た。コンピュータ・プログラムは様々なコンピュータ・
プログラミング言語を用いて作成される。一度作成され
ると、コンピュータ・プログラムは特定のコンピュータ
・システムの命令セットの一部である命令にコンパイル
される。FORTRAN は通常、特定の命令セットと無関係に
作成されるコンピュータ・プログラムの最初の言語とし
て引用される。1960年代までに、コンピュータ・プ
ログラミング言語の改良は、コンピュータ・プログラム
にまで及んだ。なぜなら、コンピュータ・プログラムが
非常に大規模化し、複雑化したため、コンピュータ・プ
ログラムの開発環境及び保守を管理及び制御することが
困難となったためである。
ップは、コンピュータ・プログラミング言語の概念であ
った。コンピュータ・プログラミング言語は、シンボリ
ック命令セットよりも、より理解しやすいものであっ
た。コンピュータ・プログラムは様々なコンピュータ・
プログラミング言語を用いて作成される。一度作成され
ると、コンピュータ・プログラムは特定のコンピュータ
・システムの命令セットの一部である命令にコンパイル
される。FORTRAN は通常、特定の命令セットと無関係に
作成されるコンピュータ・プログラムの最初の言語とし
て引用される。1960年代までに、コンピュータ・プ
ログラミング言語の改良は、コンピュータ・プログラム
にまで及んだ。なぜなら、コンピュータ・プログラムが
非常に大規模化し、複雑化したため、コンピュータ・プ
ログラムの開発環境及び保守を管理及び制御することが
困難となったためである。
【0005】こうして1970年代には、焦点は新たな
プログラミング言語の開発から、大規模なコンピュータ
・プログラムの日増しに進む複雑化及びコストを収容可
能な、プログラミング方法論及び環境の開発に移行し
た。こうした方法論の1つが、オブジェクト指向プログ
ラミング(OOP:Object Oriented Programming )の
アプローチである。OOPの支持者達は、コンピュータ
・プログラミングにおけるこのアプローチにより、コン
ピュータ・プログラマの生産性が25倍程度改良される
と主張する。こうして、OOP概念が最初に開発されて
から、既にある時間が経過したが、現在でもこの概念が
将来的な方法であると見なされている。
プログラミング言語の開発から、大規模なコンピュータ
・プログラムの日増しに進む複雑化及びコストを収容可
能な、プログラミング方法論及び環境の開発に移行し
た。こうした方法論の1つが、オブジェクト指向プログ
ラミング(OOP:Object Oriented Programming )の
アプローチである。OOPの支持者達は、コンピュータ
・プログラミングにおけるこのアプローチにより、コン
ピュータ・プログラマの生産性が25倍程度改良される
と主張する。こうして、OOP概念が最初に開発されて
から、既にある時間が経過したが、現在でもこの概念が
将来的な方法であると見なされている。
【0006】OOPのより基本的な3つの概念は、"カ
プセル化(encapsulation)"、"インヘリタンス(継
承)(inheritance)"及び "再利用性(reusability)"
である。カプセル化は情報及び情報を使用する手段が、
概念的に"オブジェクト"と呼ばれる個々のエンティティ
(entity)にパッケージ化されることを意味する。オブ
ジェクトに含まれる情報はデータと称され、情報に対し
て特定のオペレーションを実行するために使用される手
段は、メソッド(method)と称される。オブジェクトは
コンピュータ・システムにより実行される個々のオペレ
ーションまたはオペレーションのグループを表す。再使
用性の概念は、オブジェクトが他の多くのオブジェクト
のメソッドにより使用可能なように、総称的に作成され
ることを意味する。オブジェクトを使用するプログラム
或いはメソッド・プログラムは、オブジェクトのクライ
アント(すなわちクライアント・プログラム)であると
呼ばれる。クライアントはオブジェクトを呼出す一方
で、使用されるメソッドを指定する。
プセル化(encapsulation)"、"インヘリタンス(継
承)(inheritance)"及び "再利用性(reusability)"
である。カプセル化は情報及び情報を使用する手段が、
概念的に"オブジェクト"と呼ばれる個々のエンティティ
(entity)にパッケージ化されることを意味する。オブ
ジェクトに含まれる情報はデータと称され、情報に対し
て特定のオペレーションを実行するために使用される手
段は、メソッド(method)と称される。オブジェクトは
コンピュータ・システムにより実行される個々のオペレ
ーションまたはオペレーションのグループを表す。再使
用性の概念は、オブジェクトが他の多くのオブジェクト
のメソッドにより使用可能なように、総称的に作成され
ることを意味する。オブジェクトを使用するプログラム
或いはメソッド・プログラムは、オブジェクトのクライ
アント(すなわちクライアント・プログラム)であると
呼ばれる。クライアントはオブジェクトを呼出す一方
で、使用されるメソッドを指定する。
【0007】オブジェクトはまた、オブジェクトの特定
の"クラス"のメンバであると見なされる。オブジェクト
は生成されると、特定のクラスのメンバとなるか、或い
は特定のクラスのサブクラスのメンバであると見なされ
る。サブクラスのメンバとして生成されるオブジェクト
は、そのサブクラスの上のクラス(すなわちそれらのス
ーパー・クラス)の性質(すなわちデータ及びメソッ
ド)を継承すると言われる。例えば、自動車(Vehicle
)と称されるオブジェクト・クラスを考えてみよう。
このクラスは、そのクラスのオブジェクトを示すデータ
(すなわち名前、色、重量、所有者など)を有する。こ
のクラスはまた、このクラスのデータと共に作用するた
めに用いられるメソッドを定義される。クラス「自動
車」のサブクラスであるクラス「陸上自動車(RoadVehi
cle )」は、更にどのタイプの自動車が含まれるかを示
すデータ(すなわち車輪の数などの属性を追加すること
による)を含むようにクラス「自動車」を細かく分類す
る。同様に「水上自動車(WaterVehicle)」と呼ばれる
クラスは、クラス「自動車」が排気量及び喫水などの属
性を含むように細かく分類する。例えば、クラス「陸上
自動車」のオブジェクトは、名前「ブーマ(Boome
r)」、色「赤」、重量「4000lbs」及び所有者
「スティーブ(Steve )」を有するように生成される。
同様に、特定のボートを表すクラス「水上自動車」のオ
ブジェクトが生成される。サブクラスが追加されると、
階層構造が生成される。それぞれサブクラス或いはスー
パー・クラスと呼ばれる各クラスは、階層構造における
特定のレベルに位置するものと見なされる。上述の例で
は、クラス「自動車」のサブクラスであるクラス「陸上
自動車」及びクラス「水上自動車」は、クラス「自動
車」よりも1レベル高いレベルに位置する。
の"クラス"のメンバであると見なされる。オブジェクト
は生成されると、特定のクラスのメンバとなるか、或い
は特定のクラスのサブクラスのメンバであると見なされ
る。サブクラスのメンバとして生成されるオブジェクト
は、そのサブクラスの上のクラス(すなわちそれらのス
ーパー・クラス)の性質(すなわちデータ及びメソッ
ド)を継承すると言われる。例えば、自動車(Vehicle
)と称されるオブジェクト・クラスを考えてみよう。
このクラスは、そのクラスのオブジェクトを示すデータ
(すなわち名前、色、重量、所有者など)を有する。こ
のクラスはまた、このクラスのデータと共に作用するた
めに用いられるメソッドを定義される。クラス「自動
車」のサブクラスであるクラス「陸上自動車(RoadVehi
cle )」は、更にどのタイプの自動車が含まれるかを示
すデータ(すなわち車輪の数などの属性を追加すること
による)を含むようにクラス「自動車」を細かく分類す
る。同様に「水上自動車(WaterVehicle)」と呼ばれる
クラスは、クラス「自動車」が排気量及び喫水などの属
性を含むように細かく分類する。例えば、クラス「陸上
自動車」のオブジェクトは、名前「ブーマ(Boome
r)」、色「赤」、重量「4000lbs」及び所有者
「スティーブ(Steve )」を有するように生成される。
同様に、特定のボートを表すクラス「水上自動車」のオ
ブジェクトが生成される。サブクラスが追加されると、
階層構造が生成される。それぞれサブクラス或いはスー
パー・クラスと呼ばれる各クラスは、階層構造における
特定のレベルに位置するものと見なされる。上述の例で
は、クラス「自動車」のサブクラスであるクラス「陸上
自動車」及びクラス「水上自動車」は、クラス「自動
車」よりも1レベル高いレベルに位置する。
【0008】継承の概念は、"多重継承"(multiple inh
eritance)と呼ばれるものを含むように拡張される。多
重継承は、あるクラスが複数のクラスのサブクラスとし
て生成される時に発生する。クラスが複数のクラスから
の性質を継承するために、そのクラスのオブジェクト
は、同時に2個或いはそれ以上のクラスのメンバと見な
される。例えば、上述の例のアクアタンク(AquaTank)
の場合を考えてみる。アクアタンクは、タンクのように
道路上を走る特殊な軍用自動車であるが、水上ではボー
トのように機能する。アクアタンクは陸上自動車でもあ
り水上自動車でもあるため、ここでは陸上自動車及び水
上自動車の両方から継承する(すなわち両者のサブクラ
スである)水陸両用自動車(AmphibiousVehicle )と称
するクラスを生成する。この新たなクラスはドラフト及
び変位と同様に、車輪数に関するデータを有し、更に特
殊なデータを含むこともある。クラス「水陸両用自動
車」のオブジェクトは、このように両方のクラスの性質
を継承する。上述のように、これは"多重継承"と呼ばれ
る。
eritance)と呼ばれるものを含むように拡張される。多
重継承は、あるクラスが複数のクラスのサブクラスとし
て生成される時に発生する。クラスが複数のクラスから
の性質を継承するために、そのクラスのオブジェクト
は、同時に2個或いはそれ以上のクラスのメンバと見な
される。例えば、上述の例のアクアタンク(AquaTank)
の場合を考えてみる。アクアタンクは、タンクのように
道路上を走る特殊な軍用自動車であるが、水上ではボー
トのように機能する。アクアタンクは陸上自動車でもあ
り水上自動車でもあるため、ここでは陸上自動車及び水
上自動車の両方から継承する(すなわち両者のサブクラ
スである)水陸両用自動車(AmphibiousVehicle )と称
するクラスを生成する。この新たなクラスはドラフト及
び変位と同様に、車輪数に関するデータを有し、更に特
殊なデータを含むこともある。クラス「水陸両用自動
車」のオブジェクトは、このように両方のクラスの性質
を継承する。上述のように、これは"多重継承"と呼ばれ
る。
【0009】単一継承では、クラスは1つの継承ツリー
構造を形成する。多重継承を追加することにより、ツリ
ー構造はグラフに一般化される。図2は継承グラフを示
す。
構造を形成する。多重継承を追加することにより、ツリ
ー構造はグラフに一般化される。図2は継承グラフを示
す。
【0010】最もよく知られるOOP環境に"C++"環境
と、"スモールトーク"(Smalltalk)環境の2つがあ
り、C++環境だけが多重継承をサポートする。C++環境
は現存の"C"コンピュータ・プログラミング言語の単に
拡張である。従って、その多重継承に対するアプロー
チ、及び一般にはOOPに対するアプローチは、極めて
柔軟性に欠如する。オブジェクトの特定のクラスに対応
するデータが変更を要求する場合、或いはオブジェクト
の特定のクラスに対応するメソッドが追加される場合、
変更されるクラスのメンバである全てのオブジェクト、
及び変更されるクラスのサブクラスのメンバである全て
のオブジェクトが作り直されて、それらのメソッドが再
コンパイルされなければならない。更に、変更されるク
ラスのオブジェクト、或いは変更されるクラスのサブク
ラスのメンバであるオブジェクトに依存するクライアン
トもまた、再コンパイルされなければならない。これは
上述の仮定では特に問題とは思われないが、多数のクラ
ス及びサブクラスを含む大規模システムでは、非常にコ
ストがかかり、また時間を消費する。
と、"スモールトーク"(Smalltalk)環境の2つがあ
り、C++環境だけが多重継承をサポートする。C++環境
は現存の"C"コンピュータ・プログラミング言語の単に
拡張である。従って、その多重継承に対するアプロー
チ、及び一般にはOOPに対するアプローチは、極めて
柔軟性に欠如する。オブジェクトの特定のクラスに対応
するデータが変更を要求する場合、或いはオブジェクト
の特定のクラスに対応するメソッドが追加される場合、
変更されるクラスのメンバである全てのオブジェクト、
及び変更されるクラスのサブクラスのメンバである全て
のオブジェクトが作り直されて、それらのメソッドが再
コンパイルされなければならない。更に、変更されるク
ラスのオブジェクト、或いは変更されるクラスのサブク
ラスのメンバであるオブジェクトに依存するクライアン
トもまた、再コンパイルされなければならない。これは
上述の仮定では特に問題とは思われないが、多数のクラ
ス及びサブクラスを含む大規模システムでは、非常にコ
ストがかかり、また時間を消費する。
【0011】本質的に、今日のOOP環境はOOPアプ
ローチにより実現されるはずの生産性の利点を著しく低
減させている。
ローチにより実現されるはずの生産性の利点を著しく低
減させている。
【0012】
【発明が解決しようとする課題】本発明の主な目的は、
多重継承をサポートする改良されたOOP環境を提供す
ることである。
多重継承をサポートする改良されたOOP環境を提供す
ることである。
【0013】本発明の別の目的は、改良された多重継承
OOP環境の構造を生成及び記憶する方法及び装置を提
供することである。
OOP環境の構造を生成及び記憶する方法及び装置を提
供することである。
【0014】更に本発明の別の目的は、改良されたOO
P環境の多重継承オブジェクトに経路指定する方法及び
装置を提供することである。
P環境の多重継承オブジェクトに経路指定する方法及び
装置を提供することである。
【0015】更に本発明の別の目的は、改良された多重
継承OOP環境を生成する方法及び装置を提供すること
である。
継承OOP環境を生成する方法及び装置を提供すること
である。
【0016】
【課題を解決するための手段】これらの目的が、本明細
書において開示される多重継承OOPデータ構造、装
置、方法、及び機構により達成される。本発明のデータ
構造、装置、方法、及び機構は、ユーザに柔軟な多重継
承OOP環境を提供するように協力する。
書において開示される多重継承OOPデータ構造、装
置、方法、及び機構により達成される。本発明のデータ
構造、装置、方法、及び機構は、ユーザに柔軟な多重継
承OOP環境を提供するように協力する。
【0017】OOP環境は、複合データ構造及びこれら
の構造を操作する内部機構を含む。こうした構造は、ユ
ーザがOOPの効果を実現することを可能とする。従っ
て、これらの構造のレイアウト、これらの相関方法、及
びこれらが生成され使用される方法は、全て特定のOO
P環境のユーティリティにとって重要である。従って、
OOP環境の製造者及び供給者が、ユーザの生産性を最
大化する複合データ構造及び内部機構を設計しようと、
常時努力していることは、驚くに及ばないことである。
の構造を操作する内部機構を含む。こうした構造は、ユ
ーザがOOPの効果を実現することを可能とする。従っ
て、これらの構造のレイアウト、これらの相関方法、及
びこれらが生成され使用される方法は、全て特定のOO
P環境のユーティリティにとって重要である。従って、
OOP環境の製造者及び供給者が、ユーザの生産性を最
大化する複合データ構造及び内部機構を設計しようと、
常時努力していることは、驚くに及ばないことである。
【0018】本発明を構成する内部機構及び構造は、総
称的に多重継承オブジェクト・モデル(MOM:Multip
le Inheritance Object Model )と称される。複合デー
タ構造及びMOM OOP環境の編成は、従来の多重継
承環境によっては提供されない重要な利点を提供する。
これらの利点には、コード・ベースの大部分の再コンパ
イルを要することなく、クラス定義にメソッド・プログ
ラムを追加する機能が含まれる。
称的に多重継承オブジェクト・モデル(MOM:Multip
le Inheritance Object Model )と称される。複合デー
タ構造及びMOM OOP環境の編成は、従来の多重継
承環境によっては提供されない重要な利点を提供する。
これらの利点には、コード・ベースの大部分の再コンパ
イルを要することなく、クラス定義にメソッド・プログ
ラムを追加する機能が含まれる。
【0019】MOM環境は3つの主要な複合データ構造
を含み、それらはオブジェクト構造、インタフェース・
テーブル、及びメソッド・テーブルである。オブジェク
ト構造は、その性質が現存のOOPオブジェクト構造に
類似であり、オブジェクトを特徴づけるデータ、及びイ
ンタフェース・テーブルに関するロケーション情報を含
む。オブジェクト・データは更に、クラス・レベルによ
り細分化される。従って、各オブジェクトは特定の階層
ツリー構造におけるクラスの深さに対応する数のデータ
・セットを含む。インタフェース・テーブルは、オブジ
ェクトが属するクラスに対応するインタフェース・テー
ブル入力、及びオブジェクトのスーパー・クラスの各々
に対応する入力(すなわち特定の階層ツリー構造におけ
るクラスの深さに至る各レベルに対応して、1入力が割
当てられる)を含む。各入力はサブジェクト・クラス・
レベルに対応するメソッド・テーブルに関するロケーシ
ョン情報、特定のクラス・レベルに関連するオブジェク
ト・データのオフセットを含む。ロケーション情報はメ
ソッド・テーブルへのアクセスを獲得するために使用さ
れ、オフセットはオブジェクトに記憶されるインスタン
ス・データへのアクセスを獲得するために使用される。
特定のクラス・レベルに対応するメソッド・テーブル
は、個々のメソッド・プログラム及びメソッド・シグニ
チャに関するロケーション情報を含むメソッド・テーブ
ル入力を含む。メソッド・シグニチャは特定のメソッド
・プログラムを識別する。
を含み、それらはオブジェクト構造、インタフェース・
テーブル、及びメソッド・テーブルである。オブジェク
ト構造は、その性質が現存のOOPオブジェクト構造に
類似であり、オブジェクトを特徴づけるデータ、及びイ
ンタフェース・テーブルに関するロケーション情報を含
む。オブジェクト・データは更に、クラス・レベルによ
り細分化される。従って、各オブジェクトは特定の階層
ツリー構造におけるクラスの深さに対応する数のデータ
・セットを含む。インタフェース・テーブルは、オブジ
ェクトが属するクラスに対応するインタフェース・テー
ブル入力、及びオブジェクトのスーパー・クラスの各々
に対応する入力(すなわち特定の階層ツリー構造におけ
るクラスの深さに至る各レベルに対応して、1入力が割
当てられる)を含む。各入力はサブジェクト・クラス・
レベルに対応するメソッド・テーブルに関するロケーシ
ョン情報、特定のクラス・レベルに関連するオブジェク
ト・データのオフセットを含む。ロケーション情報はメ
ソッド・テーブルへのアクセスを獲得するために使用さ
れ、オフセットはオブジェクトに記憶されるインスタン
ス・データへのアクセスを獲得するために使用される。
特定のクラス・レベルに対応するメソッド・テーブル
は、個々のメソッド・プログラム及びメソッド・シグニ
チャに関するロケーション情報を含むメソッド・テーブ
ル入力を含む。メソッド・シグニチャは特定のメソッド
・プログラムを識別する。
【0020】多重継承を提供するために、MOMインタ
フェース・テーブルは更に、多重インタフェース・テー
ブル(すなわちクラス構造)をリンクするために使用さ
れるリンク・ポインタを含み、特定のオブジェクト・イ
ンスタンスは複数のクラスから性質を継承することがで
きる。
フェース・テーブルは更に、多重インタフェース・テー
ブル(すなわちクラス構造)をリンクするために使用さ
れるリンク・ポインタを含み、特定のオブジェクト・イ
ンスタンスは複数のクラスから性質を継承することがで
きる。
【0021】クライアント・プログラムが特定のオブジ
ェクトにおいて具現される機能を利用する時、これはオ
ブジェクト名及び呼出されるメソッド・プログラムの名
前を指定することにより、オブジェクトを呼出す。オブ
ジェクトの呼出しは、オブジェクトに"経路指定する"と
も称される。コンパイル時、MOM呼出しステートメン
トは4片の情報を含み、それらはオブジェクトID、レ
ベル、呼出しシグニチャ、及びメソッド・オフセット
(すなわちメソッド・テーブル内のメソッド・プログラ
ムのロケーション)である。オブジェクトIDは特定の
オブジェクトを突き止め、アクセスするために使用され
る。一度実行されると、オブジェクト内のロケーション
情報が、インタフェース・テーブルへのアクセスを獲得
するために使用される。次に、適切なインタフェース・
テーブル入力を突き止めるために、レベルが使用され
る。インタフェース・テーブル入力に含まれるメソッド
・テーブル・ロケーション情報は、適切なメソッド・テ
ーブルへのアクセスを獲得するために使用される。次
に、正確なメソッド・テーブル入力をアクセスし、呼出
しシグニチャをメソッド・プログラム・シグニチャと比
較するために、メソッド・オフセットが使用される。シ
グニチャが一致すると、メソッド・プログラムを呼出す
ために、ロケーション情報が使用される。
ェクトにおいて具現される機能を利用する時、これはオ
ブジェクト名及び呼出されるメソッド・プログラムの名
前を指定することにより、オブジェクトを呼出す。オブ
ジェクトの呼出しは、オブジェクトに"経路指定する"と
も称される。コンパイル時、MOM呼出しステートメン
トは4片の情報を含み、それらはオブジェクトID、レ
ベル、呼出しシグニチャ、及びメソッド・オフセット
(すなわちメソッド・テーブル内のメソッド・プログラ
ムのロケーション)である。オブジェクトIDは特定の
オブジェクトを突き止め、アクセスするために使用され
る。一度実行されると、オブジェクト内のロケーション
情報が、インタフェース・テーブルへのアクセスを獲得
するために使用される。次に、適切なインタフェース・
テーブル入力を突き止めるために、レベルが使用され
る。インタフェース・テーブル入力に含まれるメソッド
・テーブル・ロケーション情報は、適切なメソッド・テ
ーブルへのアクセスを獲得するために使用される。次
に、正確なメソッド・テーブル入力をアクセスし、呼出
しシグニチャをメソッド・プログラム・シグニチャと比
較するために、メソッド・オフセットが使用される。シ
グニチャが一致すると、メソッド・プログラムを呼出す
ために、ロケーション情報が使用される。
【0022】呼出しシグニチャがメソッド・プログラム
・シグニチャに一致しない場合、MOMメソッド解析装
置が自動的にリンク・ポインタをロードし、追加のイン
タフェース・テーブルが初期インタフェース・テーブル
に接続されているか(すなわち、この特定のオブジェク
トが複数のクラスから性質を継承しているか)を判断す
る。接続されていれば、メソッド解析機構が再度レベ
ル、メソッド・オフセット及び呼出しシグニチャを使用
して、選択されたメソッド・プログラムの呼出しを試み
る。この処理は、適切なメソッド・プログラムが突き止
められるか、インタフェース・テーブルが存在しなくな
るまで継続される。後者が発生すると、MOMメソッド
解析機構はエラー状態を発生し、呼出者に対してそれを
返却する。
・シグニチャに一致しない場合、MOMメソッド解析装
置が自動的にリンク・ポインタをロードし、追加のイン
タフェース・テーブルが初期インタフェース・テーブル
に接続されているか(すなわち、この特定のオブジェク
トが複数のクラスから性質を継承しているか)を判断す
る。接続されていれば、メソッド解析機構が再度レベ
ル、メソッド・オフセット及び呼出しシグニチャを使用
して、選択されたメソッド・プログラムの呼出しを試み
る。この処理は、適切なメソッド・プログラムが突き止
められるか、インタフェース・テーブルが存在しなくな
るまで継続される。後者が発生すると、MOMメソッド
解析機構はエラー状態を発生し、呼出者に対してそれを
返却する。
【0023】特定のクラスに対し、メソッド・プログラ
ムを追加する必要がある場合には、コンピュータ・プロ
グラマは、特定のクラスに関連するメソッド・テーブル
に、別の入力を追加するだけでよい。オブジェクトの再
コンパイルは必要ない。しかしながら、新たなメソッド
・プログラムへのアクセスを必要とするクライアント・
プログラムだけは、再コンパイルを必要とする。
ムを追加する必要がある場合には、コンピュータ・プロ
グラマは、特定のクラスに関連するメソッド・テーブル
に、別の入力を追加するだけでよい。オブジェクトの再
コンパイルは必要ない。しかしながら、新たなメソッド
・プログラムへのアクセスを必要とするクライアント・
プログラムだけは、再コンパイルを必要とする。
【0024】更にMOM環境は、複合データ構造をサポ
ートする内部機構を提供する。内部機構には、複数クラ
スから性質を継承するオブジェクト・インスタンスの生
成をサポートするオブジェクト・マネージャが含まれ
る。
ートする内部機構を提供する。内部機構には、複数クラ
スから性質を継承するオブジェクト・インスタンスの生
成をサポートするオブジェクト・マネージャが含まれ
る。
【0025】
【実施例】前述のように、現存の多重継承OOP環境は
再コンパイルを要せずに、メソッド・プログラム或いは
データを既存のオブジェクト及びクラス構造に追加する
機能を提供しない。データ及びメソッド・プログラムを
非多重継承OOP環境のクラスに追加する柔軟なアプロ
ーチが、審査中の米国特許出願第954138号(19
92年9月31日出願)に述べられている。上記審査中
の米国特許出願第954138号は、本発明においても
参照される。
再コンパイルを要せずに、メソッド・プログラム或いは
データを既存のオブジェクト及びクラス構造に追加する
機能を提供しない。データ及びメソッド・プログラムを
非多重継承OOP環境のクラスに追加する柔軟なアプロ
ーチが、審査中の米国特許出願第954138号(19
92年9月31日出願)に述べられている。上記審査中
の米国特許出願第954138号は、本発明においても
参照される。
【0026】図1は本発明のコンピュータ・システムの
ブロック図を示す。好適な実施例のコンピュータ・シス
テムは、改良されたIBM AS/400中型コンピュ
ータ・システムである。しかしながら、OOP環境をサ
ポートできるコンピュータ・システムであれば、使用可
能である。図1に示されるように、コンピュータ・シス
テム100は中央処理ユニット(CPU)105を含
み、これはシステム・バス150を介して、データ記憶
装置140及び端末インタフェース145に接続され
る。端末インタフェース145により、システム管理者
及びコンピュータ・プログラマは、通常、プログラマブ
ル・ワークステーションを通じて、コンピュータ・シス
テム100と通信することができる。図1に示されるシ
ステムは、単一のメインCPU及び単一のシステム・バ
スしか含まないが、本発明が複数のメインCPU及び複
数のI/Oバスを有するコンピュータ・システムにも適
応できることは理解されよう。同様に実施例のバスは、
典型的にはハードワイヤで配線されるマルチドロップ・
バスであるが、双方向通信をサポートする接続手段であ
れば使用可能である。
ブロック図を示す。好適な実施例のコンピュータ・シス
テムは、改良されたIBM AS/400中型コンピュ
ータ・システムである。しかしながら、OOP環境をサ
ポートできるコンピュータ・システムであれば、使用可
能である。図1に示されるように、コンピュータ・シス
テム100は中央処理ユニット(CPU)105を含
み、これはシステム・バス150を介して、データ記憶
装置140及び端末インタフェース145に接続され
る。端末インタフェース145により、システム管理者
及びコンピュータ・プログラマは、通常、プログラマブ
ル・ワークステーションを通じて、コンピュータ・シス
テム100と通信することができる。図1に示されるシ
ステムは、単一のメインCPU及び単一のシステム・バ
スしか含まないが、本発明が複数のメインCPU及び複
数のI/Oバスを有するコンピュータ・システムにも適
応できることは理解されよう。同様に実施例のバスは、
典型的にはハードワイヤで配線されるマルチドロップ・
バスであるが、双方向通信をサポートする接続手段であ
れば使用可能である。
【0027】データ記憶装置140はシステム・オブジ
ェクト・マネジャ115、クラス定義ユーティリティ1
17、クライアント・プログラム120、オブジェクト
125、メソッド・プログラム130、及びオペレーテ
ィング・システム135を含む。データ記憶装置140
は、一様な存在として示されるが、実際には様々なデバ
イスを含むこともあり、示される全てのプログラム及び
ファイルが、必ずしもある1つのデバイス内に含まれる
ものではないことが理解されよう。例えば、クライアン
ト・プログラム120及びオペレーティング・システム
135の一部は、典型的には主メモリにロードされて実
行され、一方、ソース・データ・ファイルは、典型的に
は磁気或いは光ディスク記憶装置上に記憶される。
ェクト・マネジャ115、クラス定義ユーティリティ1
17、クライアント・プログラム120、オブジェクト
125、メソッド・プログラム130、及びオペレーテ
ィング・システム135を含む。データ記憶装置140
は、一様な存在として示されるが、実際には様々なデバ
イスを含むこともあり、示される全てのプログラム及び
ファイルが、必ずしもある1つのデバイス内に含まれる
ものではないことが理解されよう。例えば、クライアン
ト・プログラム120及びオペレーティング・システム
135の一部は、典型的には主メモリにロードされて実
行され、一方、ソース・データ・ファイルは、典型的に
は磁気或いは光ディスク記憶装置上に記憶される。
【0028】図2は、本発明の装置、方法、及び構造を
説明するために、本明細書を通じて使用されるOOP階
層ツリー構造の例を示す。2重線で示されるボックスは
異なるクラスを表し、単線で示されるボックスは、特定
のクラスのオブジェクト・インスタンスを表す。オブジ
ェクト・インスタンスは特定のクラスのメンバを表す。
ここで図2が仮定的構成の概念を表すことが理解されよ
う。データ記憶装置140にクラス及びオブジェクトが
実際に存在する様子が、図8乃至図11、図14に示さ
れている。更に概念レベルでは、図2の仮定的構成が、
個人或いはユーザが特定の人または従業員を扱うデータ
を編成する様子を表すことが理解されよう。各クラスは
情報の特定のカテゴリと見なされ、各サブクラスは情報
のサブカテゴリとして見なされる。特定のクラスの個々
のメンバ(オブジェクト・インスタンスにより表され
る)は、特定の個人に関する情報を含む。
説明するために、本明細書を通じて使用されるOOP階
層ツリー構造の例を示す。2重線で示されるボックスは
異なるクラスを表し、単線で示されるボックスは、特定
のクラスのオブジェクト・インスタンスを表す。オブジ
ェクト・インスタンスは特定のクラスのメンバを表す。
ここで図2が仮定的構成の概念を表すことが理解されよ
う。データ記憶装置140にクラス及びオブジェクトが
実際に存在する様子が、図8乃至図11、図14に示さ
れている。更に概念レベルでは、図2の仮定的構成が、
個人或いはユーザが特定の人または従業員を扱うデータ
を編成する様子を表すことが理解されよう。各クラスは
情報の特定のカテゴリと見なされ、各サブクラスは情報
のサブカテゴリとして見なされる。特定のクラスの個々
のメンバ(オブジェクト・インスタンスにより表され
る)は、特定の個人に関する情報を含む。
【0029】クラス"Root"200はツリー構造の実例の
基本クラスである。クラスRoot200はインスタンス変
数を含み、それらは"オブジェクト名"202、 "オブジ
ェクト・クラス" 204、"クラス・レベル"206、及
び"インスタンス・サイズ"208である。クラスRoot2
00はツリー構造の最高レベルに位置するため、そのイ
ンスタンス変数は、それ以下で定義される全てのサブク
ラスにより継承される(クラスPersonnel 218に対応
しては示されていない)。クラスRoot200はまたクラ
ス・レベル0と見なされる。クラス・レベル1には、Ed
ucation 210、Personnel218が定義される。クラ
スEducation210はオブジェクト・インスタンス変数
として、"オブジェクト名"202、"オブジェクト・ク
ラス"204、"クラス・レベル"206、"インスタンス
・サイズ"208、"従業員番号"212、"学年"21
4、及び"カレッジ"216が含まれる。オブジェクト・
インスタンス変数の"オブジェクト名"202、"オブジ
ェクト・クラス"204、 "クラス・レベル"206、及
び"インスタンス・サイズ" 208は、クラスRootから
継承され、オブジェクト・インスタンス変数の"従業員
番号"212、"学年"214、及び"カレッジ"216
は、クラスEducation に対応して特定的に定義される。
クラスEducationのサブクラスとして定義される各クラ
ス(すなわちクラスMasters220、Phd222、及びJD
228)は、これら全てのオブジェクト・インスタン
ス変数の定義を継承する。(クラスMasters 220に対
応しては図示されていない。)
基本クラスである。クラスRoot200はインスタンス変
数を含み、それらは"オブジェクト名"202、 "オブジ
ェクト・クラス" 204、"クラス・レベル"206、及
び"インスタンス・サイズ"208である。クラスRoot2
00はツリー構造の最高レベルに位置するため、そのイ
ンスタンス変数は、それ以下で定義される全てのサブク
ラスにより継承される(クラスPersonnel 218に対応
しては示されていない)。クラスRoot200はまたクラ
ス・レベル0と見なされる。クラス・レベル1には、Ed
ucation 210、Personnel218が定義される。クラ
スEducation210はオブジェクト・インスタンス変数
として、"オブジェクト名"202、"オブジェクト・ク
ラス"204、"クラス・レベル"206、"インスタンス
・サイズ"208、"従業員番号"212、"学年"21
4、及び"カレッジ"216が含まれる。オブジェクト・
インスタンス変数の"オブジェクト名"202、"オブジ
ェクト・クラス"204、 "クラス・レベル"206、及
び"インスタンス・サイズ" 208は、クラスRootから
継承され、オブジェクト・インスタンス変数の"従業員
番号"212、"学年"214、及び"カレッジ"216
は、クラスEducation に対応して特定的に定義される。
クラスEducationのサブクラスとして定義される各クラ
ス(すなわちクラスMasters220、Phd222、及びJD
228)は、これら全てのオブジェクト・インスタン
ス変数の定義を継承する。(クラスMasters 220に対
応しては図示されていない。)
【0030】例えば、クラスPhd222は、クラスEduca
tion210のサブクラスとして定義される。クラスEduc
ation 210はそれ自身、クラスRoot200のサブクラ
スである。従って、クラスPhd 222は両方のスーパー
・クラスのオブジェクト・インスタンス変数定義(すな
わち"オブジェクト名"202、 "オブジェクト・クラ
ス"204、"クラス・レベル"206、"インスタンス・
サイズ"208、"従業員番号"212、"学年"214、
及び"カレッジ"216)を継承する。クラスPhd222
はまた、その固有のクラス定義部分であるインスタンス
変数も含む。それらは、"Phdユニバーシティ"224、
及び"Phd Gpa"226である。クラスPhd 222のメン
バとして生成されるオブジェクトは、オブジェクト・イ
ンスタンス変数、すなわちオブジェクト名、オブジェク
ト・クラス、クラス・レベル、インスタンス・サイズ、
従業員番号、学年、カレッジ、Phdユニバーシティ、及
びPhd Gpaに関連する値を有する。John234はクラスP
hd 222のメンバであるオブジェクトの例であり、Sal
ly238はクラスJD 228のメンバであるオブジェク
トの例である。
tion210のサブクラスとして定義される。クラスEduc
ation 210はそれ自身、クラスRoot200のサブクラ
スである。従って、クラスPhd 222は両方のスーパー
・クラスのオブジェクト・インスタンス変数定義(すな
わち"オブジェクト名"202、 "オブジェクト・クラ
ス"204、"クラス・レベル"206、"インスタンス・
サイズ"208、"従業員番号"212、"学年"214、
及び"カレッジ"216)を継承する。クラスPhd222
はまた、その固有のクラス定義部分であるインスタンス
変数も含む。それらは、"Phdユニバーシティ"224、
及び"Phd Gpa"226である。クラスPhd 222のメン
バとして生成されるオブジェクトは、オブジェクト・イ
ンスタンス変数、すなわちオブジェクト名、オブジェク
ト・クラス、クラス・レベル、インスタンス・サイズ、
従業員番号、学年、カレッジ、Phdユニバーシティ、及
びPhd Gpaに関連する値を有する。John234はクラスP
hd 222のメンバであるオブジェクトの例であり、Sal
ly238はクラスJD 228のメンバであるオブジェク
トの例である。
【0031】クラスPhd/JD240は多重継承クラスとし
て示される。これはクラスPhd/JDがその性質を、構造内
の特定のレベルの複数のスーパー・クラスから継承する
ことを意味する。この例では、クラスPhd/JD240はそ
の性質を、構造内のレベル2に位置するクラスPhd22
2及びクラスJD228から継承する。例ではクラスPhd/
JD 240が、階層内の1つだけ上位のレベルの2つの
クラスから性質を継承するように示されるが、本発明が
階層内の任意のレベルのクラスから発生する多重継承に
も同様に適用可能なことが理解されよう。更に、本発明
が2つのスーパー・クラスからの継承に限るものでない
ことが理解されよう。本発明は任意のレベルにおける任
意の数のスーパー・クラスからの継承に対して適応す
る。
て示される。これはクラスPhd/JDがその性質を、構造内
の特定のレベルの複数のスーパー・クラスから継承する
ことを意味する。この例では、クラスPhd/JD240はそ
の性質を、構造内のレベル2に位置するクラスPhd22
2及びクラスJD228から継承する。例ではクラスPhd/
JD 240が、階層内の1つだけ上位のレベルの2つの
クラスから性質を継承するように示されるが、本発明が
階層内の任意のレベルのクラスから発生する多重継承に
も同様に適用可能なことが理解されよう。更に、本発明
が2つのスーパー・クラスからの継承に限るものでない
ことが理解されよう。本発明は任意のレベルにおける任
意の数のスーパー・クラスからの継承に対して適応す
る。
【0032】クラスPhd/JD240はPhd 222及びJD2
28のサブクラスとして定義されたため、クラスPhd/JD
240は両者の共通の性質(すなわち"オブジェクト名"
202、"オブジェクト・クラス"204、"クラス・レ
ベル"206、 "インスタンス・サイズ" 208、"従業
員番号"212、"学年"214、及び"カレッジ"21
6)、クラスPhd222に特有の性質(すなわち"Phdユ
ニバーシティ"224及び"Phd Gpa" 226)、及びク
ラスJD228に特有の性質(すなわち"法律学校"230
及び"JD Gpa"232)を継承する。また、図2はクラス
Phd/JD240に対して特定に定義されるインスタンス変
数定義を示していないが、本発明の範疇にはこれらの変
数も含まれる。
28のサブクラスとして定義されたため、クラスPhd/JD
240は両者の共通の性質(すなわち"オブジェクト名"
202、"オブジェクト・クラス"204、"クラス・レ
ベル"206、 "インスタンス・サイズ" 208、"従業
員番号"212、"学年"214、及び"カレッジ"21
6)、クラスPhd222に特有の性質(すなわち"Phdユ
ニバーシティ"224及び"Phd Gpa" 226)、及びク
ラスJD228に特有の性質(すなわち"法律学校"230
及び"JD Gpa"232)を継承する。また、図2はクラス
Phd/JD240に対して特定に定義されるインスタンス変
数定義を示していないが、本発明の範疇にはこれらの変
数も含まれる。
【0033】オブジェクト・インスタンスJoe 236
は、クラスPhd/JDのメンバであるオブジェクトの例であ
る。
は、クラスPhd/JDのメンバであるオブジェクトの例であ
る。
【0034】MOMインタフェース・テーブル:本発明
を理解するために、MOMインタフェース・テーブルが
多重継承を提供する様子を理解することは重要であり、
その詳細を図3で説明する。インタフェース・テーブル
における各入力は、階層内の特定のクラスに関する情報
を含む。更に詳細には、各入力は追加のインタフェース
・テーブル或いはメソッド・プログラムに関するロケー
ション情報、及び特定のクラスのインスタンス・データ
を含む。クライアント・プログラムがオブジェクトを呼
出す時、これらはインタフェース・テーブルに記憶され
るロケーション情報を介して、追加のインタフェース・
テーブル及びメソッド・プログラム及びインスタンス・
データへのアクセスを獲得する。
を理解するために、MOMインタフェース・テーブルが
多重継承を提供する様子を理解することは重要であり、
その詳細を図3で説明する。インタフェース・テーブル
における各入力は、階層内の特定のクラスに関する情報
を含む。更に詳細には、各入力は追加のインタフェース
・テーブル或いはメソッド・プログラムに関するロケー
ション情報、及び特定のクラスのインスタンス・データ
を含む。クライアント・プログラムがオブジェクトを呼
出す時、これらはインタフェース・テーブルに記憶され
るロケーション情報を介して、追加のインタフェース・
テーブル及びメソッド・プログラム及びインスタンス・
データへのアクセスを獲得する。
【0035】MOMインタフェース・テーブル250は
インタフェース・テーブル入力251、255、260
及び265を含み、インタフェース・テーブル270は
インタフェース・テーブル入力271、275、280
及び285を含む。インタフェース・テーブル入力25
1及び271は、追加のインタフェース・テーブルに関
するロケーション情報を記憶するために使用される。例
えば図3は、インタフェース・テーブル270がインタ
フェース・テーブル入力251に含まれるロケーション
情報を通じて位置付けられることを示す。インタフェー
ス・テーブル入力255、260、265、275、2
80及び285は、メソッド・テーブル・ポインタ(例
えばメソッド・テーブル・ポインタ255)及びデータ
・オフセット(例えばデータ・オフセット255)を含
む。メソッド・テーブル・ポインタは、特定のメソッド
・テーブル及び最終的にはメソッド・プログラムをアク
セスするために、クライアント・プログラムにより使用
される。これらのフィールドは、図14及び図15に関
連してより詳細に説明される。
インタフェース・テーブル入力251、255、260
及び265を含み、インタフェース・テーブル270は
インタフェース・テーブル入力271、275、280
及び285を含む。インタフェース・テーブル入力25
1及び271は、追加のインタフェース・テーブルに関
するロケーション情報を記憶するために使用される。例
えば図3は、インタフェース・テーブル270がインタ
フェース・テーブル入力251に含まれるロケーション
情報を通じて位置付けられることを示す。インタフェー
ス・テーブル入力255、260、265、275、2
80及び285は、メソッド・テーブル・ポインタ(例
えばメソッド・テーブル・ポインタ255)及びデータ
・オフセット(例えばデータ・オフセット255)を含
む。メソッド・テーブル・ポインタは、特定のメソッド
・テーブル及び最終的にはメソッド・プログラムをアク
セスするために、クライアント・プログラムにより使用
される。これらのフィールドは、図14及び図15に関
連してより詳細に説明される。
【0036】MOM環境の生成:図4はクラス定義ユー
ティリティ117の内部作業の流れ図であり、図5及び
図6はシステム・オブジェクト・マネジャ115の内部
作業の流れ図である。図8乃至図11は、図2の木構造
の一部が、実際にデータ記憶装置140内に存在する様
子を示す。図4乃至図7は、図2で示されるような階層
構造が実際に生成される様子を説明するために、図8乃
至図11と関連して使用される。
ティリティ117の内部作業の流れ図であり、図5及び
図6はシステム・オブジェクト・マネジャ115の内部
作業の流れ図である。図8乃至図11は、図2の木構造
の一部が、実際にデータ記憶装置140内に存在する様
子を示す。図4乃至図7は、図2で示されるような階層
構造が実際に生成される様子を説明するために、図8乃
至図11と関連して使用される。
【0037】コンピュータ・システム100が顧客或い
は他のユーザに届けられる時、クラス・オブジェクトRo
ot(図8の400)に対応する複合データ構造、及びRo
otクラス(図8の構造405及び410)は、既にデー
タ記憶装置140にロードされている。当業者には理解
されるように、これらの複合データ構造が最初に生成さ
れて、データ記憶装置140に記憶されるための多数の
方法が存在する。同様に、これらの構造の生成及び記憶
は、必ずしも製造工場において実施される必要はない。
顧客或いはユーザが、クラス定義ユーティリティ117
及びシステム・オブジェクト・マネジャ115を独立に
呼出すことにより、これらの複合データ構造を生成及び
記憶することも可能である。しかしながら、説明の都合
上、ここではクラス・オブジェクトRoot400、インタ
フェース・テーブル405(すなわちクラスRootに対応
するインタフェース・テーブル)、及びメソッド・テー
ブル410(すなわちクラスRootに対応するメソッド・
テーブル)が、製造工場において、データ記憶装置14
0に予めロードされるものと仮定する。
は他のユーザに届けられる時、クラス・オブジェクトRo
ot(図8の400)に対応する複合データ構造、及びRo
otクラス(図8の構造405及び410)は、既にデー
タ記憶装置140にロードされている。当業者には理解
されるように、これらの複合データ構造が最初に生成さ
れて、データ記憶装置140に記憶されるための多数の
方法が存在する。同様に、これらの構造の生成及び記憶
は、必ずしも製造工場において実施される必要はない。
顧客或いはユーザが、クラス定義ユーティリティ117
及びシステム・オブジェクト・マネジャ115を独立に
呼出すことにより、これらの複合データ構造を生成及び
記憶することも可能である。しかしながら、説明の都合
上、ここではクラス・オブジェクトRoot400、インタ
フェース・テーブル405(すなわちクラスRootに対応
するインタフェース・テーブル)、及びメソッド・テー
ブル410(すなわちクラスRootに対応するメソッド・
テーブル)が、製造工場において、データ記憶装置14
0に予めロードされるものと仮定する。
【0038】コンピュータ・システム100のユーザが
クラスEducation 210を定義しようと望むと、ユーザ
はクライアント・プログラム(すなわちクライアント・
プログラム120の1つ)を開始し、クライアント・プ
ログラム自身はクラス・オブジェクトRoot400のメソ
ッドを呼出す。クライアント・プログラムはそれによ
り、インタフェース・テーブル405及びメソッド・テ
ーブル410へのアクセスを獲得する。このアクセスが
実際にどのように実行されるかに関しては、図14及び
図15に関連して説明される。メソッド・テーブル41
0へのアクセスが実行されると、クライアント・プログ
ラムはdefine_subclass_p 412により、クラス定義ユ
ーティリティ117を呼出す。ここでクラス定義ユーテ
ィリティ117は、実際にはメソッド・プログラム13
0とそう違わないメソッド・プログラムである。クラス
定義ユーティリティ117は、クラス定義において演じ
る役割に由来して、多数の処理を引受ける。流れ図4
は、クラス定義ユーティリティ117により実行される
第1のステップ(ブロック302)が、適切なクラス・
オブジェクトの生成であることを示す。この場合、生成
されるクラス・オブジェクトはクラス・オブジェクトEd
ucation 415(図9に示される)である。ユーザは次
にブロック304で、クラス名を入力するように求めら
れ、ブロック306では、このクラスに対応するインス
タンス変数定義(図9の419で示される)を入力する
ように求められる。そしてブロック308では、メソッ
ド・プログラム・アドレスを入力するように求められ
る。
クラスEducation 210を定義しようと望むと、ユーザ
はクライアント・プログラム(すなわちクライアント・
プログラム120の1つ)を開始し、クライアント・プ
ログラム自身はクラス・オブジェクトRoot400のメソ
ッドを呼出す。クライアント・プログラムはそれによ
り、インタフェース・テーブル405及びメソッド・テ
ーブル410へのアクセスを獲得する。このアクセスが
実際にどのように実行されるかに関しては、図14及び
図15に関連して説明される。メソッド・テーブル41
0へのアクセスが実行されると、クライアント・プログ
ラムはdefine_subclass_p 412により、クラス定義ユ
ーティリティ117を呼出す。ここでクラス定義ユーテ
ィリティ117は、実際にはメソッド・プログラム13
0とそう違わないメソッド・プログラムである。クラス
定義ユーティリティ117は、クラス定義において演じ
る役割に由来して、多数の処理を引受ける。流れ図4
は、クラス定義ユーティリティ117により実行される
第1のステップ(ブロック302)が、適切なクラス・
オブジェクトの生成であることを示す。この場合、生成
されるクラス・オブジェクトはクラス・オブジェクトEd
ucation 415(図9に示される)である。ユーザは次
にブロック304で、クラス名を入力するように求めら
れ、ブロック306では、このクラスに対応するインス
タンス変数定義(図9の419で示される)を入力する
ように求められる。そしてブロック308では、メソッ
ド・プログラム・アドレスを入力するように求められ
る。
【0039】クラス定義ユーティリティ117は、次に
ブロック310でユーザに対し、定義されるクラスがサ
ブクラスであるかを尋ねる。この例では、クラスEducat
ionはクラスRootのサブクラスであるので、この問いか
けは肯定して返答される。図5を参照すると、ユーザは
次にブロック316で、定義されるクラスのスーパー・
クラスの名前及びレベルを催促される。名前及びレベル
は両者共に、特定のスーパー・クラスが識別されること
を保証するように、指定されなければならない。この例
では、入力されるスーパー・クラスはRootであり、入力
されるレベルは0である。スーパー・クラス名及びレベ
ルが入力されると、クラス定義ユーティリティ117
は、次にブロック318で、1次インタフェース・テー
ブルを生成する。多重継承が含まれる場合、1次インタ
フェース・テーブルはインタフェース・テーブルの連鎖
内の最初のインタフェース・テーブルである(図3参
照)。クラスEducation は複数クラスから継承しないた
め(ブロック320)、クラス定義ユーティリティ11
7はクラスEducation に対応するメソッド・テーブルを
生成し、クラスEducation のスーパー・クラス(ここで
はスーパー・クラスRoot)からメソッド・テーブルをコ
ピーする(ブロック324)。これらの構造はそれぞれ
インタフェース・テーブル420及びメソッド・テーブ
ル425及び430として、図9に示される。新たなク
ラス(すなわちEducation )は次にブロック328で、
クラス・レベルが割当てられる(この場合1)。ブロッ
ク332でクラス定義ユーティリティ117は、ブロッ
ク306でユーザにより入力されたインスタンス変数定
義のオフセットを計算する。ブロック334でクラス定
義ユーティリティ117は、クラス・オブジェクトRoot
(クラス・オブジェクト400)からインスタンス変数
をコピーし、それらをEducation クラス・オブジェクト
(クラス・オブジェクト415)に配置する。これが図
9の418に示される。
ブロック310でユーザに対し、定義されるクラスがサ
ブクラスであるかを尋ねる。この例では、クラスEducat
ionはクラスRootのサブクラスであるので、この問いか
けは肯定して返答される。図5を参照すると、ユーザは
次にブロック316で、定義されるクラスのスーパー・
クラスの名前及びレベルを催促される。名前及びレベル
は両者共に、特定のスーパー・クラスが識別されること
を保証するように、指定されなければならない。この例
では、入力されるスーパー・クラスはRootであり、入力
されるレベルは0である。スーパー・クラス名及びレベ
ルが入力されると、クラス定義ユーティリティ117
は、次にブロック318で、1次インタフェース・テー
ブルを生成する。多重継承が含まれる場合、1次インタ
フェース・テーブルはインタフェース・テーブルの連鎖
内の最初のインタフェース・テーブルである(図3参
照)。クラスEducation は複数クラスから継承しないた
め(ブロック320)、クラス定義ユーティリティ11
7はクラスEducation に対応するメソッド・テーブルを
生成し、クラスEducation のスーパー・クラス(ここで
はスーパー・クラスRoot)からメソッド・テーブルをコ
ピーする(ブロック324)。これらの構造はそれぞれ
インタフェース・テーブル420及びメソッド・テーブ
ル425及び430として、図9に示される。新たなク
ラス(すなわちEducation )は次にブロック328で、
クラス・レベルが割当てられる(この場合1)。ブロッ
ク332でクラス定義ユーティリティ117は、ブロッ
ク306でユーザにより入力されたインスタンス変数定
義のオフセットを計算する。ブロック334でクラス定
義ユーティリティ117は、クラス・オブジェクトRoot
(クラス・オブジェクト400)からインスタンス変数
をコピーし、それらをEducation クラス・オブジェクト
(クラス・オブジェクト415)に配置する。これが図
9の418に示される。
【0040】次のステップでは、クラス・オブジェクト
415をインタフェース・テーブル420にリンクする
(ブロック336)。これはinterface_tbl_p 417
を、インタフェース・テーブル420の開始アドレスに
等しくセットすることにより達成される。多重継承が含
まれないため(ブロック340)、クラス定義ユーティ
リティ117はクラス・インスタンス変数のオフセット
を、インタフェース・テーブル420内の適切なインタ
フェース・テーブル入力に書込む(ブロック342)。
Education クラス・インスタンス変数定義に対応するオ
フセットは、インタフェース・テーブル入力423のEd
_instance_data_oフィールドに書込まれ、スーパー・ク
ラス・インスタンス変数定義に対応するオフセットは、
インタフェース・テーブル入力421のroot_insutance
_data_o フィールドに書込まれる。最後に、メソッド・
テーブル及びメソッド・プログラムのアドレスが、イン
タフェース・テーブル及びメソッド・テーブルにそれぞ
れ書込まれる(ブロック344及び346)。メソッド
・テーブル430のアドレスは、インタフェース・テー
ブル入力423のEd_meth_tbl_p フィールドに書込ま
れ、メソッド・テーブル425のアドレスは、インタフ
ェース・テーブル入力421に書込まれる。ブロック3
46では、メソッド・プログラムのアドレスが、メソッ
ド・テーブル430に書込まれる。例えば"学年更新"と
称されるメソッド・プログラムのアドレスが、"update_
U_degree_p"フィールド427に書込まれる。
415をインタフェース・テーブル420にリンクする
(ブロック336)。これはinterface_tbl_p 417
を、インタフェース・テーブル420の開始アドレスに
等しくセットすることにより達成される。多重継承が含
まれないため(ブロック340)、クラス定義ユーティ
リティ117はクラス・インスタンス変数のオフセット
を、インタフェース・テーブル420内の適切なインタ
フェース・テーブル入力に書込む(ブロック342)。
Education クラス・インスタンス変数定義に対応するオ
フセットは、インタフェース・テーブル入力423のEd
_instance_data_oフィールドに書込まれ、スーパー・ク
ラス・インスタンス変数定義に対応するオフセットは、
インタフェース・テーブル入力421のroot_insutance
_data_o フィールドに書込まれる。最後に、メソッド・
テーブル及びメソッド・プログラムのアドレスが、イン
タフェース・テーブル及びメソッド・テーブルにそれぞ
れ書込まれる(ブロック344及び346)。メソッド
・テーブル430のアドレスは、インタフェース・テー
ブル入力423のEd_meth_tbl_p フィールドに書込ま
れ、メソッド・テーブル425のアドレスは、インタフ
ェース・テーブル入力421に書込まれる。ブロック3
46では、メソッド・プログラムのアドレスが、メソッ
ド・テーブル430に書込まれる。例えば"学年更新"と
称されるメソッド・プログラムのアドレスが、"update_
U_degree_p"フィールド427に書込まれる。
【0041】クラスEducationと同様、図2のツリー構
造に示される次のサブクラスPhd及びJDについても、複
数のスーパー・クラスから性質を継承しない。図4はこ
れらのサブクラスが定義される様子を理解するために、
図10と関連して使用される。繰返しを避けるため、こ
れらのサブクラスを定義するために実行されるステップ
についての説明は省略する。
造に示される次のサブクラスPhd及びJDについても、複
数のスーパー・クラスから性質を継承しない。図4はこ
れらのサブクラスが定義される様子を理解するために、
図10と関連して使用される。繰返しを避けるため、こ
れらのサブクラスを定義するために実行されるステップ
についての説明は省略する。
【0042】クラスPhd/JDはクラスPhd 及びクラスJDの
両方から性質を継承し、その定義はクラスEducation、P
hd及びJDの場合とは異なる。上述のように、クライアン
ト・プログラムがクラス・オブジェクトRoot400に経
路指定されると、クラス定義ユーティリティ117が開
始される。流れ図4は、クラス定義ユーティリティ11
7により実行される最初のステップ(ブロック302)
が、適切なクラス・オブジェクトの生成であることを示
す。この場合、生成されるクラス・オブジェクトはクラ
ス・オブジェクトPhd/JD470(図11参照)である。
ユーザは次にクラス名、クラスに対応するインスタンス
変数定義、及びメソッド・プログラム・アドレスを入力
するように、それぞれブロック304、306及び30
8で要求される。この場合、クラスPhd/JDは固有のイン
スタンス変数定義を有さない。
両方から性質を継承し、その定義はクラスEducation、P
hd及びJDの場合とは異なる。上述のように、クライアン
ト・プログラムがクラス・オブジェクトRoot400に経
路指定されると、クラス定義ユーティリティ117が開
始される。流れ図4は、クラス定義ユーティリティ11
7により実行される最初のステップ(ブロック302)
が、適切なクラス・オブジェクトの生成であることを示
す。この場合、生成されるクラス・オブジェクトはクラ
ス・オブジェクトPhd/JD470(図11参照)である。
ユーザは次にクラス名、クラスに対応するインスタンス
変数定義、及びメソッド・プログラム・アドレスを入力
するように、それぞれブロック304、306及び30
8で要求される。この場合、クラスPhd/JDは固有のイン
スタンス変数定義を有さない。
【0043】クラス定義ユーティリティ117は、次に
ブロック310でユーザに対し、定義されるクラスがサ
ブクラスであるかを尋ねる。この例では、クラスPhd/JD
はクラスPhd 及びJDのサブクラスであるので、この問い
かけ肯定して返答される。図5を参照すると、ユーザは
次にブロック316で、定義されるクラスのスーパー・
クラスの名前及びレベルを催促される。名前及びレベル
は両者共に、特定のスーパー・クラスが識別されること
を保証するように、指定されなければならない。この例
では、入力されるスーパー・クラスはPhd 或いはJDであ
り、入力されるレベルは2である。初期スーパー・クラ
ス名及びレベルが入力されると、クラス定義ユーティリ
ティ117は、次にブロック318で、1次インタフェ
ース・テーブルを生成する(図11にインタフェース・
テーブル475として示される)。この場合、多重継承
が含まれるため、1次インタフェース・テーブルはイン
タフェース・テーブルの連鎖内の最初のインタフェース
・テーブルである(図3参照)。クラス定義ユーティリ
ティ117は次にブロック322で、ユーザに対し、追
加のスーパー・クラス名の入力を催促し、ブロック32
6で追加のインタフェース・テーブルを生成する(図1
1にインタフェース・テーブル480として示され
る)。インタフェース・テーブル内のほとんどのインタ
フェース・テーブル入力が同一であるため、クラス定義
ユーティリティ117は重複する入力を除去する(ブロ
ック330)。
ブロック310でユーザに対し、定義されるクラスがサ
ブクラスであるかを尋ねる。この例では、クラスPhd/JD
はクラスPhd 及びJDのサブクラスであるので、この問い
かけ肯定して返答される。図5を参照すると、ユーザは
次にブロック316で、定義されるクラスのスーパー・
クラスの名前及びレベルを催促される。名前及びレベル
は両者共に、特定のスーパー・クラスが識別されること
を保証するように、指定されなければならない。この例
では、入力されるスーパー・クラスはPhd 或いはJDであ
り、入力されるレベルは2である。初期スーパー・クラ
ス名及びレベルが入力されると、クラス定義ユーティリ
ティ117は、次にブロック318で、1次インタフェ
ース・テーブルを生成する(図11にインタフェース・
テーブル475として示される)。この場合、多重継承
が含まれるため、1次インタフェース・テーブルはイン
タフェース・テーブルの連鎖内の最初のインタフェース
・テーブルである(図3参照)。クラス定義ユーティリ
ティ117は次にブロック322で、ユーザに対し、追
加のスーパー・クラス名の入力を催促し、ブロック32
6で追加のインタフェース・テーブルを生成する(図1
1にインタフェース・テーブル480として示され
る)。インタフェース・テーブル内のほとんどのインタ
フェース・テーブル入力が同一であるため、クラス定義
ユーティリティ117は重複する入力を除去する(ブロ
ック330)。
【0044】ブロック320で、ユーザは再び追加の継
承が求められているかどうかを問われる。この例では、
Phd/JDはレベル2の2つのスーパー・クラスだけから性
質を継承するが、当業者には、本発明が同一レベル或い
は異なるレベルに存在する任意の数のスーパー・クラス
からの継承に適応することが理解されよう。複数のイン
タフェース・テーブルの生成を完了すると、クラス定義
ユーティリティ117はクラスPhd/JDに対応するメソッ
ド・テーブルを生成し、クラスPhd/JDのスーパー・クラ
ス(ここではスーパー・クラスRoot、Education、Phd、
及びJD)からメソッド・テーブルをコピーする(ブロッ
ク324)。新たなクラス(すなわちPhd/JD)は、次に
ブロック328で、クラス・レベルが割当てられる(す
なわち最も深いスーパー・クラスよりも1大きい値、こ
の場合には3が割当てられる)。ブロック332で、ク
ラス定義ユーティリティ117は、ブロック306にお
いてユーザにより入力されたインスタンス変数定義(こ
の場合には入力されていない)のオフセットを計算す
る。ブロック334で、クラス定義ユーティリティ11
7は、クラス・オブジェクトRoot(クラス・オブジェク
ト400)からインスタンス変数をコピーし、それらを
Phd/JDクラス・オブジェクト(クラス・オブジェクト4
70)に配置する。これが図11の472に示される。
承が求められているかどうかを問われる。この例では、
Phd/JDはレベル2の2つのスーパー・クラスだけから性
質を継承するが、当業者には、本発明が同一レベル或い
は異なるレベルに存在する任意の数のスーパー・クラス
からの継承に適応することが理解されよう。複数のイン
タフェース・テーブルの生成を完了すると、クラス定義
ユーティリティ117はクラスPhd/JDに対応するメソッ
ド・テーブルを生成し、クラスPhd/JDのスーパー・クラ
ス(ここではスーパー・クラスRoot、Education、Phd、
及びJD)からメソッド・テーブルをコピーする(ブロッ
ク324)。新たなクラス(すなわちPhd/JD)は、次に
ブロック328で、クラス・レベルが割当てられる(す
なわち最も深いスーパー・クラスよりも1大きい値、こ
の場合には3が割当てられる)。ブロック332で、ク
ラス定義ユーティリティ117は、ブロック306にお
いてユーザにより入力されたインスタンス変数定義(こ
の場合には入力されていない)のオフセットを計算す
る。ブロック334で、クラス定義ユーティリティ11
7は、クラス・オブジェクトRoot(クラス・オブジェク
ト400)からインスタンス変数をコピーし、それらを
Phd/JDクラス・オブジェクト(クラス・オブジェクト4
70)に配置する。これが図11の472に示される。
【0045】次のステップでは、クラス・オブジェクト
470をインタフェース・テーブル475にリンクする
(ブロック336)。これはinterface_tbl_p 473
を、インタフェース・テーブル475の開始アドレスに
等しくセットすることにより達成される。多重継承が含
まれるため(ブロック340)、クラス定義ユーティリ
ティ117は、最初に1次インタフェース・テーブル4
75を追加のインタフェース・テーブル480にリンク
し(ブロック338)、次にクラス・インスタンス変数
のオフセットを、インタフェース・テーブル475及び
480内の適切なインタフェース・テーブル入力に書込
む(ブロック342)。最後に、メソッド・テーブル及
びメソッド・プログラムのアドレスが、インタフェース
・テーブル及びメソッド・テーブルにそれぞれ書込まれ
る(ブロック344及び346)。
470をインタフェース・テーブル475にリンクする
(ブロック336)。これはinterface_tbl_p 473
を、インタフェース・テーブル475の開始アドレスに
等しくセットすることにより達成される。多重継承が含
まれるため(ブロック340)、クラス定義ユーティリ
ティ117は、最初に1次インタフェース・テーブル4
75を追加のインタフェース・テーブル480にリンク
し(ブロック338)、次にクラス・インスタンス変数
のオフセットを、インタフェース・テーブル475及び
480内の適切なインタフェース・テーブル入力に書込
む(ブロック342)。最後に、メソッド・テーブル及
びメソッド・プログラムのアドレスが、インタフェース
・テーブル及びメソッド・テーブルにそれぞれ書込まれ
る(ブロック344及び346)。
【0046】図2の構造例を構成する最後のステップで
は、特定のクラスのメンバであるオブジェクト・インス
タンスを生成する。サブクラス定義ユーティリティ11
7の呼出しの場合同様、クラスPhd/JDのオブジェクト・
インスタンスを生成しようと望むコンピュータ・システ
ム100のユーザは、インタフェース・テーブル475
及びクラスRootからコピーされたメソッド・テーブルへ
のアクセスを獲得する。このアクセスが実際に実行され
る様子については、図14及び図15に関連して説明さ
れる。メソッド・テーブル475へのアクセスが実行さ
れると、クライアント・プログラムはcreat_new_object
_p442(図8参照)を通じて、システム・オブジェク
ト・マネジャ115を呼出す。
は、特定のクラスのメンバであるオブジェクト・インス
タンスを生成する。サブクラス定義ユーティリティ11
7の呼出しの場合同様、クラスPhd/JDのオブジェクト・
インスタンスを生成しようと望むコンピュータ・システ
ム100のユーザは、インタフェース・テーブル475
及びクラスRootからコピーされたメソッド・テーブルへ
のアクセスを獲得する。このアクセスが実際に実行され
る様子については、図14及び図15に関連して説明さ
れる。メソッド・テーブル475へのアクセスが実行さ
れると、クライアント・プログラムはcreat_new_object
_p442(図8参照)を通じて、システム・オブジェク
ト・マネジャ115を呼出す。
【0047】図7は、システム・オブジェクト・マネジ
ャ115の内部作業の流れ図である。システム・オブジ
ェクト・マネジャ115は、最初にブロック360で、
オブジェクトを生成する。この例では、オブジェクト・
インスタンス455(Joe )が生成される(図12参
照)。ユーザは次にブロック362で、オブジェクト名
を入力するように催促され、引続きブロック364では
クラス及びレベルを、更にブロック366では、オブジ
ェクト・インスタンス変数の値を入力するように催促さ
れる。この値は図12の447に示される。システム・
オブジェクト・マネジャ115は、次にブロック368
で、この情報をオブジェクト455に書込む。オブジェ
クト455は、次にinterface_tbl_p 446を介して、
インタフェース・テーブル460(すなわちクラスPhd/
JDに対応するインタフェース・テーブル)にリンクされ
る。従業員"Joe" に関するデータを処理しようと望むク
ライアント・プログラムは、次に、オブジェクト・イン
スタンスJoe を呼出す。
ャ115の内部作業の流れ図である。システム・オブジ
ェクト・マネジャ115は、最初にブロック360で、
オブジェクトを生成する。この例では、オブジェクト・
インスタンス455(Joe )が生成される(図12参
照)。ユーザは次にブロック362で、オブジェクト名
を入力するように催促され、引続きブロック364では
クラス及びレベルを、更にブロック366では、オブジ
ェクト・インスタンス変数の値を入力するように催促さ
れる。この値は図12の447に示される。システム・
オブジェクト・マネジャ115は、次にブロック368
で、この情報をオブジェクト455に書込む。オブジェ
クト455は、次にinterface_tbl_p 446を介して、
インタフェース・テーブル460(すなわちクラスPhd/
JDに対応するインタフェース・テーブル)にリンクされ
る。従業員"Joe" に関するデータを処理しようと望むク
ライアント・プログラムは、次に、オブジェクト・イン
スタンスJoe を呼出す。
【0048】図16は、C++ OOP環境の基本となる
主な複合データ構造を示す。オブジェクト・インスタン
ス555は、従業員Joe に対応するオブジェクト・イン
スタンスが、C++環境において存在する様子を表してい
る。仮想ファンクション・テーブル560及び565
は、オブジェクトJoe がそのメンバに含まれるクラス
(すなわちクラスPhd及びJD)、及びクラスPhd及びJDが
サブクラスに含まれる全てのスーパー・クラス(すなわ
ちスーパー・クラスEducation及びRoot )のメソッド・
プログラムを指示するメソッド・ポインタを含む。
主な複合データ構造を示す。オブジェクト・インスタン
ス555は、従業員Joe に対応するオブジェクト・イン
スタンスが、C++環境において存在する様子を表してい
る。仮想ファンクション・テーブル560及び565
は、オブジェクトJoe がそのメンバに含まれるクラス
(すなわちクラスPhd及びJD)、及びクラスPhd及びJDが
サブクラスに含まれる全てのスーパー・クラス(すなわ
ちスーパー・クラスEducation及びRoot )のメソッド・
プログラムを指示するメソッド・ポインタを含む。
【0049】従来の技術で述べられたように、C++環境
は、メソッド・プログラムを追加する必要が生じた場
合、極めて柔軟性がない。オブジェクトの特定のクラス
に対応するメソッド・プログラムが追加される時、変更
されるクラスのメンバである全てのオブジェクト、及び
変更されるクラスのサブクラスのメンバである全てのオ
ブジェクトが作り直され、それらのメソッド・プログラ
ムが再コンパイルされなければならない。更に、それら
のオブジェクトの全てのクライアントについても、再コ
ンパイルされなければならない。この柔軟性の欠如は、
C++データ構造の設計に由来する。
は、メソッド・プログラムを追加する必要が生じた場
合、極めて柔軟性がない。オブジェクトの特定のクラス
に対応するメソッド・プログラムが追加される時、変更
されるクラスのメンバである全てのオブジェクト、及び
変更されるクラスのサブクラスのメンバである全てのオ
ブジェクトが作り直され、それらのメソッド・プログラ
ムが再コンパイルされなければならない。更に、それら
のオブジェクトの全てのクライアントについても、再コ
ンパイルされなければならない。この柔軟性の欠如は、
C++データ構造の設計に由来する。
【0050】C++環境において、クライアント・プログ
ラムがオブジェクトに経路指定される時、呼出されるメ
ソッド・プログラムを表す仮想ファンクション・テーブ
ル内の入力のオフセットが、呼出しステートメントの一
部として指定される。図16に示されるように、全階層
のメソッド・プログラムに対するポインタが、仮想ファ
ンクション・テーブル560及び565にスタックされ
る。特定のクラスにメソッド・プログラムを追加する必
要が生じる時、特定のクラスのサブクラスのメソッド・
プログラムに対するメソッド・プログラム・ポインタ
が、構造内で全てシフト・ダウンされる(すなわち、そ
れらのオフセットが変化する)。例えば、クラスEducat
ion にメソッド・プログラムを追加する場合、メソッド
・プログラムのアドレスが507及び511に挿入され
る。次に、新たなメソッド・プログラムに対するポイン
タが、以前に"Phdユニバーシティ更新"及び"法律学校更
新"に対するポインタ(すなわちupdate_Phd_univ_p50
6及びupdate_Law_school_p509)により占有されて
いたオフセットに配置される。これらのメソッド・プロ
グラムに対するポインタは、以前に他のポインタにより
占有されていたロケーションに、シフト・ダウンされ
る。
ラムがオブジェクトに経路指定される時、呼出されるメ
ソッド・プログラムを表す仮想ファンクション・テーブ
ル内の入力のオフセットが、呼出しステートメントの一
部として指定される。図16に示されるように、全階層
のメソッド・プログラムに対するポインタが、仮想ファ
ンクション・テーブル560及び565にスタックされ
る。特定のクラスにメソッド・プログラムを追加する必
要が生じる時、特定のクラスのサブクラスのメソッド・
プログラムに対するメソッド・プログラム・ポインタ
が、構造内で全てシフト・ダウンされる(すなわち、そ
れらのオフセットが変化する)。例えば、クラスEducat
ion にメソッド・プログラムを追加する場合、メソッド
・プログラムのアドレスが507及び511に挿入され
る。次に、新たなメソッド・プログラムに対するポイン
タが、以前に"Phdユニバーシティ更新"及び"法律学校更
新"に対するポインタ(すなわちupdate_Phd_univ_p50
6及びupdate_Law_school_p509)により占有されて
いたオフセットに配置される。これらのメソッド・プロ
グラムに対するポインタは、以前に他のポインタにより
占有されていたロケーションに、シフト・ダウンされ
る。
【0051】この"シフト"作用は、クラスEducation の
オブジェクトを呼出す全てのクライアント・プログラム
の再コンパイルを要求し(すなわち新たなメソッドの存
在を認識するため)、旧メソッド・プログラムの新たな
オフセットを認識するために、クラスEducationのサブ
クラス(すなわちPhd及びJD)に対応する全てのクライ
アント・プログラムの再コンパイルを要求する。
オブジェクトを呼出す全てのクライアント・プログラム
の再コンパイルを要求し(すなわち新たなメソッドの存
在を認識するため)、旧メソッド・プログラムの新たな
オフセットを認識するために、クラスEducationのサブ
クラス(すなわちPhd及びJD)に対応する全てのクライ
アント・プログラムの再コンパイルを要求する。
【0052】多くの場合において、オブジェクトの特定
クラスへのメソッド・プログラムの追加により、影響を
受けるオブジェクト及びクライアント・プログラムを判
断しようと試みるよりも、単に全てのコードを再コンパ
イルすることの方が容易である。しかしながら、このタ
イプの再コンパイルは、その実行にまる一日を費やす可
能性がある。
クラスへのメソッド・プログラムの追加により、影響を
受けるオブジェクト及びクライアント・プログラムを判
断しようと試みるよりも、単に全てのコードを再コンパ
イルすることの方が容易である。しかしながら、このタ
イプの再コンパイルは、その実行にまる一日を費やす可
能性がある。
【0053】
MOM OOP環境の利点:図13は、本発明の主要な
複合データ構造を示す。オブジェクト・インスタンス6
00は、従業員Joe に対応するオブジェクト・インスタ
ンスがMOM環境において存在する様子を表す。C++環
境の場合と異なり、MOM OOP環境では、クラスPh
d に対応するインタフェース・テーブル(すなわちイン
タフェース・テーブル605)、及び階層内の各クラス
に対応するメソッド・テーブルを含む。図13は、クラ
スEducation に対応するスーパー・クラス・メソッド・
テーブル(すなわちメソッド・テーブル615)、及び
クラスJDに対応するクラス・メソッド・テーブル(すな
わちメソッド・テーブル620)しか示していない。す
なわち、クラスRootに対応するスーパー・クラス・メソ
ッド・テーブル、及びクラスPhdに対応するクラス・メ
ソッド・テーブルは示されていない。Joeは多重継承オ
ブジェクトであるため、クラスJDに対応するインタフェ
ース・テーブル(すなわちインタフェース・テーブル6
10)もまた図13には示されている。これらの相違は
MOM OOP環境のユーザに対し、C++ OOP環境
のユーザによっては実現されない利点を提供する。前節
で述べたように、MOM環境のユーザは、特定のクラス
にメソッド・プログラムを追加するために、全コード・
ベースを再コンパイルする必要がない。
複合データ構造を示す。オブジェクト・インスタンス6
00は、従業員Joe に対応するオブジェクト・インスタ
ンスがMOM環境において存在する様子を表す。C++環
境の場合と異なり、MOM OOP環境では、クラスPh
d に対応するインタフェース・テーブル(すなわちイン
タフェース・テーブル605)、及び階層内の各クラス
に対応するメソッド・テーブルを含む。図13は、クラ
スEducation に対応するスーパー・クラス・メソッド・
テーブル(すなわちメソッド・テーブル615)、及び
クラスJDに対応するクラス・メソッド・テーブル(すな
わちメソッド・テーブル620)しか示していない。す
なわち、クラスRootに対応するスーパー・クラス・メソ
ッド・テーブル、及びクラスPhdに対応するクラス・メ
ソッド・テーブルは示されていない。Joeは多重継承オ
ブジェクトであるため、クラスJDに対応するインタフェ
ース・テーブル(すなわちインタフェース・テーブル6
10)もまた図13には示されている。これらの相違は
MOM OOP環境のユーザに対し、C++ OOP環境
のユーザによっては実現されない利点を提供する。前節
で述べたように、MOM環境のユーザは、特定のクラス
にメソッド・プログラムを追加するために、全コード・
ベースを再コンパイルする必要がない。
【0054】MOMクラスへのメソッド・プログラムの
追加:MOMクラスへのメソッド・プログラムの追加を
説明するために、上述のように、ユーザがクラスEducat
ion に対してメソッド・プログラムを追加することを希
望するものと仮定する。メソッド・プログラムに対する
ポインタが、クラスEducation に対応するメソッド・テ
ーブル(すなわちメソッド・テーブル615)の617
に追加される。C++環境の場合とは異なり、その際シフ
トは発生しない。クラスPhd 及びJDに対応するメソッド
・プログラムに対するポインタが、異なる構造内(例え
ばメソッド・テーブル620)に配置されるため、これ
らは変位されない。従って、クラスPhd/JDのオブジェク
トを使用するクライアント・プログラムは、再コンパイ
ルを要さない。新たなメソッド・プログラムへのアクセ
スを獲得する必要のあるクライアント・プログラムだけ
が、再コンパイルを要することになる。
追加:MOMクラスへのメソッド・プログラムの追加を
説明するために、上述のように、ユーザがクラスEducat
ion に対してメソッド・プログラムを追加することを希
望するものと仮定する。メソッド・プログラムに対する
ポインタが、クラスEducation に対応するメソッド・テ
ーブル(すなわちメソッド・テーブル615)の617
に追加される。C++環境の場合とは異なり、その際シフ
トは発生しない。クラスPhd 及びJDに対応するメソッド
・プログラムに対するポインタが、異なる構造内(例え
ばメソッド・テーブル620)に配置されるため、これ
らは変位されない。従って、クラスPhd/JDのオブジェク
トを使用するクライアント・プログラムは、再コンパイ
ルを要さない。新たなメソッド・プログラムへのアクセ
スを獲得する必要のあるクライアント・プログラムだけ
が、再コンパイルを要することになる。
【0055】メソッド・プログラムの効率的アクセス:
図14及び図15は、クライアント・プログラムにより
MOM環境のメソッド・プログラムが呼出される時に、
それが探索される様子を示す。図15を参照して、クラ
イアント・プログラムが従業員JoeのLaw Gpaの更新を望
むものと仮定する。クライアント・プログラムは、その
コードの一部として、呼出しステートメント("Joe.up
date_Law_Gpa"750)を有し、これによりオブジェク
トJoeが呼出される。コンパイル時、MOM呼出しステ
ートメントは、オブジェクトID、クラス・レベル、ク
ラス・シグニチャ、及びメソッド・オフセットを含む。
呼出しステートメントの実行後、クライアント・プログ
ラム・コードは、ブロック755で、オブジェクト・イ
ンスタンスJoe (図14のオブジェクト・インスタンス
700)をロードし、次にブロック760で、オブジェ
クトJoe からインタフェース・テーブル・ポインタ(図
14のinterface_tbl_p 702)をロードする。次にブ
ロック765で、クラス・レベルを使用して、正しいイ
ンタフェース・テーブル入力(すなわちクラス・レベル
1により指定されるインタフェース・テーブル入力71
1)をアクセスする。
図14及び図15は、クライアント・プログラムにより
MOM環境のメソッド・プログラムが呼出される時に、
それが探索される様子を示す。図15を参照して、クラ
イアント・プログラムが従業員JoeのLaw Gpaの更新を望
むものと仮定する。クライアント・プログラムは、その
コードの一部として、呼出しステートメント("Joe.up
date_Law_Gpa"750)を有し、これによりオブジェク
トJoeが呼出される。コンパイル時、MOM呼出しステ
ートメントは、オブジェクトID、クラス・レベル、ク
ラス・シグニチャ、及びメソッド・オフセットを含む。
呼出しステートメントの実行後、クライアント・プログ
ラム・コードは、ブロック755で、オブジェクト・イ
ンスタンスJoe (図14のオブジェクト・インスタンス
700)をロードし、次にブロック760で、オブジェ
クトJoe からインタフェース・テーブル・ポインタ(図
14のinterface_tbl_p 702)をロードする。次にブ
ロック765で、クラス・レベルを使用して、正しいイ
ンタフェース・テーブル入力(すなわちクラス・レベル
1により指定されるインタフェース・テーブル入力71
1)をアクセスする。
【0056】ブロック770で、クライアント・プログ
ラムはPhd_meth_tbl_p709により、クラスPhd に対応
するメソッド・テーブル(すなわちメソッド・テーブル
715)へのアクセスを獲得し、次にブロック775
で、メソッド・オフセットによりメソッド・シグニチャ
717をアクセスし、ブロック785で、それを呼出し
シグニチャと比較する。実施例の呼出しシグニチャ及び
クラスシグニチャは、本コンピュータ・システムの識別
番号、クラス・レベル、及びタイム・スタンプを使用し
て構成されるが、特定の識別子を生成する任意の手段が
使用可能である。この例では、クライアント・プログラ
ムが"Phd Gpa 更新"メソッド・プログラムへのアクセス
の獲得を望まないため、ブロック787でシグニチャは
合致しない。従って、クライアント・プログラムは、次
のインタフェース・テーブル・ポインタの中の情報が空
(Nill)であるかどうかをブロック790で問いかけ、
そうでない場合には、ブロック780で次のインタフェ
ース・テーブルに移行する。
ラムはPhd_meth_tbl_p709により、クラスPhd に対応
するメソッド・テーブル(すなわちメソッド・テーブル
715)へのアクセスを獲得し、次にブロック775
で、メソッド・オフセットによりメソッド・シグニチャ
717をアクセスし、ブロック785で、それを呼出し
シグニチャと比較する。実施例の呼出しシグニチャ及び
クラスシグニチャは、本コンピュータ・システムの識別
番号、クラス・レベル、及びタイム・スタンプを使用し
て構成されるが、特定の識別子を生成する任意の手段が
使用可能である。この例では、クライアント・プログラ
ムが"Phd Gpa 更新"メソッド・プログラムへのアクセス
の獲得を望まないため、ブロック787でシグニチャは
合致しない。従って、クライアント・プログラムは、次
のインタフェース・テーブル・ポインタの中の情報が空
(Nill)であるかどうかをブロック790で問いかけ、
そうでない場合には、ブロック780で次のインタフェ
ース・テーブルに移行する。
【0057】この例では、オブジェクトJoe は多重継承
オブジェクトであるため、ブロック780で入力707
はインタフェース・テーブルのアドレスを含む。この時
点において、処理は上述したように継続する。ブロック
765及び770で、インタフェース・テーブル入力及
びメソッド・テーブルがそれぞれアクセスされ、ブロッ
ク785で呼出しシグニチャが再度メソッド・プログラ
ム・シグニチャと比較される。この例では、呼出しシグ
ニチャはこの繰返しの間にメソッド・シグニチャと合致
し(ブロック787)、"Law Gpa 更新"メソッド・プロ
グラムがブロック792で呼出される。クライアント・
プログラムは次に従業員Joe に対応するLaw Gpaを更新
する。
オブジェクトであるため、ブロック780で入力707
はインタフェース・テーブルのアドレスを含む。この時
点において、処理は上述したように継続する。ブロック
765及び770で、インタフェース・テーブル入力及
びメソッド・テーブルがそれぞれアクセスされ、ブロッ
ク785で呼出しシグニチャが再度メソッド・プログラ
ム・シグニチャと比較される。この例では、呼出しシグ
ニチャはこの繰返しの間にメソッド・シグニチャと合致
し(ブロック787)、"Law Gpa 更新"メソッド・プロ
グラムがブロック792で呼出される。クライアント・
プログラムは次に従業員Joe に対応するLaw Gpaを更新
する。
【0058】本発明の別の実施例では、多重継承を要求
するオブジェクトが生成される度に、インタフェース・
テーブル及びメソッド・テーブルの動的な生成が生じ
る。実質的には、これは多重継承論理(図5及び図6)
をオブジェクト生成ステージ(図7)に移動することに
より達成される。
するオブジェクトが生成される度に、インタフェース・
テーブル及びメソッド・テーブルの動的な生成が生じ
る。実質的には、これは多重継承論理(図5及び図6)
をオブジェクト生成ステージ(図7)に移動することに
より達成される。
【0059】以上、本発明の特定の実施例について述べ
てきたが、当業者には理解されるように、本発明の精神
及び範疇内において、様々な変更が可能である。
てきたが、当業者には理解されるように、本発明の精神
及び範疇内において、様々な変更が可能である。
【図1】本発明の実施例のコンピュータ・システムを表
す図である。
す図である。
【図2】本発明のOOP環境を説明するために使用され
る仮定的多重継承OOP構成を示す図である。
る仮定的多重継承OOP構成を示す図である。
【図3】MOMインタフェース・テーブルの詳細図であ
る。
る。
【図4】MOM OOP環境が生成される様子を示す流
れ図である。
れ図である。
【図5】MOM OOP環境が生成される様子を示す流
れ図である。
れ図である。
【図6】MOM OOP環境が生成される様子を示す流
れ図である。
れ図である。
【図7】MOM OOP環境が生成される様子を示す流
れ図である。
れ図である。
【図8】MOM環境を構成するデータ構造が実際に生成
されて記憶装置に記憶される様子を示す図である。
されて記憶装置に記憶される様子を示す図である。
【図9】MOM環境を構成するデータ構造が実際に生成
されて記憶装置に記憶される様子を示す図である。
されて記憶装置に記憶される様子を示す図である。
【図10】MOM環境を構成するデータ構造が実際に生
成されて記憶装置に記憶される様子を示す図である。
成されて記憶装置に記憶される様子を示す図である。
【図11】MOM環境を構成するデータ構造が実際に生
成されて記憶装置に記憶される様子を示す図である。
成されて記憶装置に記憶される様子を示す図である。
【図12】MOM環境を構成するデータ構造が実際に生
成されて記憶装置に記憶される様子を示す図である。
成されて記憶装置に記憶される様子を示す図である。
【図13】メソッド・プログラムが複数のクラスから性
質を継承するMOMオブジェクト・インスタンスに追加
される様子を示す図である。
質を継承するMOMオブジェクト・インスタンスに追加
される様子を示す図である。
【図14】MOM OOP環境において使用されるメソ
ッド経路指定技術を示す図である。
ッド経路指定技術を示す図である。
【図15】MOM OOP環境において使用されるメソ
ッド経路指定技術を示す図である。
ッド経路指定技術を示す図である。
【図16】メソッド・プログラムが複数のクラスから性
質を継承するC++オブジェクト・インスタンスに追加さ
れる様子を示す図である。
質を継承するC++オブジェクト・インスタンスに追加さ
れる様子を示す図である。
100 コンピュータ・システム 105 中央処理ユニット(CPU) 115 システム・オブジェクト・マネジャ 117 クラス定義ユーティリティ 120 クライアント・プログラム 125 オブジェクト 130 メソッド・プログラム 135 オペレーティング・システム 140 データ記憶装置 145 端末インタフェース 150 システム・バス 200 クラス"Root" 210 クラス"Education" 218 クラス"Personnel" 220 クラス"Masters" 222 クラス"Phd" 228 クラス"JD" 240 クラス"Phd/JD" 250 MOMインタフェース・テーブル 255 メソッド・テーブル・ポインタとデータ・オフ
セット 400 クラス・オブジェクトRoot 455、600、700 オブジェクト・インスタンス 470 クラス・オブジェクトPhd/JD 560、565 仮想ファンクション・テーブル 717 メソッド・シグニチャ
セット 400 クラス・オブジェクトRoot 455、600、700 オブジェクト・インスタンス 470 クラス・オブジェクトPhd/JD 560、565 仮想ファンクション・テーブル 717 メソッド・シグニチャ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 アショク・マルホトラ アメリカ合衆国10520、ニューヨーク州 クロトン−オン−ハドソン、ヘシアン・ ヒルズ・ロード 212 (72)発明者 スティーブン・ジェイ・マンロー アメリカ合衆国55901、ミネソタ州ロチ ェスター、ノース・ウエスト、サーティ サード・ストリート 1320 (56)参考文献 特開 平3−257530(JP,A)
Claims (6)
- 【請求項1】複合データ構造を生成及び記憶する方法で
あって、 オブジェクトのインスタンスを生成するステップと、上記オブジェクトが継承する第1のクラスに対応する第
1のインタフェース・テーブルのロケーション情報を上
記オブジェクト中に記憶することによって、上記 第1の
インタフェース・テーブルを上記オブジェクト・インス
タンスに接続するステップと、上記オブジェクトが継承する第2のクラスに対応する第
2のインタフェース・テーブルのロケーション情報を上
記第1のインタフェース・テーブル中に記憶することに
よって、上記 第2のインタフェース・テーブルを上記第
1のインタフェース・テーブルに接続するステップと、上記第1のクラスに関連する第1及び第2のメソッド・
テーブルのロケーション情報を上記第1のインタフェー
ス・テーブル中に記憶することによって、上記 第1及び
第2のメソッド・テーブルを上記第1のインタフェース
・テーブルに個別に接続するステップと、上記第2のクラスに関連する第3のメソッド・テーブル
のロケーション情報を上記第2のインタフェース・テー
ブル中に記憶することによって、上記 第3のメソッド・
テーブルを上記第2のインタフェース・テーブルに接続
するステップと、 を含む方法。 - 【請求項2】上記オブジェクト・インスタンスの生成ス
テップが、 インスタンス変数を生成するステップと、 上記インスタンス変数を上記オブジェクト・インスタン
スに配置するステップと、 を含む、請求項1記載の方法。 - 【請求項3】特定のクラスに対応するメソッド・プログ
ラムを呼出す方法であって、 オブジェクトのアドレス、上記呼出しを行う上記クラス
を表すレベル、呼出しシグニチャ、及び呼出される上記
メソッド・プログラムを表すメソッド・プログラム・オ
フセットを含む呼出しステートメントを使用して、上記
オブジェクトを呼出すステップと、 上記オブジェクト・アドレスを使用して上記オブジェク
トをアクセスするステップと、 上記オブジェクトに記憶されるインタフェース・テーブ
ル・アドレスを使用して、該オブジェクトが継承する第
1のクラスに対応する第1のインタフェース・テーブル
をアクセスするステップと、 上記第1のインタフェース・テーブルに記憶され、上記
レベルによって決定される第1のメソッド・テーブル・
アドレスを使用して、上記第1のクラスに関連する第1
のメソッド・テーブルをアクセスするステップと、 上記メソッド・プログラム・オフセットを使用して、第
1のメソッド・シグニチャをアクセスするステップと、 上記第1のメソッド・シグニチャが上記呼出しシグニチ
ャに合致しないことを判断するステップと、 上記第1のインタフェース・テーブルに含まれるロケー
ション情報を使用し、該オブジェクトが継承する第2の
クラスに対応する第2のインタフェース・テーブルをア
クセスするステップと、 上記第2のインタフェース・テーブルに記憶され、上記
レベルによって決定される第2のメソッド・テーブル・
アドレスを使用して、上記第2のクラスに関連する第2
のメソッド・テーブルをアクセスするステップと、 上記メソッド・プログラム・オフセットを使用し、第2
のメソッド・シグニチャをアクセスするステップと、 上記第2のメソッド・シグニチャが上記呼出しシグニチ
ャに合致することを判断するステップと、 上記メソッド・プログラム・オフセットを使用し、メソ
ッド・プログラム・アドレスをアクセスするステップ
と、 上記メソッド・プログラム・アドレスを使用して、上記
メソッド・プログラムを呼出すステップと、 を含む方法。 - 【請求項4】上記呼出しステップが、上記メソッド・プ
ログラムに、上記オブジェクトに記憶されるオブジェク
ト・インスタンス変数をアクセスするために上記メソッ
ド・プログラムにより使用される上記オブジェクト・ア
ドレス及びデータ・オフセットを供給するステップを含
む、 請求項3記載の方法。 - 【請求項5】複合データ構造を生成及び記憶する装置で
あって、 クラス・オブジェクトを生成する手段と、 上記オブジェクトが継承する第1及び第2のクラスに対
応する第1及び第2のインタフェース・テーブルを生成
する手段と、 上記第1のクラスに関連する第1及び第2のメソッド・
テーブル並びに上記第2のクラスに関連する第3のメソ
ッド・テーブルを生成する手段と、 上記第1のインタフェース・テーブルのロケーション情
報を上記クラス・オブジェクト中に記憶することによっ
て、上記第1のインタフェース・テーブルを上記クラス
・オブジェクトに接続する手段と、 上記第2のインタフェース・テーブルのロケーション情
報を上記第1のインタフェース・テーブル中に記憶する
ことによって、上記第2のインタフェース・テーブルを
上記第1のインタフェース・テーブルに接続する手段
と、 上記第1及び上記第2のメソッド・テーブルのロケーシ
ョン情報を上記第1のインタフェース・テーブルに記憶
することによって、上記第1及び上記第2のメソッド・
テーブルを上記第1のインタフェース・テーブルに個別
に接続する手段と、 上記第3のメソッド・テーブルのロケーション情報を上
記第2のインタフェース・テーブルに記憶することによ
って、上記第3のメソッド・テーブルを上記第2のイン
タフェース・テーブルに接続する手段と、 所定のメソッド・プログラムのロケーション情報を上記
第1、上記第2及び上 記第3のメソッド・テーブルにそ
れぞれ記憶することによって、上記メソッド・プログラ
ムを各上記メソッド・テーブルに個別に接続する手段
と、 を含む装置。 - 【請求項6】上記クラス・オブジェクトのインスタンス
の生成手段が、 インスタンス変数定義を生成する手段と、 上記インスタンス変数定義を上記クラス・オブジェクト
に配置する手段と、 を含む、請求項5記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US97534792A | 1992-11-12 | 1992-11-12 | |
US975347 | 1992-11-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06266564A JPH06266564A (ja) | 1994-09-22 |
JP2597460B2 true JP2597460B2 (ja) | 1997-04-09 |
Family
ID=25522929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5273354A Expired - Lifetime JP2597460B2 (ja) | 1992-11-12 | 1993-11-01 | 複合データ構造を生成及び記憶する方法及び装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5918052A (ja) |
JP (1) | JP2597460B2 (ja) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2717280B1 (fr) * | 1994-03-10 | 1996-04-05 | Bull Sa | Procédé de gestion de l'héritage multiple d'objets persistants et partagés. |
JP3019915B2 (ja) * | 1995-11-20 | 2000-03-15 | 日本電気株式会社 | 手続き呼出し方法 |
US5907707A (en) * | 1997-01-14 | 1999-05-25 | International Business Machines Corporation | Object model for Java |
US6272133B1 (en) * | 1998-05-21 | 2001-08-07 | Inviscid Networks, Inc. | Packet filtering method |
US6185730B1 (en) * | 1998-07-23 | 2001-02-06 | International Business Machines Corporation | Method and apparatus for creating dippable beans in a java environment |
US6330711B1 (en) * | 1998-07-30 | 2001-12-11 | International Business Machines Corporation | Method and apparatus for dynamic application and maintenance of programs |
US6115719A (en) * | 1998-11-20 | 2000-09-05 | Revsoft Corporation | Java compatible object oriented component data structure |
US6263498B1 (en) * | 1998-12-03 | 2001-07-17 | International Business Machines Corporation | Method and apparatus for enabling server side distributed object modification |
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 |
US7340481B1 (en) | 2000-01-21 | 2008-03-04 | International Business Machines Corp. | Method and system for adding user-provided content to a content object stored in a data repository |
US7401097B1 (en) | 2000-01-21 | 2008-07-15 | International Business Machines Corporation | System and method for creating compilations of content |
US7613993B1 (en) | 2000-01-21 | 2009-11-03 | International Business Machines Corporation | Prerequisite checking in a system for creating compilations of content |
US7043488B1 (en) | 2000-01-21 | 2006-05-09 | International Business Machines Corporation | Method and system for storing hierarchical content objects in a data repository |
US7076494B1 (en) | 2000-01-21 | 2006-07-11 | International Business Machines Corporation | Providing a functional layer for facilitating creation and manipulation of compilations of content |
US8589777B1 (en) | 2000-01-21 | 2013-11-19 | International Business Machines Corporation | Method and system for calculating cost of a compilation of content |
US7346844B1 (en) | 2000-01-21 | 2008-03-18 | International Business Machines, Corporation | Method and system for moving content in a content object stored in a data repository |
US6986102B1 (en) * | 2000-01-21 | 2006-01-10 | International Business Machines Corporation | Method and configurable model for storing hierarchical data in a non-hierarchical data repository |
US7089239B1 (en) | 2000-01-21 | 2006-08-08 | International Business Machines Corporation | Method and system for preventing mutually exclusive content entities stored in a data repository to be included in the same compilation of content |
US7007034B1 (en) | 2000-01-21 | 2006-02-28 | International Business Machines Corporation | File structure for storing content objects in a data repository |
US7356766B1 (en) | 2000-01-21 | 2008-04-08 | International Business Machines Corp. | Method and system for adding content to a content object stored in a data repository |
GB2371378A (en) | 2000-10-12 | 2002-07-24 | Abb Ab | Object oriented control system |
US7296032B1 (en) | 2001-05-17 | 2007-11-13 | Fotiva, Inc. | Digital media organization and access |
US7853507B2 (en) * | 2003-06-23 | 2010-12-14 | Omx Technology Ab | Method for organizing financial instruments in a CSD-system |
US20060064671A1 (en) * | 2004-09-20 | 2006-03-23 | Klaus Herter | Creating and using a building block |
US7421699B2 (en) * | 2004-12-08 | 2008-09-02 | Sap Ag | Service meta model for an enterprise service architecture |
US8615734B2 (en) * | 2007-11-09 | 2013-12-24 | Oracle International Corporation | System and method for dynamically redefining class files in an application server environment |
US20090319982A1 (en) * | 2008-06-24 | 2009-12-24 | Microsoft Corporation | Multiple Code Inheritance with Explicit Base Calling |
US8316350B2 (en) * | 2008-11-20 | 2012-11-20 | Sap Aktiengesellschaft | Interface versioning |
US20110029951A1 (en) * | 2009-07-30 | 2011-02-03 | International Business Machines Corporation | Visually Presenting Inherited Members in Object-Oriented Languages |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2808672B2 (ja) * | 1989-05-31 | 1998-10-08 | 株式会社日立製作所 | オブジェクト指向言語のクラスを用いるメリッド決定方法 |
JPH0833862B2 (ja) * | 1989-10-23 | 1996-03-29 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | オブジエクト指向コンピユータ・システム |
US5075848A (en) * | 1989-12-22 | 1991-12-24 | Intel Corporation | Object lifetime control in an object-oriented memory protection mechanism |
JPH03257530A (ja) * | 1990-03-07 | 1991-11-18 | Fujitsu Ltd | オブジェクト指向プログラムの実行処理方式 |
US5247651A (en) * | 1990-04-17 | 1993-09-21 | At&T Bell Laboratories | Interactive computer program specification and simulation system |
US5237654A (en) * | 1990-04-17 | 1993-08-17 | International Business Machines Corporation | Hierarchical inter-panel process flow control |
JPH047640A (ja) * | 1990-04-25 | 1992-01-13 | Hitachi Ltd | クラス継承解決処理方法 |
US5291583A (en) * | 1990-12-14 | 1994-03-01 | Racal-Datacom, Inc. | Automatic storage of persistent ASN.1 objects in a relational schema |
US5119475A (en) * | 1991-03-13 | 1992-06-02 | Schlumberger Technology Corporation | Object-oriented framework for menu definition |
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 |
US5404525A (en) * | 1992-09-30 | 1995-04-04 | International Business Machines Corporation | Efficient method router that supports multiple simultaneous object versions |
-
1993
- 1993-11-01 JP JP5273354A patent/JP2597460B2/ja not_active Expired - Lifetime
-
1994
- 1994-11-16 US US08/341,333 patent/US5918052A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US5918052A (en) | 1999-06-29 |
JPH06266564A (ja) | 1994-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2597460B2 (ja) | 複合データ構造を生成及び記憶する方法及び装置 | |
JP2986042B2 (ja) | オブジェクト指向プログラミング環境を変更するための方法及び装置 | |
US5692183A (en) | Methods and apparatus for providing transparent persistence in a distributed object operating environment | |
US6104874A (en) | Object oriented framework mechanism for order processing including pre-defined extensible classes for defining an order processing environment | |
US5557793A (en) | In an object oriented repository, a method for treating a group of objects as a single object during execution of an operation | |
US5675804A (en) | System and method for enabling a compiled computer program to invoke an interpretive computer program | |
US6016495A (en) | Object-oriented framework mechanism for providing persistent storage | |
US5721925A (en) | Method for generically invoking operation in an object oriented repository | |
US5644770A (en) | Coupling rules to an object-oriented program | |
US5581755A (en) | Method for maintaining a history of system data and processes for an enterprise | |
EP0855056B1 (en) | Object-oriented method maintenance mechanism that does not require cessation of the computer system | |
US6976144B1 (en) | Methods and apparatus for digital data processing with mutable inheritance | |
US6434739B1 (en) | Object oriented framework mechanism for multi-target source code processing | |
US5758348A (en) | Method for generically manipulating properties of objects in an object oriented repository | |
JP2000187594A (ja) | インタ―フェ―スのランタイム付加 | |
US5901314A (en) | Method for reducing the size of computer programs | |
US7421715B1 (en) | System and method for dynamic late-binding of persistent object implementations in software-based systems | |
US6219835B1 (en) | Multi-language DCE remote procedure call | |
US20020083212A1 (en) | Automatic feature augmentation for component based application programming interfaces | |
US5787001A (en) | Method for using sorting techniques in a type-safe way | |
Wolczko | Semantics of object-oriented languages | |
Shaw et al. | Toward relaxing assumptions in languages and their implementations | |
KR100259447B1 (ko) | 객체 지향 서버에서 오브젝트 서비스를 이진 클래스에 부가하기 위한 시스템, 방법 및 제조사항 | |
US7246135B2 (en) | Sharing classes between programs | |
US6715148B1 (en) | Efficient method router that supports multiple simultaneous object versions |