JPH08320790A - メソッド呼び出し方法及びメソッド追加・削除方法 - Google Patents

メソッド呼び出し方法及びメソッド追加・削除方法

Info

Publication number
JPH08320790A
JPH08320790A JP7126770A JP12677095A JPH08320790A JP H08320790 A JPH08320790 A JP H08320790A JP 7126770 A JP7126770 A JP 7126770A JP 12677095 A JP12677095 A JP 12677095A JP H08320790 A JPH08320790 A JP H08320790A
Authority
JP
Japan
Prior art keywords
class
index value
instruction code
memory
index
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.)
Pending
Application number
JP7126770A
Other languages
English (en)
Inventor
Mamoru Sakamoto
守 坂本
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP7126770A priority Critical patent/JPH08320790A/ja
Publication of JPH08320790A publication Critical patent/JPH08320790A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】 メソッドの追加,削除を行った場合の再コン
パイル処理を高速に行うシステムの呼び出し方法及びメ
ソッド追加・削除方法の提供。 【構成】 オブジェクト61がメソッドを呼び出すメッ
セージを受けると、このメソッドに対応するインデック
ス変数66を特定し、このインデックス変数66をアク
セスしてインデックス値68を得る。そしてメソッドテ
ーブル22からインデックス値68と対応するメソッド
アドレスを得てメッセージにメソッドをバインディング
する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はオブジェクト指向アプリ
ケーション・プログラムを実行するシステムに関するも
のであり、特にメソッドの呼び出し方法及びメソッドの
追加・削除方法に関する。
【0002】
【従来の技術】先ず、本発明が対象としているオブジェ
クト指向言語について、必要な点を簡単に説明する。
【0003】オブジェクト指向言語では、メモリ上の構
造データへ処理依頼を送るという形式で処理が進められ
る。この構造データをオブジェクトと呼び、処理依頼を
メッセージと呼ぶ。オブジェクトはこのオブジェクトが
専有しているデータ(以下インスタンス変数という)及
び受け取ったメッセージに対応して前記インスタンス変
数を操作する手続き(以下メソッドという)とからな
り、同じ構造を有しているオブジェクト同士は同じクラ
スにまとめられている。また、クラスからはこのクラス
の構造に従って、更に複雑な構造を持つオブジェクトを
生成することができ、この生成したオブジェクトを前記
クラスのインスタンスと呼ぶ。
【0004】あるクラスの1つのインスタンスとしての
オブジェクトが受け取ったメッセージは、そのオブジェ
クトが属するクラスにおいて、そのメッセージに対応す
るメソッドの実行を通して処理される。このようにある
メッセージに対して実行すべきメソッドを対応付ける処
理をバインディングと呼ぶ。
【0005】また、オブジェクト指向言語の機能の1つ
として、既存のクラスを元にしてこれに新しいメソッド
及びインスタンス変数を追加することによって新たなク
ラスを作ることができる。このとき、新しく作られたク
ラスを元のクラスの派生クラス、元のクラスを新しく作
られたクラスの基本クラスと呼ぶ。派生クラスから新た
にクラスを作る(派生させる)こともできる。このと
き、派生クラスのオブジェクトは基本クラスのオブジェ
クトにおいて利用可能なメソッド及びインスタンス変数
を利用可能になしてあり、これを継承という。更に、派
生クラスにおいて基本クラスから継承したメソッドに変
更を加えて、派生クラスのメソッドとして新たに定義し
直すオーバーライドという機能がある。
【0006】次に、上述のオブジェクト指向言語をコン
パイルして生成したオブジェクト指向アプリケーション
プログラムを実行するシステムの基本的な構成及びこの
処理手順を図面に基づき説明する。
【0007】図33は従来のオブジェクト指向アプリケ
ーション・プログラムを実行するシステムにおけるクラ
スの概念図である。図33(a)において以下に説明す
る各構成要素はコンピュータのメモリ上に定義されるも
のであって、1はあるクラスに属するオブジェクトであ
り、専有のデータを格納する格納領域2を有する。3は
オブジェクトが有するメソッド群であって、これらメソ
ッドをコンパイルして生成した命令コードを格納してあ
るアドレスがポインタ4によって示されている。5はメ
ソッド群3のメソッド名とそれぞれのメソッドのメモリ
上の開始アドレスであるメソッドアドレスを表すポイン
タ4とを対応させたテーブルである。更にオブジェクト
1の格納領域2にはそれ自身が有するメソッドのメソッ
ド名が格納されている。
【0008】なお、メソッド群3のうち、メソッドA,
Cはこのクラスの基本クラス(図示せず)から継承した
メソッドであり、メソッドQ::Bは基本クラスのメソッ
ドBをオーバーライドしたメソッドである。またメソッ
ドDはこのクラスにおいて追加されたメソッドである。
【0009】オブジェクト1は他のオブジェクトからメ
ソッドを呼び出すメッセージを受けると、このメッセー
ジによりメソッド名を確定し、テーブル5の先頭から順
番に検索してメッセージから確定したメソッド名とテー
ブル5のメソッド名とが一致した場合にバインディング
を行う。この例ではオブジェクト1はメッセージからメ
ソッド名“D”を確定するとこの“D”とテーブル5の
メソッド名とをテーブル5の先頭から順番に比較検索し
て、最後の項目においてメッセージから確定したメソッ
ド名とテーブル5のメソッド名とが一致することを判断
してメッセージにメソッドアドレスを対応させる。
【0010】次に、あるクラスにメソッドを追加する処
理手順を図33(a)のクラスの基本クラス(図示せ
ず)にメソッドFを追加する場合について説明する。ま
ずメソッドFを図のクラスの基本クラスのメソッド群と
同一メモリ上に定義した後、このクラスのテーブルを作
成する。ここでメソッドA,B,C,Fのエントリの位
置がこの順序に確定する。続いてこの基本クラスの派生
クラスである図のクラスのテーブルを作成する。
【0011】図33(b)は上述の追加処理の結果を示
すクラスの概念図である。図において13はメソッド群
であって、メソッドFは図のクラスの基本クラスにおい
て追加されたメソッドである。15は図のクラスのテー
ブルであって、このクラスの基本クラスから継承したテ
ーブルに図のクラスにおいて定義されるメソッドDのエ
ントリを追加したものである。従って、テーブル15の
メソッドDに対応するエントリの位置は追加処理前のテ
ーブル5のこれと異なっている。
【0012】上述の追加処理はメソッドを追加したクラ
ス及びこのクラスのメソッドを継承する全てのクラスに
対して行う。さて、図33(b)のクラスにおいてメソ
ッドDをバインディングする場合、上述のように追加処
理によってメソッドDに対応するエントリの位置が変化
しているが、エントリを順番に比較するのでテーブルに
目的のメソッドDに対応するエントリが存在していると
きはその位置に関係なく正確にバインディングできる。
【0013】上述の如きオブジェクト指向アプリケーシ
ョン・プログラムにおいて、実行速度の高速化のために
はメソッドのバインディングに必要な時間がボトルネッ
クとなる。この問題を解決するためにメソッドアドレス
の表をメソッドテーブルとして用意しておき、メソッド
名を逐次比較するかわりにメソッドアドレスの格納位置
をインデックスにしてインデックスに対応するメソッド
アドレスを求める構成により検索時間を短縮し、実行速
度の高速化を実現するオブジェクト指向アプリケーショ
ン・プログラムを実行するシステムが特開平5−200
82号公報において提案されている。
【0014】図34は上述のメソッドテーブルの構成を
示す概念図である。メソッドテーブルはあるクラスに属
するメソッドのメモリ上におけるアドレスであるメソッ
ドアドレスとこの格納位置を表すインデックス値とを対
応させたテーブルであって、このインデックス値はコン
パイル時に決定される。
【0015】以下に図34に基づきクラスP及びこの派
生クラスであるクラスQ,Rのメソッドテーブルの構成
を詳述する。あるクラスが継承したメソッドを持つ場
合、このクラスのメソッドテーブルの先頭にまず継承し
たメソッドのメソッドアドレスを格納し、その後に前記
クラスにおいて追加したメソッドのメソッドアドレスを
格納する手順になっている。図において21はクラスP
において使用可能なメソッドのメソッドアドレスのメソ
ッドテーブルである。クラスPはこの母体である基本ク
ラスから継承したメソッドにメソッドA,B,Cを追加
したものである。メソッドテーブル21のインデックス
[0]〜[3]に対応させてあるメソッドアドレスは基
本クラスから継承したメソッドのアドレスである。
【0016】またインデックス[4]〜[6]に対応さ
せてあるメソッドアドレスはクラスPにおいて追加した
メソッドA,B,Cとこの順序に従って対応する。22
はクラスPから継承したメソッドにメソッドDを追加
し、メソッドBをオーバーライドしたクラスQのメソッ
ドテーブルである。前記処理手順に基づき、メソッドテ
ーブル22のインデックス[0]〜[3]に対応させて
あるメソッドアドレスはクラスPの基本クラスから継承
したメソッドに対応し、インデックス[4]及び[6]
に対応させてあるメソッドアドレスはクラスPにおいて
追加したメソッドに対応する。またインデックス[5]
及び[7]に対応させてあるメソッドアドレスはクラス
QにおいてオーバーライドされたメソッドQ::B及びク
ラスQにおいて追加したメソッドDにそれぞれ対応す
る。
【0017】上述の様にクラスPのメソッドテーブル2
1及びクラスPの派生クラスQのメソッドテーブル22
において、2つのクラス間で継承されたメソッドのメソ
ッドアドレスの格納位置、つまりインデックス値が同一
になる。これにより継承されたメソッドについては、そ
の派生元のクラスと派生先のクラスにおいて同じインデ
ックス値を使用することができる。
【0018】更に、23はクラスPから継承したメソッ
ドにメソッドEを追加したクラスRのメソッドテーブル
である。クラスQと同じく前記手順に基づき、メソッド
テーブル23のインデックス[0]〜[3]に対応させ
てあるメソッドアドレスはクラスPの基本クラスから継
承したメソッドに対応し、インデックス[4]〜[6]
に対応させてあるメソッドアドレスは、クラスPにおい
て追加したメソッドに対応する。更にインデックス
[7]に対応させてあるメソッドアドレスは、クラスR
において追加したメソッドEに対応する。
【0019】次に前述の特開平5−20082号公報に
おいて提案されたオブジェクト指向アプリケーション・
プログラムを実行するシステムの構成及びこの処理手順
を図面に基づき説明する。図35は前述のシステムにお
いて図34に基づき説明したクラスQの概念図である。
図35において以下に説明する各構成要素はコンピュー
タのメモリ上に定義されるものであって、31はクラス
Qに属するオブジェクトであり、専有のデータを格納す
る格納領域32を有する。
【0020】33はオブジェクト31が有するメソッド
群であって、これらを格納してあるアドレスがポインタ
34によって示されている。22はメソッド群33のメ
ソッド名とそれぞれのメソッドのメソッドアドレスを表
すポインタ34とを対応させたテーブルであって、図3
4に基づき説明したクラスQのメソッドテーブル22に
相当する。また、ポインタ36は図34に基づき説明し
たインデックス値に略相当する。
【0021】更に、オブジェクト31の格納領域32に
は受け取ったメッセージの種類に応じてバインディング
すべきメソッドのメソッドアドレスの格納位置を示すイ
ンデックス値を指定することが可能である。図36は上
述のオブジェクト指向アプリケーション・プログラムを
実行するシステムのメッセージとメソッドとのバインデ
ィングの手順を示すフローチャートである。
【0022】図36においてオブジェクト31がメソッ
ドを呼び出すメッセージを受けたとき、先ずそのオブジ
ェクト31が持つポインタ(図示せず)からメソッドテ
ーブル22のアドレス(先頭のメソッドアドレスの格納
位置)を得る(S41)。次にこのオブジェクトは、受
けたメッセージにバインディングすべきメソッド33の
アドレスの格納位置を表すインデックス値及びメソッド
テーブル22のアドレスからメッセージに対応するメソ
ッドのアドレスを得る(S42)。
【0023】つまり図35の例においてオブジェクト3
1が他のオブジェクトからメッセージを受取り、このメ
ッセージにメソッドDをバインディングするとき、オブ
ジェクト31はインデックス値“7”を求めて、メソッ
ドテーブル22のアドレス及びメソッドDのインデック
ス値“7”に相当するポインタ36並びにポインタ34
を通してメッセージにメソッドをバインディングするの
である。
【0024】次にメソッドの追加処理について説明す
る。図37は図33に基づき説明したメソッドの追加処
理手順に従い図35のクラスの基本クラスにメソッドF
を追加した場合のクラスの概念図である。図において5
3はメソッド群であって、メソッドFは基本クラスにお
いて追加されたメソッドである。55はメソッドテーブ
ルであって、このクラスが新たに継承するメソッドFの
メソッドアドレスとポインタ34とを対応させてある。
他の同一構成要素には同一符号を付して説明を省略す
る。
【0025】さて、図37において図35と同様にオブ
ジェクト31が他のオブジェクトからメッセージを受取
り、このメッセージにメソッドDをバインディングする
とき、ポインタ36からは同じインデックス値“7”が
求まるが、メソッドテーブル55におけるインデックス
値“7”に対応するメソッドはメソッドFであるので、
誤ってメソッドFをバインディングしてしまう。
【0026】つまり、あるオブジェクトが他のオブジェ
クトのメソッドをバインディングする場合、コンパイル
時に決定するインデックス値に基づきメソッドテーブル
中のメソッドアドレスを特定するのでメソッドの追加及
び削除によってあるクラスのメソッドテーブルのインデ
ックス値とメソッドとの対応に変化が生じたとき、メソ
ッドを追加及び削除したクラス並びにこのクラスのメソ
ッドを継承する全てのメソッドに限定して再コンパイル
を行っていたのでは正確にバインディングできない状況
が生じる。
【0027】従ってこの場合は前記メソッドテーブル中
においてメソッドとの対応に変化のあったインデックス
値を格納している全てのクラスを再コンパイルして正し
いインデックス値に修正しておく必要がある。
【0028】
【発明が解決しようとする課題】以上のように図35に
基づき詳述した従来のオブジェクト指向アプリケーショ
ン・プログラムを実行するシステムは、コンパイル時に
予め決定されるインデックス値に基づいてバインディン
グするメソッドを決定するので、あるクラス内において
メソッドの追加,削除が行われた場合に、このクラス内
だけを再コンパイルしたのでは目的のメソッドをバイン
ディングできない場合がある。
【0029】従って正確にバインディングを行うために
は、追加,削除によって変化したインデックス値に対応
するメソッドを呼び出す他のメソッドが属するクラスに
ついても再コンパイルする必要が生じ、この再コンパイ
ルには図33に基づき説明した基本的な構成のオブジェ
クト指向アプリケーション・プログラムを実行するシス
テムより多くの時間が必要になる。
【0030】本発明は斯かる事情に鑑みてなされたもの
であり、再コンパイル処理を高速に行うことが可能なメ
ソッド呼び出し方法の提供を目的とする。また、再コン
パイル処理を高速に行うメソッドの追加,削除方法の提
供を第2の目的とする。
【0031】
【課題を解決するための手段】第1発明に係るメソッド
呼び出し方法は、メソッド夫々に対応するインデックス
値を代入したインデックス変数をメモリ上に定義してお
き、メソッドを呼び出すときに、このメソッドに対応す
るインデックス変数を指定して、インデックス値を求
め、メソッドテーブルから前記インデックス値に対応す
るメソッドの開始アドレスを求めることを特徴とする。
【0032】第2発明に係るメソッド追加方法は、メソ
ッド夫々に対応するインデックス値を代入したインデッ
クス変数をメモリ上に定義しておき、追加するメソッド
をコンパイルして生成された命令コードを前記メモリ上
に定義し、メソッドテーブルの拡張したエントリのイン
デックス値に前記命令コードの開始アドレスを対応さ
せ、変更されたインデックス値を該インデックス値と対
応するメソッドのインデックス変数に代入することを特
徴とする。
【0033】第3発明に係るメソッド削除方法は、メソ
ッド夫々に対応するインデックス値を代入したインデッ
クス変数をメモリ上に定義しておき、メソッドテーブル
から削除するメソッドの命令コードに対応するエントリ
を削除し、変更されたインデックス値を該インデックス
値と対応するメソッドのインデックス変数に代入するこ
とを特徴とする。
【0034】第4発明に係るメソッド追加方法は、メソ
ッドを追加するクラス及びこのクラスの全ての派生クラ
スのメソッドテーブルの中で最もサイズが大きいメソッ
ドテーブルのインデックス値の上限より大きい値を、追
加するメソッドに対応するインデックス値に設定するこ
とを特徴とする。
【0035】第5発明に係るメソッド削除方法は、エラ
ー発生メソッドを定義して、このエラー発生メソッドの
開始アドレスをメソッドテーブルの削除するメソッドの
メソッドアドレスとして登録することを特徴とする。
【0036】第6発明に係るメソッド追加方法は、メソ
ッド夫々に該メソッドを呼び出す他のメソッドの命令コ
ードの開始アドレスを保持する被参照テーブルをメモリ
上に定義しておき、追加するメソッドをコンパイルして
生成された命令コードを前記メモリ上に定義し、メソッ
ドテーブルの拡張したエントリのインデックス値に前記
命令コードの開始アドレス対応させ、変更されたインデ
ックス値に対応するメソッドを呼び出す他のメソッドを
被参照テーブルにより求めることを特徴とする。
【0037】第7発明に係るメソッド削除方法は、メソ
ッド夫々に該メソッドを呼び出す他のメソッドの命令コ
ードの開始アドレスを保持する被参照テーブルをメモリ
上に定義しておき、メソッドテーブルから削除するメソ
ッドの命令コードに対応するエントリを削除し、変更さ
れたインデックス値に対応するメソッドを呼び出す他の
メソッドを被参照テーブルにより求めることを特徴とす
る。
【0038】
【作用】第1発明のメソッド呼び出し方法では、メソッ
ドに対応するインデックス変数を指定し、このインデッ
クス変数から獲得したインデックス値と対応するメソッ
ドの開始アドレスをメソッドテーブルから求める。
【0039】第2発明のメソッド追加方法では、メソッ
ド夫々に対応するインデックス値を代入したインデック
ス変数をメモリ上に定義しておき、メソッドの追加によ
って変更されたインデックス値を該インデックス値と対
応するメソッドのインデックス変数に代入することでイ
ンデックス値の変更に影響されないメソッド呼び出しを
行う。
【0040】第3発明のメソッド削除方法では、メソッ
ド夫々に対応するインデックス値を代入したインデック
ス変数をメモリ上に定義しておき、メソッドの削除によ
って変更されたインデックス値を該インデックス値と対
応するメソッドのインデックス変数に代入することでイ
ンデックス値の変更に影響されないメソッド呼び出しを
行う。
【0041】第4発明のメソッド追加方法では、メソッ
ドを追加するクラス及びこのクラスのメソッドを継承す
る全ての派生クラス中で最も大きいメソッドテーブルの
インデックス値の上限より後に格納位置を定めて、前記
メソッドを追加するクラス及びこのクラスのメソッドを
継承する全ての派生クラスのメソッドテーブルの前記格
納位置に追加するメソッドのアドレスを対応させること
でインデックス値を変更させない。
【0042】第5発明のメソッド削除方法では、エラー
発生メソッドを定義して、メソッドを削除するクラス及
びこのクラスのメソッドを継承する全ての派生クラスの
メソッドテーブルにおける削除するメソッドの開始アド
レスとして前記エラー発生メソッドの開始アドレスを対
応させることでインデックス値を変更させない。
【0043】第6発明のメソッド追加方法では、メソッ
ド夫々に該メソッドを呼び出す他のメソッドの命令コー
ドの開始アドレスを保持する被参照テーブルをメモリ上
に定義しておき、メソッドの追加によって変更されたイ
ンデックス値に対応するメソッドを呼び出す他のメソッ
ドを被参照テーブルにより求めて、前記他のメソッドの
インデックス値を変更することで再コンパイルの処理箇
所を限定する。
【0044】第7発明のメソッド削除方法では、メソッ
ド夫々に該メソッドを呼び出す他のメソッドの命令コー
ドの開始アドレスを保持する被参照テーブルをメモリ上
に定義しておき、メソッドの削除によって変更されたイ
ンデックス値に対応するメソッドを呼び出す他のメソッ
ドを被参照テーブルにより求めて、前記他のメソッドの
インデックス値を変更することで再コンパイルの処理箇
所を限定する。
【0045】
【実施例】
(実施例1)以下本発明をその実施例を示す図面に基づ
いて説明する。図1は本発明に係るオブジェクト指向ア
プリケーション・プログラムを実行するシステムのクラ
スの概念図である。図1において以下に説明する各構成
要素はコンピュータのメモリ上に定義されるものであ
る。61は図34に基づき説明したクラスQに属するオ
ブジェクトであり、専有のデータを格納する格納領域6
2を有する。33は、オブジェクト61が有するメソッ
ド群であって、これらメソッドをコンパイルして生成し
た命令コードを定義したメモリ上の開始アドレスである
メソッドアドレスがポインタ34により示されている。
【0046】22は、クラスQにおいて使用可能なメソ
ッドのメソッドアドレスを示すポインタ34とインデッ
クス値とを対応させたメソッドテーブルである。66は
メソッドテーブル22のそれぞれのエントリに1対1に
対応するインデックス値68を格納するインデックス変
数である。オブジェクト61は受取ったメッセージの種
類に応じてインデックス変数を選択すべくなしてあり、
このインデックス変数を指定するためのインデックス変
数へのポインタ67を持っている。
【0047】図2はこのシステムにおいて、メッセージ
にメソッドをバインディングする処理手順を示すフロー
チャートである。例えばクラスQのあるオブジェクト6
1はメソッドDを呼び出すメッセージを受けると、メソ
ッドDに対応するインデックス変数66を特定する(S
71)。次にこのインデックス変数66をアクセスして
メソッドDに対応するインデックス値“7”を得る(S
72)。そしてメソッドテーブル22からインデックス
値“7”と対応するメソッドDのメソッドアドレスを得
る(S73)。以上の処理手順に従ってメッセージに対
応するメソッドをバインディングするのである。
【0048】図3は本発明に係るオブジェクト指向アプ
リケーション・プログラムを実行するシステムのクラス
関係を示す概念図である。図において、クラスPのクラ
スデータ91には基本クラスのクラスデータ94のポイ
ンタbase,派生クラスリスト95へのポインタde
rive,メソッドリスト96のポインタmlist,
メソッドテーブル97へのポインタmtblがある。
【0049】派生クラスリスト95はリンクリストで構
成されており、リストの各要素には派生クラスのクラス
データ92,93へのポインタ及び次の要素へのリンク
ポインタを持つ。メソッドリスト96はリンクリストで
構成されており、リストの各要素にはメソッド名,イン
デックス変数のアドレス及び次の要素へのリンクポイン
タを持つ。メソッドテーブル97は、クラスPのオブジ
ェクトが持つ全てのメソッドのアドレスの配列である。
【0050】インデックス[0]〜[3]に対応させて
あるアドレスは基本クラスから継承したメソッドのアド
レスであり、インデックス[0]にはエラー処理を行う
メソッドのアドレスを対応させてある。インデックス
[4]〜[6]にはクラスPにおいて追加したメソッド
A,B,Cのアドレスをこの順序に格納してある。クラ
スQのメソッドテーブル98はメソッドテーブル97を
受け継いだ上で、インデックス[5]にはクラスQにお
いてオーバーライドしたメソッドBのアドレスを対応さ
せてあり、またインデックス[7]にはクラスQにおい
て、追加したメソッドDのアドレスを対応させてある。
クラスRのメソッドテーブル99はメソッドテーブル9
7を受け継いだ上でインデックス[7]にはクラスRに
おいて追加したメソッドEのアドレスを対応させてあ
る。
【0051】次に上述のオブジェクト指向アプリケーシ
ョン・プログラムを実行するシステムにおけるメソッド
の追加処理手順を図面に基づき詳述する。図4,5,
6,7は上述のメソッドの追加処理手順を示すフローチ
ャートである。以下に図3に基づき前述したプログラム
を実行するシステムにおいてクラスPにメソッドFを追
加する処理手順に従って図4,5,6,7を説明する。
【0052】図4においてクラスPにメソッドFを追加
する場合、メソッドFをクラスPと同一メモリ上に定義
した後に、処理対象クラスとしてクラスP,追加するメ
ソッドのメソッド名として“F”及びメソッドFのメソ
ッドアドレスを与えられて、クラスPのメソッドリスト
96にメソッド名が“F”であるメソッドが存在するか
否かを検索する(S101,102)。
【0053】メソッド名が“F”であるメソッドが存在
したとき、そのメソッドのインデックス値をIx に格納
する(S103)。次にクラスPのメソッドテーブルの
xに対応するメソッドアドレスをXad0 に格納してお
き(S104)、このIx に追加したメソッドFのメソ
ッドアドレスを対応させる(S105)。更にクラスP
のメソッドを継承する全ての派生クラス(図3における
クラスQ,R)のメソッドテーブルを変更する(S10
6)。
【0054】図5は上述の処理手順におけるS106に
相当する処理手順を示すフローチャートである。図5に
おいてメソッドを追加したクラスPの派生クラスである
クラスQ,Rからメソッドテーブルを変更していないク
ラス、クラスQを選択する(S111,112)。この
クラスQのメソッドテーブルの前記Ix に対応するメソ
ッドアドレスと前記Xad0 とを比較し(S113)、両
者が異なる場合は、S111に戻り処理を繰り返す。両
者が同じである場合は、クラスQのメソッドテーブルの
x に追加したメソッドFのメソッドアドレスを対応さ
せる(S114)。
【0055】更にクラスQの派生クラスについて、クラ
スQを処理対象クラスに置き換え、図5におけるS11
1からS115の処理手順を実現している命令コードを
再帰呼び出しして上述の処理手順によりクラスQの派生
クラスのメソッドテーブルを変更する(S115)。以
下、S111に戻って上述の処理をクラスPの他の派生
クラスであるクラスRについて同様に行い全ての派生ク
ラスのメソッドテーブルを変更する。以上の図4におけ
るS103からS106の処理手順及び図5におけるS
111からS115の処理手順により、オーバーライド
の機能を実現している。
【0056】一方図4におけるS102の処理において
クラスPにメソッド名“F”を持つメソッドが存在しな
かった場合、更にクラスPの派生クラスにおいて存在す
るか否かを検索して(S107,108)、存在したと
きはエラー処理を行って終了する(S109)。図3に
示したオブジェクト指向アプリケーション・プログラム
を実行するシステムにおいて、クラスQ,Rにメソッド
名が“F”であるメソッドは存在しないので、クラスP
のメソッドテーブル97のエントリを拡張してメソッド
Fを登録する(S110)。
【0057】図6は上述の処理手順におけるS110に
相当する処理手順を示すフローチャートである。図6に
おいて、メソッドを追加したクラスPのメソッドテーブ
ル97のエントリを1つ増やし、このサイズをSZに格
納する(S121)。次にSZ−1をインデックス値と
してIx に格納し、クラスPと同一メモリ上にインデッ
クス変数を定義して、これにIx の値を格納する(S1
22)。SZ−1とするのは、インデックス値を“0”
から割当てているからである。追加したメソッド名
“F”及びS122において定義したインデックス変数
をクラスPのメソッドリスト96に追加し(S12
3)、クラスPのエントリを増やしたメソッドテーブル
のIx に追加したメソッドFのメソッドアドレスを対応
させる(S124)。更にクラスPのメソッドを継承す
る全ての派生クラスのメソッドテーブルを変更する(S
125)。
【0058】図7は上述の処理手順におけるS125に
相当する処理手順を示すフローチャートである。図7に
おいて、メソッドを追加したクラスPの派生クラスであ
るクラスQ,Rからメソッドテーブルを変更していない
クラス、クラスQを選択する(S131,132)。こ
のクラスQのメソッドリストのメソッドに対応するイン
デックス変数の値を1増やす(S133)。これはクラ
スQの基本クラスであるクラスPにおいて、インデック
ス値の上限が1増加したことによりインデックス変数の
値がずれてくるのを補正するためである。
【0059】そしてクラスQのメソッドテーブル98の
インデックス値の上限をImax に格納しておいて(S1
34)、このメソッドテーブル98のエントリを1つ増
やし(S135)、このメソッドテーブルのIx 以降の
エントリをメソッドテーブルの上限方向に向かって1つ
ずつずらした後に(S136)、このメソッドテーブル
のIx に追加したメソッドFのメソッドアドレスを対応
させる(S137)。更にクラスQの派生クラスについ
て、クラスQを処理対象クラスに置き換え、図7の処理
手順を実現している命令コードを再帰呼び出しして上述
の処理手順によりメソッドテーブルを変更する(S13
8)。
【0060】以下S131に戻って上述の処理をクラス
Pの派生クラスであるクラスRについて同様に行い、全
ての派生クラスのメソッドテーブルを変更する。以上の
図6におけるS121からS125の処理手順及び図7
におけるS131からS138の処理手順により、メソ
ッドを追加したときにメソッドテーブルを変更するには
メソッドを追加したクラス及びこのクラスのメソッドを
継承する全ての派生クラスを再コンパイルすれば良い。
【0061】図8は上述のメソッド追加処理手順による
処理結果を示すオブジェクト指向アプリケーション・プ
ログラムの実行システムのクラス関係を示す概念図であ
る。図においてクラスQのメソッドテーブル143のイ
ンデックス[7]には、クラスQの基本クラスであるク
ラスPにおいて追加されたメソッドFのメソッドアドレ
スを対応させてあって、図3においてインデックス
[7]に対応させてあったメソッドDのメソッドアドレ
スは次のエントリに格納してある。クラスRのメソッド
テーブル144のインデックス[7]においても同様に
なしてあって、この工夫により追加したメソッドのイン
デックス値と、メソッドを追加したクラスのメソッドを
継承する全てのクラスにおけるこのメソッドのインデッ
クス値とを一致させている。他の図3と同一の構成要素
には同一符号を付して説明を省略する。
【0062】図9は図4,5,6,7に基づき説明した
メソッド追加処理手順に従い図1のクラスの基本クラス
にメソッドFを追加したクラスの概念図である。図にお
いて146はメソッド群であって、メソッドFは基本ク
ラスにおいて追加されたメソッドである。147はこの
クラスが新たに継承するメソッドFのメソッドアドレス
とポインタ34とを対応させてある。他の図1と同一構
成要素には同一符号を付して説明を省略する。
【0063】さて、図9において、図1と同様にオブジ
ェクト61が他のオブジェクトからメソッドDを呼び出
すメッセージを受取り、このメッセージにメソッドDを
バインディングする場合、まずメソッドDに対応するイ
ンデックス変数66を特定し、このインデックス変数6
6をアクセスしてメソッドDに対応するインデックス値
“8”を得る。そしてメソッドテーブル22からインデ
ックス値“8”と対応するメソッドDのメソッドアドレ
スを得る。以上の処理手順に従って、メッセージに対応
するメソッドをバインディングするのである。
【0064】次に前述のオブジェクト指向アプリケーシ
ョン・プログラムの実行システムにおけるメソッドの削
除処理手順を図面に基づき詳述する。図10,11,1
2,13,14は上述のメソッドの削除処理手順を示す
フローチャートである。以下に図3に基づき前述した実
行システムにおけるクラスPからメソッドAを削除する
処理手順に従って図10,11,12,13,14を説
明する。
【0065】図10,11において、クラスPからメソ
ッドAを削除する場合、処理対象クラスとしてクラス
P、削除するメソッドのメソッド名として“A”を与え
られ、クラスPのメソッドリスト96にメソッド名が
“A”である要素が存在するか否かを検索する(S15
1,152)。メソッド名が“A”である要素は存在す
るので、このインデックス値“4”をIx に格納する
(S153)。次にこのメソッドのインデックス変数に
エラーメソッドのインデックス値“0”を格納し(S1
54)、クラスPのメソッドリストからメソッドAの要
素を削除する(S155)。クラスPの各メソッドのイ
ンデックス変数のインデックス値“4”より大きいイン
デックス値を1減らし(S156)、クラスPのメソッ
ドテーブル97のインデックス値の上限“6”をImax
に格納する(S157)。
【0066】そしてクラスPのメソッドテーブル97の
x より大きいインデックス値、つまりインデックス
[5],[6]のエントリをメソッドテーブルのインデ
ックス[0]方向に向かって1つずつずらし(S15
8)、このメソッドテーブルの最後尾のインデックス
[6]のエントリを削除する(S159)。更に、クラ
スPのメソッドを継承する全ての派生クラスのメソッド
テーブルを変更する(S160)。
【0067】図12は上述の処理手順におけるS160
に相当する処理手順を示すフローチャートである。図1
2において、メソッドを削除したクラスPの派生クラス
であるクラスQ,Rからメソッドテーブルを変更してい
ないクラス、クラスQを選択する(S171,17
2)。このクラスQの全てのインデックス変数に格納し
てあるインデックス値を夫々1ずつ減らす(S17
3)。そしてクラスQのメソッドテーブル98のインデ
ックス値の上限“7”をImax に格納し(S174)、
このメソッドテーブルのIx より大きいインデックス値
のエントリをメソッドテーブルのインデックス[0]方
向に向かって1つずつずらした後に(S175)、この
メソッドテーブルの最後尾のインデックス[7]のエン
トリを削除する(S176)。
【0068】更にクラスQの派生クラスについて、クラ
スQを処理対象クラスに置き換え、図12の処理手順を
実現している命令コードを再帰呼び出しして、上述の処
理手順によりクラスQの派生クラスのメソッドテーブル
を変更する(S177)。以下、S171に戻って上述
の処理をクラスPの他の派生クラスであるクラスRにつ
いて同様に行い、クラスPのメソッドを継承する全ての
派生クラスのメソッドテーブルを変更する。
【0069】一方図10,13におけるS152の処理
においてクラスPにメソッド名“A”を持つメソッドが
存在しなかった場合、更にクラスPが継承しているメソ
ッドを定義した全ての基本クラスにおいて同じメソッド
名が存在するか否かを検索して(S161,162)、
存在しなかったときはエラー処理を行って終了する(S
169)。存在したときはこのメソッドのインデックス
値をIx に格納し(S163)、クラスP及びその直接
の基本クラスのメソッドテーブルのインデックス値Ix
のエントリに対応しているメソッドアドレスを夫々X
ad0 とXad1 に格納する(S164,165)。そして
ad0 とXad1 とが等しい場合は処理を終了する。等し
くない場合はクラスPのメソッドテーブルのインデック
ス値Ix のエントリにXad1 を対応させる(S166,
167)。更にクラスPのメソッドを継承する全ての派
生クラス(図3におけるクラスQ,R)のメソッドテー
ブルを変更する(S168)。
【0070】図14は上述の処理手順におけるS168
に相当する処理手順を示すフローチャートである。図1
4においてメソッドを削除したクラスPの派生クラスで
あるクラスQ,Rからメソッドテーブルを変更していな
いクラス、クラスQを選択する(S178,179)。
このクラスQのメソッドテーブルの前記Ix に対応する
メソッドアドレスと前記Xad0 とを比較し(S18
0)、両者が異なる場合は、S178に戻り処理を繰り
返す。両者が同じである場合は、クラスQのメソッドテ
ーブルのIx に前記Xad1 を対応させる(S181)。
【0071】更にクラスQの派生クラスについて、クラ
スQを対象クラスに置き換え、図14におけるS178
からS182の処理手順を実現している命令コードを再
帰呼び出しして上述の処理手順によりクラスQの派生ク
ラスのメソッドテーブルを変更する(S182)。以
下、S178に戻って上述の処理をクラスPの他の派生
クラスであるクラスRについて同様に行い全ての派生ク
ラスのメソッドテーブルを変更する。以上の図10にお
けるS161からS169の処理手順及び図14におけ
るS178からS182の処理手順により、オーバーラ
イドしていたメソッドを削除したときのメソッドの継承
を保証している。
【0072】図15は上述のメソッドの削除処理手順に
よる処理結果を示すオブジェクト指向アプリケーション
・プログラムの実行システムのクラス関係を示す概念図
である。図においてメソッドリスト183からメソッド
Aの要素が削除されている。インデックス変数VIA
インデックス値として“0”を格納して割当てられた状
態であるが、これは今までメソッドAを呼び出していた
メソッドにエラーメソッドを呼び出させるためである。
またメソッドテーブル184,185,186は夫々メ
ソッドテーブル97,98,99からメソッドAのメソ
ッドアドレスとインデックス値とを対応させるエントリ
を削除したものである。他の図3と同一の構成要素には
同一符号を付して説明を省略する。
【0073】(実施例2)図16は本発明の実施に係る
オブジェクト指向アプリケーション・プログラムを実行
するシステムの他の実施例を示す概念図である。
【0074】図において191,192,193,19
4はそれぞれ図3の91,92,93,94と同一のク
ラスデータであり、195はクラスPの派生クラスのク
ラスデータへのポインタ及び次の要素へのリンクポイン
タを持つ。メソッドリスト196の各要素はメソッド
名,インデックス値及び次の要素へのリンクポインタを
持つ。また、各クラスのメソッドテーブル21,22,
23のインデックス[0]には、このクラスがこのクラ
スの基本クラスから継承したメソッドのメソッドアドレ
スを対応させてあり、このメソッドは特に限定されてい
ない。
【0075】図17,18は上述のプログラムを実行す
るシステムにおけるメソッド追加処理手順を示すフロー
チャートである。図17において、クラスPにメソッド
Fを追加する場合、メソッドFをクラスPと同一メモリ
上に定義した後に、処理対象クラスとしてクラスP、追
加するメソッド名として“F”及びメソッドFのメソッ
ドアドレスを与えられてクラスPから派生した全ての派
生クラスのメソッドテーブルの中で最も大きいインデッ
クス値をImax に格納する(S201)。このImax
1を加えたものをインデックス値としてIx に格納する
(S202)。
【0076】次に追加したメソッド名“F”及びS20
2において格納したインデックス値Ix をクラスPのメ
ソッドリスト196に追加し(S203)、クラスPの
メソッドテーブル21をIx +1の大きさに拡張する
(S204)。この拡張したメソッドテーブルのIx
追加したメソッドFのメソッドアドレスを対応させ(S
205)、更にクラスPのメソッドを継承する全ての派
生クラスのメソッドテーブルを変更する(S206)。
【0077】図18は上述の処理手順におけるS206
に相当する処理手順を示すフローチャートである。図1
8において、メソッドを追加したクラスPの派生クラス
であるクラスQ,Rからメソッドテーブルを変更してい
ないクラス,クラスQを選択する(S211,21
2)。クラスQのメソッドテーブル22をIx +1の大
きさに拡張し(S213)、このメソッドテーブルのI
x に追加したメソッドFのメソッドアドレスを対応させ
る(S214)。
【0078】更にクラスQの派生クラスについて、クラ
スQを処理対象クラスに置き換え、図18の処理手順を
実現している命令コードを再帰呼び出しして、上述の処
理手順によりクラスQのメソッドを継承する全ての派生
クラスのメソッドテーブルを変更する(S215)。以
下、S211に戻って上述の処理をクラスPの他の派生
クラスであるクラスRについて同様に行い、クラスPの
メソッドを継承する全ての派生クラスのメソッドテーブ
ルを変更する。
【0079】図19は上述のメソッド追加処理手順によ
る処理結果を示すプログラムを実行するシステムのクラ
ス関係を示す概念図である。図においてクラスPのメソ
ッドテーブル222におけるインデックス[7]にはメ
ソッドアドレスを対応させておらず、インデックス
[8]に追加したメソッドFのメソッドアドレスを対応
させてある。またクラスQ,Rにおいてもインデックス
[8]に追加したメソッドFのメソッドアドレスを対応
させてある。この工夫により追加したメソッド以外のメ
ソッドのインデックス値を変更せずに、追加したメソッ
ドのインデックス値とこのメソッドを継承する全てのク
ラスにおけるこのメソッドのインデックス値とを一致さ
せている。
【0080】次に上述のプログラムを実行するシステム
におけるメソッドの削除処理手順を図面に基づき詳述す
る。図20,21,22は上述のメソッドの削除処理手
順を示すフローチャートである。以下に図16に基づき
前述したオブジェクト指向アプリケーション・プログラ
ムを実行するシステムにおいてクラスPからメソッドA
を削除する処理手順に従って図20,21,22を説明
する。
【0081】図20においてクラスPからメソッドAを
削除する場合、処理対象クラスとしてクラスP、削除す
るメソッドのメソッド名として“A”を与えられて、ク
ラスPのメソッドリスト196にメソッド名が“A”で
あるメソッドが存在するか否かを検索する(S231,
232)。メソッド名が“A”であるメソッドは存在す
るので、このインデックス値“4”をIx に格納する
(S233)。次にクラスPのメソッドリスト196か
らメソッドAの要素を削除し(S234)、クラスPの
メソッドテーブルのIx にエラーメソッドのアドレスを
対応させる(S235)。更にクラスPのメソッドを継
承する全ての派生クラスのメソッドテーブルを変更する
(S236)。
【0082】図22は上述の処理手順におけるS236
に相当する処理手順を示すフローチャートである。図2
2において、メソッドを削除したクラスPの派生クラス
であるクラスQ,Rからメソッドテーブルを変更してい
ないクラス,クラスQを選択する(S241,24
2)。このクラスQのメソッドテーブル22のIx にエ
ラーメソッドのアドレスを対応させる(S243)。更
にクラスQの派生クラスについて、クラスQを処理対象
クラスに置き換え、図22の処理手順を実現している命
令コードを再帰呼び出しして、上述の処理手順によりク
ラスQの派生クラスのメソッドテーブルを変更する(S
244)。以下S241に戻って上述の処理をクラスP
の他の派生クラスであるクラスRについて同様に行い、
クラスPのメソッドを継承する全ての派生クラスのメソ
ッドテーブルを変更する。
【0083】一方図20,21におけるS232の処理
においてクラスPのメソッド名“A”を持つメソッドが
存在しなかった場合の処理手順は図13に基づき説明し
たメソッドの削除処理手順と同じであるので同一構成要
素に同符号を付して説明を省略する。
【0084】図23は上述のメソッドの削除処理手順に
よる処理結果を示すオブジェクト指向アプリケーション
・プログラムを実行するシステムのクラス関係を示す概
念図である。図においてクラスPのメソッドリスト25
1はメソッドAの要素を削除してある。また、クラス
P,Q,Rのメソッドテーブル252,253,254
のインデックス[4]にはエラーメソッドのメソッドア
ドレスが対応させてあり、この工夫によりメソッドの削
除によって削除されなかったメソッドのインデックス値
は変更されない。
【0085】(実施例3)図24は本発明の実施に係る
オブジェクト指向アプリケーション・プログラムを実行
するシステムの他の実施例を示す概念図である。図にお
いて、メソッドリスト261,262の各要素はメソッ
ド名,インデックス値,次の要素へのリンクポインタ及
びこの要素に対応するメソッドを呼び出す他のメソッド
の開始アドレスを示す被参照リストへのポインタを持
つ。また各クラスのメソッドテーブルのインデックス
[0]には各クラスの基本クラスから継承したエラーメ
ソッドのメソッドアドレスを対応させてある。他の図1
6と同一の構成要素には同符号を付して説明を省略す
る。
【0086】次に上述のオブジェクト指向アプリケーシ
ョン・プログラムを実行するシステムにおけるメソッド
の追加処理手順を図面に基づき詳述する。メソッドの追
加処理手順は図4,5と同一であるので前述の説明を充
ててこれを省略する。
【0087】図25は上述の処理手順におけるS110
に相当する処理手順を示すフローチャートである。図2
5において、メソッドを追加したクラスPのメソッドテ
ーブル97のエントリを1つ増やし、このサイズをSZ
に格納する(S271)。次にSZ−1をインデックス
値としてIx に格納し(S272)、追加したメソッド
名“F”及びS272において格納したインデックス値
x をクラスPのメソッドリスト261に追加する(S
273)。更にクラスPのメソッドテーブルのインデッ
クス値Ix に追加したメソッドFのメソッドアドレスを
対応させる(S274)。そしてクラスPのメソッドを
継承する全ての派生クラスのメソッドテーブルを変更す
る(S275)。
【0088】図26は上述の処理手順におけるS275
に相当する処理手順を示すフローチャートである。図2
6においてメソッドを追加したクラスPの派生クラスで
あるクラスQ,Rからメソッドテーブルを変更していな
いクラス、クラスQを選択する(S281,282)。
このクラスQのメソッドリストのメソッドに対応するイ
ンデックス値を1増やす(S283)。これはクラスQ
の基本クラスであるクラスPにおいて、インデックス値
の上限が1増加したことにより、クラスQにおけるメソ
ッドに対応するインデックス値がずれてくるのを補正す
るためである。
【0089】そしてクラスQのメソッドDを呼び出すメ
ソッドD1 が保持するインデックス値をメソッドDのイ
ンデックス値と一致させる(S284)。クラスQのメ
ソッドテーブル98のインデックス値の上限をImax
格納しておいて(S285)、このメソッドテーブル9
8のエントリを1つ増やし(S286)、このメソッド
テーブルのIx 以降のエントリをメソッドテーブルの上
限方向に向かって1つずつずらした後に(S287)、
このメソッドテーブルのIx に追加したメソッドFのメ
ソッドアドレスを対応させる(S288)。
【0090】更にクラスQの派生クラスについて、クラ
スQを処理対象クラスに置き換え、図26の処理手順を
実現している命令コードを再帰呼び出しして上述の処理
手順によりメソッドテーブルを変更する(S289)。
以下、S281に戻って上述の処理をクラスPの派生ク
ラスであるクラスRについて同様に行ない、全ての派生
クラスのメソッドテーブルを変更する。
【0091】以上の図25におけるS271からS27
5の処理手順及び図25におけるS281からS289
の処理手順によりメソッドを追加したときに、再コンパ
イルが必要なクラスを、メソッドを追加したクラス及び
このクラスのメソッドを継承するクラスに限定できる。
【0092】図27は、上述のメソッド追加手順による
処理結果を示すオブジェクト指向アプリケーション・プ
ログラムの実行システムのクラス関係を示す概念図であ
る。図においてクラスQのメソッドテーブル143のイ
ンデックス[7]には、クラスQの基本クラスであるク
ラスPにおいて追加されたメソッドFのメソッドアドレ
スを対応させてあって、図24のメソッドテーブル98
においてインデックス[7]に対応させてあったメソッ
ドDのメソッドアドレスは次のエントリに格納してあ
る。クラスRのメソッドテーブル144のインデックス
[7]においても同様になしてあって、この工夫により
追加したメソッドのインデックス値とメソッドを追加し
たクラスのメソッドを継承する全てのクラスにおけるこ
のメソッドのインデックス値とを一致させている。な
お、図示しないメソッドD1 及びメソッドE1 の保持す
るインデックス値は“8”に書き換えてある。他の図2
4と同一の構成要素には同一符号を付して説明を省略す
る。
【0093】次に前述のオブジェクト指向アプリケーシ
ョン・プログラムの実行システムにおけるメソッドの削
除処理手順を図面に基づき詳述する。図28,29,3
0,31は上述のメソッド削除処理手順を示すフローチ
ャートである。以下に図24に基づき前述した実行シス
テムにおけるクラスPからメソッドAを削除する処理手
順に従って図28,29,30,31を説明する。
【0094】図28,29において、クラスPからメソ
ッドAを削除する場合、処理対象にクラスP,削除する
メソッドのメソッド名に“A”を与えられて、クラスP
のメソッドリスト261にメソッド名が“A”である要
素が存在するか否かを検索する(S301)。メソッド
名が“A”である要素は存在するので、このインデック
ス値“4”をIx に格納する(S302,303)。次
にこのメソッドの被参照リストから求めたこのメソッド
を呼び出す他のメソッドが保持するインデックス値をエ
ラーメソッドのインデックス値“0”に置換し(S30
4)、全てのクラスの全ての被参照リストからメソッド
Aの要素を削除する(S305)。これは削除されるメ
ソッドが呼び出すメソッドについての情報を削除するこ
とである。
【0095】そして、クラスPのメソッドリスト261
からメソッドAの要素を削除して(S306)、このメ
ソッドリスト261のIx =4より大きいインデックス
値を1減らす(S307)。クラスPのメソッドテーブ
ル97のインデックス値の上限“6”をImax に格納し
(S308)、Ix =4より大きいインデックス値、つ
まりインデックス[5],[6]のエントリをメソッド
テーブルのインデックス[0]方向に向かって1つずつ
ずらし(S309)、このメソッドテーブル97の最後
尾のインデックス[6]のエントリを削除する(S31
0)。更にクラスPのメソッドを継承する全ての派生ク
ラスのメソッドテーブルを変更する(S311)。
【0096】図31は上述の処理手順におけるS311
に相当する処理手順を示すフローチャートである。図に
おいて、まずメソッドを削除したクラスPの派生クラス
であるクラスQ,Rからメソッドテーブルを変更してい
ないクラス、クラスQを選択する(S321,32
2)。このクラスQのメソッドリストのインデックス値
を夫々1ずつ減らす(S323)。そしてクラスQのメ
ソッドリスト262中のメソッドを呼び出す他のメソッ
ドを被参照リストから求めて、求めたメソッドが保持す
るインデックス値を1減らす(S324)。
【0097】クラスQのメソッドテーブル98のインデ
ックス値の上限“7”をImax に格納し(S325)、
このメソッドテーブルのIx =4より大きいインデック
ス値のエントリをメソッドテーブルのインデックス
[0]方向に向かって1つずつずらした後に(S32
6)、このメソッドテーブル98のインデックス値がI
max=7のエントリを削除する(S327)。更に、ク
ラスQの派生クラスについて、クラスQを処理対象クラ
スに置き換え、図31の処理手順を実現している命令コ
ードを再帰呼び出しして、上述の処理手順によりクラス
Qの派生クラスのメソッドテーブルを変更する(S32
8)。
【0098】以下S311に戻って上述の処理をクラス
Pの他の派生クラスであるクラスRについて同様に行
い、クラスPのメソッドを継承する全ての派生クラスの
メソッドテーブルを変更する。
【0099】一方図28,30におけるS302の処理
においてクラスPのメソッド名“A”を持つメソッドが
存在しなかった場合の処理手順は図13に基づき説明し
たメソッドの削除処理手順と同じであるので同一構成要
素に同符号を付して説明を省略する。
【0100】図32は上述のメソッドの削除処理手順に
よる処理結果を示すオブジェクト指向アプリケーション
・プログラムの実行システムのクラス関係を示す概念図
である。図において、クラスPのメソッドリスト331
はメソッドAの要素を削除してある。また、図示しない
メソッドB1 ,B2 の保持するインデックス値は“5”
から“4”へ置換してある。同様に、メソッドC1 の保
持するインデックス値は“6”から“5”へ、メソッド
1 ,E1 の保持するインデックス値は“7”から
“6”へ置換してある。他の図24と同一の構成要素に
は同一符号を付して説明を省略する。
【0101】
【発明の効果】以上のように第1,2,3発明によれば
オブジェクトがメソッドを指定するためのインデックス
変数をメソッド毎に用意しておき、あるクラスにメソッ
ドの追加,削除を行った場合に、前記クラス及び該クラ
スのメソッドを継承する全ての派生クラスのメソッドテ
ーブル及びインデックス変数を変更し、他のクラスは変
更しないことによって、再コンパイル処理を高速に行う
システムが実現する。
【0102】また第4,第5発明によれば、メソッドテ
ーブルを変更する際にメソッドテーブルの追加・削除処
理対象ではないメソッドのインデックス値を変更せずに
メソッドの追加・削除を行ったクラス及び該クラスのメ
ソッドを継承する全ての派生クラスのメソッドテーブル
を変更し、他のクラスは変更しないことによって再コン
パイル処理を高速に行うシステムが実現する。
【0103】更に第6,7発明によればメソッド毎に該
メソッドをバインディングする他のメソッドの被参照テ
ーブルを用意しておき、あるクラスにメソッドの追加・
削除を行った場合に、前記被参照テーブルが保持するメ
ソッドアドレスを通して前記他のメソッドのインデック
ス値を更新することによって、再コンパイル処理を高速
に行うシステムが実現する。
【0104】なお、本実施例においては、クラスに属す
るメソッドを検索するためにリンクリストであるメソッ
ドリストを用いたが、メソッド名及びインデックス変数
へのポインタを格納したテーブルを用いても同様の効果
が得られることはいうまでもない。
【図面の簡単な説明】
【図1】 本発明に係るシステムのクラスの概念図であ
る。
【図2】 本発明に係るシステムのバインディング手順
を示すフローチャートである。
【図3】 本発明に係るシステムのクラス関係を示す概
念図である。
【図4】 本発明に係るシステムのメソッド追加手順を
示すフローチャートである。
【図5】 本発明に係るシステムのメソッド追加手順を
示すフローチャートである。
【図6】 本発明に係るシステムのメソッド追加手順を
示すフローチャートである。
【図7】 本発明に係るシステムのメソッド追加手順を
示すフローチャートである。
【図8】 本発明に係るシステムのクラス関係を示す概
念図である。
【図9】 本発明に係るシステムのクラスの概念図であ
る。
【図10】 本発明に係るシステムのメソッド削除手順
を示すフローチャートである。
【図11】 本発明に係るシステムのメソッド削除手順
を示すフローチャートである。
【図12】 本発明に係るシステムのメソッド削除手順
を示すフローチャートである。
【図13】 本発明に係るシステムのメソッド削除手順
を示すフローチャートである。
【図14】 本発明に係るシステムのメソッド削除手順
を示すフローチャートである。
【図15】 本発明に係るシステムのクラス関係を示す
概念図である。
【図16】 本発明に係るシステムのクラス関係を示す
概念図である。
【図17】 本発明に係るシステムのメソッド追加手順
を示すフローチャートである。
【図18】 本発明に係るシステムのメソッド追加手順
を示すフローチャートである。
【図19】 本発明に係るシステムのクラス関係を示す
概念図である。
【図20】 本発明に係るシステムのメソッド削除手順
を示すフローチャートである。
【図21】 本発明に係るシステムのメソッド削除手順
を示すフローチャートである。
【図22】 本発明に係るシステムのメソッド削除手順
を示すフローチャートである。
【図23】 本発明に係るシステムのクラス関係を示す
概念図である。
【図24】 本発明に係るシステムのクラス関係を示す
概念図である。
【図25】 本発明に係るシステムのメソッド追加手順
を示すフローチャートである。
【図26】 本発明に係るシステムのメソッド追加手順
を示すフローチャートである。
【図27】 本発明に係るシステムのクラス関係を示す
概念図である。
【図28】 本発明に係るシステムのメソッド削除手順
を示すフローチャートである。
【図29】 本発明に係るシステムのメソッド削除手順
を示すフローチャートである。
【図30】 本発明に係るシステムのメソッド削除手順
を示すフローチャートである。
【図31】 本発明に係るシステムのメソッド削除手順
を示すフローチャートである。
【図32】 本発明に係るシステムのクラス関係を示す
概念図である。
【図33】 従来のシステムのクラスの概念図である。
【図34】 メソッドテーブルの構成を示す概念図であ
る。
【図35】 従来のシステムのクラスの概念図である。
【図36】 従来のシステムのバインディング手順を示
すフローチャートである。
【図37】 従来のシステムのクラス概念図である。
【符号の説明】
21,22,23,97,98,99 メソッドテーブ
ル、91,92,93,94,191,192,19
3,194 クラスデータ、96,196 メソッドリ
スト、61 オブジェクト、66 インデックス変数。

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 複数のメソッド夫々をコンパイルして生
    成された命令コードをメモリ上に定義し、該命令コード
    の開始アドレスにインデックス値を対応させたメソッド
    テーブルを前記メモリ上に定義するシステムにおける前
    記メソッドテーブルからメソッドに対応する命令コード
    の開始アドレスを求めるメソッド呼び出し方法におい
    て、 前記メソッド夫々に対応するインデックス値を代入した
    インデックス変数を前記メモリ上に定義しておき、イン
    デックス変数からインデックス値を求め、該インデック
    ス値及び前記メソッドテーブルからメソッドに対応する
    命令コードの開始アドレスを求めることを特徴とするメ
    ソッド呼び出し方法。
  2. 【請求項2】 複数のメソッド夫々をコンパイルして生
    成された命令コードをメモリ上に定義し、該命令コード
    の開始アドレスにインデックス値を対応させたメソッド
    テーブルを前記メモリ上に定義し、前記メソッド夫々に
    対応するインデックス値を代入したインデックス変数を
    前記メモリ上に定義するシステムにおけるメソッド追加
    方法であって、 追加するメソッドをコンパイルして生成された命令コー
    ドを前記メモリ上に定義し、前記メソッドテーブルのエ
    ントリを拡張し、拡張したエントリのインデックス値に
    前記命令コードの開始アドレスを対応させ、エントリを
    拡張することによって変更されたインデックス値を該イ
    ンデックス値と対応するメソッドのインデックス変数に
    代入することを特徴とするメソッド追加方法。
  3. 【請求項3】 複数のメソッド夫々をコンパイルして生
    成された命令コードをメモリ上に定義し、該命令コード
    の開始アドレスにインデックス値を対応させたメソッド
    テーブルを前記メモリ上に定義し、前記メソッド夫々に
    対応するインデックス値を代入したインデックス変数を
    前記メモリ上に定義するシステムにおけるメソッド削除
    方法であって、 前記メソッドテーブルから削除するメソッドの命令コー
    ドに対応するエントリを削除し、エントリを削除するこ
    とによって変更されたインデックス値を該インデックス
    値と対応するメソッドのインデックス変数に代入するこ
    とを特徴とするメソッド削除方法。
  4. 【請求項4】 複数のメソッド夫々をコンパイルして生
    成された命令コードをメモリ上に定義し、メソッドを有
    するオブジェクトのグループであるクラス毎に前記命令
    コードの開始アドレスにインデックス値を対応させたメ
    ソッドテーブルを前記メモリ上に定義するシステムにお
    けるクラスにメソッドを追加し、該メソッドに対応する
    命令コードの開始アドレスにインデックス値を対応させ
    た追加テーブルを前記メモリ上に定義するメソッド追加
    方法において、 前記クラス及び該クラスのメソッドを継承する派生クラ
    スの中で最も大きいメソッドテーブルのインデックス値
    の上限より大きい値を前記追加テーブルのインデックス
    値に対応させ、前記追加テーブルを前記メモリ上に定義
    することを特徴とするメソッド追加方法。
  5. 【請求項5】 複数のメソッド夫々をコンパイルして生
    成された命令コードをメモリ上に定義し、メソッドを有
    するオブジェクトのグループであるクラス毎に前記命令
    コードの開始アドレスにインデックス値を対応させたメ
    ソッドテーブルを前記メモリ上に定義するシステムにお
    けるクラスからメソッドを削除し、該メソッドに対応す
    る命令コードを使用不能にするメソッド削除方法におい
    て、 エラーを発生させるエラー発生メソッドを前記クラスに
    追加し、該エラー発生メソッドをコンパイルして生成さ
    れた命令コードを前記メモリ上に定義し、前記クラス及
    び該クラスのメソッドを継承する派生クラスのメソッド
    テーブルにおける削除対象メソッドのインデックス値に
    前記エラー発生メソッドに対応する命令コードの開始ア
    ドレスを対応させることを特徴とするメソッド削除方
    法。
  6. 【請求項6】 複数のメソッド夫々をコンパイルして生
    成された命令コードをメモリ上に定義し、該命令コード
    の開始アドレスにインデックス値を対応させたメソッド
    テーブルを前記メモリ上に定義しておき、インデックス
    値及び前記メソッドテーブルからメソッドに対応する命
    令コードの開始アドレスを求めるシステムにおけるメソ
    ッド追加方法において、 メソッド夫々に該メソッドを呼び出す他のメソッドの命
    令コードの開始アドレスを保持する被参照テーブルを前
    記メモリ上に定義しておき、追加するメソッドをコンパ
    イルして生成された命令コードを前記メモリ上に定義
    し、前記メソッドテーブルのエントリを拡張し、拡張し
    たエントリのインデックス値に前記命令コードの開始ア
    ドレスを対応させ、エントリを拡張してインデックス値
    が変更されたメソッドを呼び出す他のメソッドを被参照
    テーブルにより求めて前記他のメソッドが保持するイン
    デックス値を前記変更されたインデックス値に置換する
    ことを特徴とするメソッド追加方法。
  7. 【請求項7】 複数のメソッド夫々をコンパイルして生
    成された命令コードをメモリ上に定義し、該命令コード
    の開始アドレスにインデックス値を対応させたメソッド
    テーブルを前記メモリ上に定義しておき、インデックス
    値及び前記メソッドテーブルからメソッドに対応する命
    令コードの開始アドレスを求めるシステムにおけるメソ
    ッド削除方法において、 メソッド夫々に該メソッドを呼び出す他のメソッドの命
    令コードの開始アドレスを保持する被参照テーブルを前
    記メモリ上に定義しておき、前記メソッドテーブルから
    削除するメソッドの命令コードに対応するエントリを削
    除し、エントリを削除してインデックス値が変更された
    メソッドを呼び出す他のメソッドを被参照テーブルによ
    り求めて前記他のメソッドが保持するインデックス値を
    前記変更されたインデックス値にすることを特徴とする
    メソッド削除方法。
JP7126770A 1995-05-25 1995-05-25 メソッド呼び出し方法及びメソッド追加・削除方法 Pending JPH08320790A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7126770A JPH08320790A (ja) 1995-05-25 1995-05-25 メソッド呼び出し方法及びメソッド追加・削除方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7126770A JPH08320790A (ja) 1995-05-25 1995-05-25 メソッド呼び出し方法及びメソッド追加・削除方法

Publications (1)

Publication Number Publication Date
JPH08320790A true JPH08320790A (ja) 1996-12-03

Family

ID=14943501

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7126770A Pending JPH08320790A (ja) 1995-05-25 1995-05-25 メソッド呼び出し方法及びメソッド追加・削除方法

Country Status (1)

Country Link
JP (1) JPH08320790A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010170585A (ja) * 1999-04-26 2010-08-05 Sun Microsyst Inc ディスパッチテーブル構造のための方法と装置
JP2019033331A (ja) * 2017-08-04 2019-02-28 ソニーセミコンダクタソリューションズ株式会社 通信装置、通信方法、プログラム、および、通信システム
US11561922B2 (en) 2017-08-04 2023-01-24 Sony Semiconductor Solutions Corporation Communication apparatus, communication method, program, and communication system

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010170585A (ja) * 1999-04-26 2010-08-05 Sun Microsyst Inc ディスパッチテーブル構造のための方法と装置
JP2019033331A (ja) * 2017-08-04 2019-02-28 ソニーセミコンダクタソリューションズ株式会社 通信装置、通信方法、プログラム、および、通信システム
US11544132B2 (en) 2017-08-04 2023-01-03 Sony Semiconductor Solutions Corporation Communication apparatus, communication method, program, and communication system
US11561922B2 (en) 2017-08-04 2023-01-24 Sony Semiconductor Solutions Corporation Communication apparatus, communication method, program, and communication system

Similar Documents

Publication Publication Date Title
JP3765949B2 (ja) オブジェクト指向ソフトウェア開発支援装置および開発支援方法
WO2019226309A1 (en) Exercising artificial intelligence by refining model output
US20030093420A1 (en) Method and system for retrieving sharable information using a hierarchically dependent directory structure
CN112650766B (zh) 数据库数据操作的方法、系统及服务器
US4964063A (en) System and method for frame and unit-like symbolic access to knowledge represented by conceptual structures
JP2002251307A (ja) データベース管理システム、データベース管理システムにおける問合せ方法、およびデータベース管理システムにおける問い合わせ実行プログラム
US20220179642A1 (en) Software code change method and apparatus
JPH05197697A (ja) ソフトウエア・システム構築装置及び方法
CN112668181A (zh) 仿真测试方法、装置、电子设备及存储介质
CN110502532A (zh) 远程数据库对象的优化方法、装置、设备和存储介质
US20060212881A1 (en) System and method for extending a programming language to include multiple dissimilar object systems
CN111475511A (zh) 基于树状结构的数据存储方法、访问方法、装置及设备
JPH08320790A (ja) メソッド呼び出し方法及びメソッド追加・削除方法
US11556802B2 (en) Interfacing with results of artificial intelligent models
US10929456B2 (en) Indexing refined output of artificial intelligence models
CN107844535B (zh) 一种外部资源库调用方法及系统
CN114791985A (zh) 域名匹配方法及装置、前缀树更新方法及装置
JPH08110869A (ja) ファイルシステム
WO2011032443A1 (zh) 一种非易失性数据的存储和检索方法及装置
JP4959003B2 (ja) 反復コンポーネントのバインディング
JPH06215037A (ja) インデックスの自動更新装置
CN113741966A (zh) 一种Kickstart文件转换的方法、系统、设备和存储介质
CN112445764B (zh) 文件操作的方法、装置、存储介质及电子设备
JP4379572B2 (ja) 仮想ファイル管理方式
JP3018992B2 (ja) オブジェクト指向言語の実行処理方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050524

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050927