JP2808672B2 - オブジェクト指向言語のクラスを用いるメリッド決定方法 - Google Patents

オブジェクト指向言語のクラスを用いるメリッド決定方法

Info

Publication number
JP2808672B2
JP2808672B2 JP1135862A JP13586289A JP2808672B2 JP 2808672 B2 JP2808672 B2 JP 2808672B2 JP 1135862 A JP1135862 A JP 1135862A JP 13586289 A JP13586289 A JP 13586289A JP 2808672 B2 JP2808672 B2 JP 2808672B2
Authority
JP
Japan
Prior art keywords
class
oriented language
message transmission
determining
code
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
Application number
JP1135862A
Other languages
English (en)
Other versions
JPH032932A (ja
Inventor
浩史 冨田
精純 吉村
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.)
Hitachi Ltd
Hitachi Seibu Software Co Ltd
Original Assignee
Hitachi Ltd
Hitachi Seibu Software Co Ltd
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 Hitachi Ltd, Hitachi Seibu Software Co Ltd filed Critical Hitachi Ltd
Priority to JP1135862A priority Critical patent/JP2808672B2/ja
Priority to US07/529,955 priority patent/US5313633A/en
Publication of JPH032932A publication Critical patent/JPH032932A/ja
Application granted granted Critical
Publication of JP2808672B2 publication Critical patent/JP2808672B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、オブジェクト指向言語に分類されるプログ
ラミング言語で記述されたプログラムの実行方法のう
ち、記述されたメッセージ送信を実行する際におけるメ
ソッドを決定する方法、特に、コンパイルによって高速
実行を図るオブジェクト指向言語におけるメソッド決定
方法に関する。
〔従来の技術〕
オブジェクト指向言語では、オブジェクトと呼ばれる
データ構造が、メソッドと呼ばれる手続きを保持してい
る。オブジェクトが保持しているメソッドを実行するた
めには、当該オブジェクトに対しメッセージ送信を行う
ことで、メソッドを起動する。一般に、オブジェクトは
複数のメソッドを保持しているため、メッセージ送信に
よってどのメソッドを起動するかは、メッセージ送信に
含まれるメッセージセレクタによって決定される。オブ
ジェクトが個別にメソッドを保持しているため、同一の
メッセージセレクタであっても、レシーバと呼ばれるメ
ッセージ送信の送信先オブジェクトが異なれば、起動さ
れるメソッドは異なる。
一般に、オブジェクト指向言語は、クラスと呼ばれる
オブジェクトの雛形でメソッドを定義し、あるクラスの
インスタンスとして作成されたオブジェクト(当該クラ
スに属しているオブジェクト)は、当該クラスで宣言さ
れたメソッドをすべて共有している。クラスには階層関
係が定義でき、下位の階層のクラスには、上位の階層の
クラスで定義されたメソッドが継承されている。すなわ
ち、クラスの階層関係を定義することで、上位のクラス
で定義したメソッドを、下位のクラスで再定義すること
なく共有可能となる。
上述のクラスの階層関係は、あるクラスの直接の上位
クラスは唯一である、いわゆる単一継承である。メソッ
ドは、メソッド毎に定義されているメッセージセレクタ
により区別される。このメッセージセレクタは、メソッ
ド名に相当する。同一クラスに同一のメッセージセレク
タを持つ異なるメソッドを定義することは許されない
が、クラスが異なれば、同一のメッセージセレクタを持
つ異なるメソッドを定義することは可能である。上位ク
ラスから継承したメソッドと同一のメッセージセレクタ
を持つメソッドを定義した場合、上位クラスから継承さ
れたメソッドは無効となる。
前述の如く、メッセージ送信によってどのメソッドが
起動されるかは、レシーバが保持しているメソッドと、
メッセージセレクタによって決定される。レシーバのオ
ブジェクトが実行時でないと判明しない場合、または、
実行の都度変化する場合には、メソッドの決定はメッセ
ージ送信の実行時に行う必要がある。従来、このメソッ
ド決定方法は、竹内著「マルチパラダイム言語TAO」
(雑誌“bit",vol.20,No.7,pp.67〜70,1988)に論じら
れている如く、各クラス毎にメソッドとメッセージ送信
を実行する時点で、レシーバの属するクラスの対応表か
らメッセージセレクタを鍵として、メソッドを検索する
ことにより実現される。この場合の検索方法としては、
二分探索法やハッシュ法が用いられる。
クラスの階層関係によりメソッドが継承されている場
合、対応表の構成方法として、継承されているメソッド
すべてを含む対応表を各クラスに持つ方法と、そのクラ
スで定義されたメソッドのみを対応表として持つ方法と
が知られている。前者の場合、メソッドの決定方法とし
て、レシーバが属するクラスが持つ対応表のみを検索す
ることにより、メソッドを決定することができる。後者
の場合、レシーバが属するクラスが持つ対応表を検索
し、対応するメソッドが存在しなかった場合、当該クラ
スの上位階層のクラスに対して、同様の検索走査を行う
ことにより、メソッドを決定することができる。これに
ついては、後に詳述する。
〔発明が解決しようとする課題〕
上記従来技術は、レシーバのオブジェクトが実行時で
ないと判明しない場合、または、実行の都度変化する場
合、メッセージ送信の実行の都度、メソッドとメッセー
ジセレクタとの対応表を検索する必要があり、処理に時
間がかかるという問題がある。特に、同一オブジェクト
が保持しているメソッドの種類が増大した場合に、速度
の低下が大きい。従って、上述のメソッド決定方法を採
用しているオブジェクト指向言語のインタプリタの実行
速度は遅く、また、上述のメソッド決定方法を目的コー
ドとして出力するコンパイラが出力した目的コードの実
行速度も遅いものとなる。
また、メッセージ送信の都度、メソッドとメッセージ
セレクタとの対応表を検索しないでメソッドを決定する
場合、メッセージ送信の送信先であるレシーバが属する
クラスとメソッドを定義しているクラスとの上下関係を
実行時に判断する必要が生じ、この上下関係の判断速度
が遅いと、実行時の速度が低下するという問題がある。
本発明は上記事情に鑑みてなされたもので、その目的
とするところは、従来の技術における上述の如き問題を
解消し、実行時に、より高速に起動すべきメソッドを決
定する方法を提供することにある。
〔課題を解決するための手段〕
本発明の上記目的は、オブジェクト指向言語で記述さ
れたメッセージ送信によって起動すべきメソッドを、メ
ッセージ送信の送信先であるレシーバの情報と、メッセ
ージ送信のメッセージセレクタとから決定するメソッド
決定方法において、メッセージセレクタを基に起動すべ
きメソッドの候補抽出処理を行い、抽出された候補メソ
ッドの中から、前記レシーバの情報を基に起動すべきメ
ソッドを最終的に決定するメソッド最終決定処理を行う
ことを特徴とするオブジェクト指向言語のメソッド決定
方法によって達成される。
〔作用〕
本発明に係るオブジェクト指向言語のクラスを用いる
メソッド決定方法においては、クラスの上下判定方法に
おいては、クラスの上下判定方法を容易にするためのク
ラスの符号付け処理としては、木構造のクラスの階層関
係に対し、木の根に相当するクラスから深さ優先で木を
辿り、辿った順に各クラスの順番に番号をふる。これに
より、各クラスの下位クラス、すなわち、木構造の部分
木のすべての節に相当するクラスは、連続した番号がふ
られるため、その番号のクラスはその部分木の根に相当
するクラスの下位クラスであり、それ以外の番号のクラ
スは下位クラスではないことが容易に判定可能となる。
具体的には、例えば、各クラスに対し、その下位クラス
の最小の符号と最大の符号とを保持し、最小の符号以上
である、最大の符号以下の符号を持つクラスを下位クラ
スと判定し、他の符号を持つクラスを下位クラスでない
と判定することになる。
前述の如く、オブジェクトはいずれかのクラスに属し
ており、オブジェクトにメッセージを送信することによ
り、そのオブジェクトが属するクラスが保有している、
すなわち、そのクラスで定義されているか、もしくは、
上位クラスから継承しているメソッドが起動される。
そこで、本発明に係るオブジェクト指向言語のメソッ
ド決定方法においては、メッセージ送信の実行以前に、
メッセージセレクタを基に起動すべきメソッドの候補抽
出処理を行い、抽出された候補メソッドの中から、前記
レシーバの情報を基に起動すべきメソッドを最終的に決
定するメソッド最終決定処理を行う。また、レシーバの
オブジェクトが属しているクラス並びにその上位クラス
で定義されているメソッドを高速に探索するためには、
メッセージ送信の実行以前に、各クラスについて、上下
関係を容易に判定可能な符号付けを行い、メッセージ送
信実行時に、各メソッドを定義しているクラスがレシー
バの属するクラスの上位クラスか否かを、上述の符号付
けした符号から判定する処理を行う。
上記メソッド候補抽出処理は、メッセージ送信を実行
する前に行われ、レシーバがどのクラスに属するかにか
かわらず、メッセージセレクタの種類によって起動され
る可動性のあるメソッドをすべて抽出する。具体的に
は、システム内で定義されている全メソッドのうち、同
一のメッセージセレクタを持つものすべてを抽出する。
抽出したメソッドは、それを定義しているクラス名との
対応を示す対応表に記憶される。
また、上記メソッド最終決定処理は、メッセージ送信
の実行時点において、レシーバの属するクラスを求め、
メソッド候補抽出処理で作成した対応表の中から、レシ
ーバの属するクラスの上位クラスで宣言されたメソッド
を検索し、発見したメソッドをメッセージ送信によって
起動されるメソッドとして決定する。上述の対応表内
に、上下関係にあるクラスが存在した場合、対応表の検
索順序は下位クラスから行われる。この順序により、下
位クラスで定義されているメソッドによって上位クラス
のメソッドの継承が行われていない場合でも、上位クラ
スのメソッドを誤って起動することはない。
〔実施例〕
以下、本発明の実施例を図面に基づいて詳細に説明す
る。以下に説明する実施例においては、前述のメッセー
ジ送信によって起動されるメソッドを、メッセージに含
まれるメッセージセレクタと送信先であるオブジェクト
(レシーバ)から、どのように決定するかを説明する。
まず、以下に示す実施例の前提となる、本オブジェク
ト指向言語のクラスの階層関係とメソッドの継承を、具
体例により、第2図および第3図を用いて説明する。
第2図は、本オブジェクト指向言語で定義されたクラ
スの階層と、各クラスで定義されたメソッドを示す図で
ある。図中、110〜114はクラスであり、115〜118はクラ
スの階層関係を示している。例えば、階層関係115は、
クラスb 111の直接の上位クラスがクラスa 110であるこ
とを示している。120〜130は、各クラスで定義されてい
るメソッドであり、アルファベットの部分がメソッド名
であり、数字の部分は異なるメソッドを区別するために
付加した説明用の符号である。すなわち、メソッドA1
(120),メソッドA2(123),メソッドA3(125)は、
同一のメソッド名Aを持つ異なるメソッドである。クラ
スb 111は、上位クラスであるクラスa 110からメソッド
A1(120),メソッドB1(121)およびメソッドC1(12
2)を継承しているが、クラスb 111でメソッドA2(12
3),メソッドD1(124)を定義しているため、メソッド
A1(120)の継承は無効となり、クラスb 111で保持して
いるメソッドは、メソッドA2(123),メソッドB1(12
1),メソッドC1(122),メソッドD1(124)となる。
第2図のクラスの階層関係とメソッドの継承をまとめた
表が第3図である。
次に、メッセージ送信とメッセージ送信によって起動
されるメソッドとの関係について、第2図および第3図
に示した例により説明する。本オブジェクト指向言語に
よるメッセージ送信は、例えば、下記の如く記述され
る。
(send ?X A(3)) この例で、?Xはメッセージ送信のレシーバであるオブ
ジェクトを指し示す変数、Aはメッセージセレクタ、3
はパラメータである。このメッセージ送信によって、?X
が属するクラスが保持するメソッドのうち、メッセージ
セレクタAに合致するメソッドが起動される。ここで、
?Xがクラスc 112に属するオブジェクトであれば、起動
されるメソッドはメソッドA3(125)であり、?Xがクラ
スb 111またはクラスd 113に属するオブジェクトであれ
ば、起動されるメソッドはメソッドA2(123)、?Xがク
ラスa 110またはクラスe 114に属するオブジェクトであ
れば、起動されるメソッドはメソッドA1(120)であ
る。以上のことは、第3図の定義・継承しているメソッ
ド欄143を見れば判明する。
同様に、 (send ?X D(3)) なるメッセージ送信の場合、?Xがクラスb 111またはク
ラスc 112またはクラスd 113に属するオブジェクトであ
れば、起動されるメソッドはメソッドD1(124)であ
り、?Xがクラスe 114に属するオブジェクトであれば、
起動されるメソッドはメソッドD2(130)、クラスa 110
に属するオブジェクトであれば、起動されるメソッドは
存在せず、実行時エラーとなる。
以下、本実施例に係るメッセージ送信によって起動さ
れるメソッドの決定方法を説明するに先立って、前述の
二種類の従来方法を説明しておく。
まず、従来方法Iは、各クラス毎にそのクラスの直接
の上位クラスとそのクラスで定義されているメソッドの
一覧を保持するデータ構造を持っている。これは、第3
図のクラス欄140,上位クラス欄141,定義しているメソッ
ド欄142に相当する。このデータ構造を用いてメソッド
を決定する処理を、第4図に示す。
本処理では、まず、探索すべきクラスとしてレシーバ
のクラスを求め(ステップ150)、そのクラスで定義さ
れているメソッド内にメッセージセレクタと合致するメ
ソッドが存在するか否かを探索する(ステップ151)。
存在する場合には、そのメソッドが、起動すべきメソッ
ドであると決定する(ステップ155)。また、存在しな
い場合には、そのクラスの上位クラスが存在するか否か
を調べる(ステップ152)。直接の上位クラスが存在し
なければ、起動すべきメソッドは存在せず、実行時エラ
ーとする(ステップ154)。直線の上位クラスが存在す
る場合には、探索クラスをその直接の上位クラスとし
(ステップ153)、ステップ151以降を繰り返す。
次に、従来方法IIでは、各クラス毎に、そのクラスで
定義されているメソッドと上位クラスから継承している
メソッドの一覧を保持するデータ構造を持つ。これは、
第3図のクラス欄140,定義・継承しているメソッド欄14
3に相当する。このデータ構造を用いてメソッドを決定
する処理を、第5図に示す。
本処理では、まず、探索すべきクラスとしてレシーバ
のクラスを求め(ステップ160)、そのクラスで定義・
継承されているメソッド内にメッセージセレクタと合致
するメソッドが存在するか否かを探索する(ステップ16
1)。存在する場合には、そのメソッドが、起動すべき
メソッドであると決定する(ステップ162)、また、存
在しない場合には、起動すべきメソッドは存在せず、実
行時エラーとする(ステップ163)。
従来方法IIは、各クラス毎のメソッド一覧のデータ構
造の容量は、従来方法Iと比べて大きくなるが、1個の
データ構造のみの探索でメソッドを決定できるため、従
来方法Iよりも高速なメソッド決定が可能な方法であ
る。なお、メソッド一覧のデータ構造と、その探索方法
については、二分探索表を用いた二分探索法や、ハッシ
ュテーブルを用いたハッシュ法等が使われている。
上述の、従来方法I,同IIは、いずれも、メッセージ送
信の実行の都度、メソッドの探索処理を行うため、探索
対象となるメソッド一覧が増加すると探索に時間がかか
り、実行速度の低下を招くことは前述の通りである。こ
れに対して、本実施例(実施例I)による方法では、以
下に説明する如く、高速な処理が実現できる。
すなわち、第1図(a)に示す如く、まず、メッセー
ジ送信実行以前に、すべてのクラスに対してクラスの上
下関係が容易に判別可能な符号を付加し(ステップ17
0)、各メッセージ送信記述に対して、そのメッセージ
セレクタと合致する候補メソッドとその候補メソッドを
定義しているクラスを抽出して、対応表を作成する(ス
テップ171)。このステップ170および171は、メッセー
ジ送信実行前に一度だけ行われる。
メッセージ送信の実行に対しては、第1図(b)に示
す如く、まず、レシーバの属するクラスを求め(ステッ
プ172)、ステップ171で作成した候補メソッドとクラス
の対応表から、ステップ172で求めたレシーバのクラス
の上位関係にあるクラスを探索し、そのクラスに対応す
るメソッドを起動すべきメソッドとして決定する(ステ
ップ173)。
上述のステップ170の符号付け方法としては、例え
ば、木構造のクラスの階層を根に相当するクラスから深
さ優先で順に辿って行き、辿った順に1から順に番号付
けをする処理を行う。具体的には、第2図に示したクラ
スの階層で、根に相当するクラスa 110から順に辿る
と、クラスa 110,クラスb 111,クラスc 112,クラスd 11
3,クラスe 114の順に辿ることになるので、これに、順
に1,2,3,4,5の番号を符号として付加することになる。
この符号付けは、あるクラスおよびそのクラスの下位の
クラスはすべて特定の範囲内の符号を持つという特徴が
ある。例えば、クラスb 111とその下位クラスは、範囲
2から4の符号を持ち、それ以外のクラスは範囲2から
4以外の符号を持つ。
符号付けの結果として、ステップ170は、第6図に示
す符号表180を出力する。符号表180は、クラス名欄181,
各クラスの符号欄182,各クラスおよびその下位クラスの
符号の最小値欄183,各クラスおよびその下位クラスの符
号の最大値欄184から構成されている。なお、各クラス
の符号欄182と各クラスおよびその下位クラスの符号の
最小値欄183の値は必ず等しい。
上述のステップ171では、各メッセージ送信記述に対
して、候補メソッドを抽出する。第2図の例で、 (send ?X A(3)) なるメッセージ送信に対しては、メッセージセレクタA
を持つメソッドは、メソッドA1(120),メソッドA2(1
23),メソッドA3(125)であるため、第7図に示す如
き候補メソッド対応表186が作成される。候補メソッド
欄185は抽出した候補メソッドが設定され、クラス名欄1
81はその候補メソッドを定義しているクラスが設定され
る。各クラスおよび下位クラスの符号の最小値欄183,各
クラスおよびその下位クラスの符号の最大値欄184は、
符号表180から複写したものである。候補メソッド対応
表186の記入順序は、下位クラスから上位クラスとなっ
ている。すなわち、クラスc 112の方が、クラスb 111よ
り先に記入されている。
同様に、 (send ?X D(3)) なるメッセージ送信に対しては、第8図に示す如き候補
メソッド対応表187が作成される。
第1図(b)に示した、メッセージ送信実行時のメソ
ッド決定処理であるステップ173では、ステップ172で求
めたレシーバのクラスと、ステップ171で作成した候補
メソッドの対応表を基に、起動すべきメソッドを決定す
る。この場合の手順としては、候補メソッド対応表を順
に走査し、ステップ172で求めたレシーバのクラスの符
号が、候補メソッド対応表の各クラスおよびその下位ク
ラスの符号の最小値183の値と各クラスおよびその下位
クラスの符号の最大値欄184の値の範囲内の値であれ
ば、その候補メソッドが起動すべきメソッドであると決
定する。例えば、 (send ?X A(3)) なるメッセージ送信の場合、?Xのクラスがクラスd 113
であった場合、クラスd 113の符号は4であるから、第
7図の候補メソッド対応表186を上から順に走査し、メ
ソッドA2の各クラスおよびその下位クラスの符号の最小
値欄183の値(2)と、各クラスおよびその下位クラス
の符号の最大値欄184の値(4)の範囲内であることが
判明し、起動すべきメソッドがメソッドA2であると決定
できる。また、 (send ?X D(3)) なるメッセージ送信で、?Xのクラスがクラスa110であっ
た場合、クラスa 110の符号は1であるから、第8図の
候補メソッド対応表187を走査しても、1を範囲として
含むメソッドは発見できない。よって、起動すべきメソ
ッドは存在せず、実行時エラーを出すことがわかる。
以上の如く、本実施例のメソッド決定方法をメッセー
ジ送信時における表の探索時間は、候補メソッド対応表
の大きさに依存する。候補メソッド対応表の大きさは、
全クラス階層内で定義されている同名のメソッドの数に
等しく、従来方法I,同IIの如く、クラス内で定義されて
いるメソッドの数とは無関係である。
上述の実施例Iの効果を従来方法IIと比較すると、従
来方法IIでのメソッド決定速度は、メッセージ送信のレ
シーバが属するクラスで定義・継承されているメソッド
の数に依存するのに対し、上述の実施例でのメソッド決
定速度は、メッセージ送信のメッセージセレクタに合致
するメソッドの数に依存する。大規模のシステムにおい
ては、各クラスが継承しているメソッド数は100以上の
ものも多く、二分探索法を用いた場合、従来方法IIで
は、平均7回以上の比較が必要となる。それに対して、
同一のメッセージセレクタを持つメソッドの数は一般に
少なく、1個か2個のものが大半であり、それらに対し
ては、上記実施例では、1回か2回の比較でメソッドを
決定することが可能となり、高速なメッセージ送信を実
現できる。
次に、本発明の第二の実施例を、第9図を用いて説明
する。
本実施例(実施例II)は、先に示したあ実施例Iに係
る第1図における符号付け処理(ステップ170)を、変
更したものである。
本実施例における符号付け処理は、次の如き特徴を有
する。二つのクラスC1とC2があった場合、C1とC2の符号
を、それぞれF1とF2とし、F1とF2の符号長を、それぞれ
L1とL2とする。ここで、C1がC2の上位クラスであれば、
C2の符号であるF2の上位L1ビットは、C1の符号であるF1
と一致する。また、逆に、C2の符号であるF2の上位L1ビ
ットは、C1の符号であるF1と一致するならば、C1はC2の
上位クラスであることが保証される。
第9図は、第2図に示すクラス階層に、本実施例の符
号付けを行った結果を示すものである。例えば、クラス
b 111は、クラスd 113の上位クラスであるため、クラス
d113の符号の上位2ビット(クラスb 111の符号長)
は、クラスb 111の符号と一致する。
本実施例の効果は、先に示した実施例Iに比較して、
クラスの上下関係の判定処理速度が若干異なるが、全体
的には、ほぼ同等である。
次に、本発明の第三の実施例を説明する。
前述の各実施例に示した方法は、同一のメッセージセ
レクタを持つメソッドが少ないメッセージセレクタを含
むメッセージ送信の場合、そのメソッドを決定する場合
には、起動すべきメソッドを高速に決定できるが、同一
のメッセージセレクタを持つメソッドが多数存在する場
合には、候補メソッド対応表を順に探索する必要があ
り、処理に要する時間が長くかかるようになる。
本実施例(実施例III)は、これに対処するためのも
ので、同一のメッセージセレクタを持つメソッドが少な
いメッセージセレクタを含むメッセージ送信の場合、す
なわち、候補メソッドの数が少数の場合は前述の各実施
例に示した方法を用い、候補メソッドの数が多数の場合
は、前述の従来方法によるメソッド決定方法を用いるも
のである。
候補メソッドの多数,少数の判断の基準としては、実
際のシステムのオーバーヘッドを測定して決定すべきも
のであるが、ここでは、仮に、2個以下を少数、3個以
上を多数とする。この基準は容易に変更可能である。
第10図は、本実施例の処理の概略を示すフローチャー
トである。ステップ170と171は、前述の各実施例に示し
たものと同様である。本実施例においては、まず、メッ
セージ送信実行前に、クラスの上下階層を判別可能な符
号付けを各クラスに対して行う(ステップ170)。符号
付け方法は、前述の各実施例に示したもののいずれでも
構わないが、ここでは、実施例Iに示した符号付け方法
を採用するものとする。
次に、全メソッドの中から、同一のメッセージセレク
タを持つメソッドが3個以上存在するメソッドを抽出す
る(ステップ174)。ステップ174で抽出されたメソッド
は、前述の実施例Iに示したメソッド決定方法の対象外
となり、このメソッドに対しては、従来方法でのメソッ
ド決定方法が適用される。このために、すべてのクラス
に対してステップ174で抽出されたメソッドの保有状態
を示す情報、すなわち、クラス内でメソッドの探索する
ための探索表を作成する(ステップ175)。
次に、各メッセージ送信に対し、従来方法IIのメソッ
ド決定方法を用いるか、実施例Iのメソッド決定方法を
用いるかを区別するために、各メッセージ送信のメッセ
ージセレクタがステップ174で抽出したメソッドと合致
するか否かを判定する(ステップ176)。合致しなかっ
たメッセージ送信に対しては、前述の実施例Iのメソッ
ド決定方法を適用するために、候補メソッド対応表を作
成する(ステップ171)。これに基づいて、メッセージ
送信の実行時には、ステップ176で合致すると判定され
たメッセージ送信に対しては、従来方法IIのメソッド決
定方法を用いてメソッドを決定し、合致しないと判定さ
れたメッセージ送信に対しては、前述の実施例Iのメソ
ッド決定方法を用いてメソッドを決定する。
第2図に示したクラス階層とメソッド定義状態に対し
て、本実施例のメソッド決定方法を適用すると、ステッ
プ174においては、メッセージセレクタAを持つメソッ
ド(メソッドA1(120),メソッドA2(123),メソッド
A3(125)が抽出され、ステップ175では、第11図に示す
メソッド保有情報が作成される。先に第3図に示した従
来方法のメソッド保有情報と比較すれば理解される如
く、本実施例のメソッド保有情報は、ステップ174で抽
出されたものだけから構成されるため、コンパクトな情
報になっている。
本実施例において、 (send ?X A(3)) なるメッセージ送信に対しては、メッセージセレクタA
は、ステップ174で抽出したメソッドと合致するため、
メッセージ送信実行時にレシーバである?Xの属するクラ
スに応じて、第11図のメソッド保有情報を調べ、起動す
べきメソッドを決定する。また、 (send ?X D(3)) なるメッセージ送信に対しては、メッセージセレクタD
は、ステップ174で抽出したメソッドと合致しないた
め、実施例Iと同様に、ステップ171として、第8図に
示す候補メソッド対応表187を作成し、メッセージ送信
実行時にレシーバである?Xの属するクラスと候補メソッ
ド対応表187とから、起動すべきメソッドを決定する。
詳細な決定方法は、実施例Iと全く同様である。
本実施例の効果は、以下の通りである。すなわち、ス
テップ174で抽出したメソッドと合致しないメッセージ
送信に対しては、前述の実施例Iのメソッド決定方法を
用いるため、メソッド決定速度は、実施例Iの場合と同
様、従来方法IIが平均7回以上の比較を行う必要がある
のに対して、2回以下の比較でメソッドが決定される。
なお、3回以上の比較が必要なメソッドは、前述のステ
ップ174で抽出され、従来方法IIのメソッド決定方法が
適用される。また、ステップ174で抽出したメソッドと
合致するメッセージ送信に対しては、従来方法IIの方法
を適用するが、探索対象となるメソッドが、従来方法II
では、レシーバのクラスで定義・継承されている全メソ
ッドであるのに対して、本実施例IIIでは、レシーバの
クラスで定義・継承されているメソッドのうち、ステッ
プ174で抽出したメソッドのみであるため、従来方法よ
り高速にメソッド決定が可能である。
ここで、ステップ174で抽出したメソッドが全メソッ
ドの1/4と仮定すると、比較回数が二分探索法の場合、
2回減少する。従って、あらゆるメッセージ送信におい
て、従来方法より高速なメソッド決定が可能である。
最後に、多重継承の場合の例を示す。前述の実施例I
〜IIIは、対象としているオブジェクト指向言語は、ク
ラスの階層関係として単一継承の言語であるが、ここで
は、多重継承の場合を対象とする。すなわち、各クラス
は、直接の上位クラスとして、複数のクラスを持つこと
ができ、それぞれからメソッドを継承する。複数の直接
の上位クラスには優先度が定義され、それぞれからの同
一のメッセージセレクタを持つ異なるメソッドが継承さ
れた場合には、優先度の低いクラスから継承されたメソ
ッドは無視される。
第12図に、本オブジェクト指向言語のクラス階層とメ
ソッド定義状態の例を示す。この例では、クラスf 131
が、クラスc 112,クラスd 113,クラスe 114を、直接の
上位クラスとして持っている。継承の優先度は、クラス
c 112との継承関係132,クラスd 113との継承関係133,ク
ラスe 114との継承関係134の順とする。
クラスf 131が継承しているメソッドは、クラスc 112
からはクラスc 112が保有している全メソッド、クラスd
113からはメソッドF1(129)、クラスe 114からは継承
なしとなる。ここで、クラスd 113からのメソッドE2(1
28)はクラスc112から同名のメソッドE1(127)を継承
しているため、継承せず、また、クラスe 114からのメ
ソッドD2(130)はクラスc112から同名のメソッドD1(1
24)を継承しているため、継承しないことになる。
多重継承のクラス階層では、前述の実施例IからIII
で用いたクラスの上下関係判定方法は用いることができ
ず、実施例IからIIIのメソッド決定方法はそのままは
用いることはできない。しかし、優先度の最も高い直接
の上位クラス以外の直接の上位クラスから継承されたメ
ソッドを自クラスで定義されたメソッドであると解釈す
れば、単一継承のクラス階層で等価のメソッド定義状態
を作成することができる。すなわち、第13図に示すクラ
ス階層図は、第12図のクラス階層図とメソッド定義状態
においては等価である。
第13図においては、クラスf 131において、クラスd 1
13で定義されているメソッドF1(129)と全く同一のメ
ソッドF1(135)が定義されているため、クラスf 131が
保有しているメソッドは、クラスc 112から継承したメ
ソッドと、メソッドF1(135)となる。本実施例では、
対象とする多重継承を含むクラス階層を、等価な単一継
承のクラス階層に変換した後に、前述の各実施例に示し
たメソッド決定方法を適用するものである。
なお、上記各実施例は、いずれも本発明の一例として
示したものであり、本発明はこれらに限定されるべきも
のではない。
〔発明の効果〕
以上、詳細に説明した如く、本発明によれば、予め各
クラスに符号を付加する符号付け処理を行い、上下関係
を判定したい二つのクラスに付加された符号から上下関
係の判定処理を行うようにしたことにより、クラスの上
下関係をより高速に判定する方法を実現できるという効
果がある。また、オブジェクト指向言語で記述されたメ
ッセージ送信によって起動すべきメソッドを、メッセー
ジ送信の送信先であるレシーバの情報と、メッセージ送
信のメッセージセレクタとから決定するメソッド決定方
法において、メッセージセレクタを求に起動すべきメソ
ッドの候補抽出処理を行い、抽出された候補メソッドの
中から、前記レシーバの情報を基に起動すべきメソッド
を最終的に決定するメソッド最終決定処理を行うように
したので、従来より高速なメソッド決定方法を実現でき
るという効果がある。
【図面の簡単な説明】
第1図は本発明の第一の実施例の処理の概略を示すフロ
ーチャート、第2図は実施例I〜IIIが対象とするオブ
ジェクト指向言語で定義されたクラス階層と各クラスで
定義されたメソッドの例を示す図、第3図は第2図の関
係をまとめた図、第4図,第5図は従来方法の処理の概
要を示すフローチャート、第6図は実施例Iのクラスに
対する符号付け結果を示す図、第7図,第8図は候補メ
ソッド対応表の例を示す図、第9図は実施例IIに対する
符号付け結果を示す図、第10図は実施例IIIにおける処
理の概要を示すフローチャート、第11図は実施例IIIで
作成するメソッド保有情報の例を示す図、第12図は実施
例IVが対象とするオブジェクト指向言語の多重継承を含
むクラス階層とメソッド定義状態の例を示す図、第13図
は第12図と等価なクラス階層とメソッド定義状態を持つ
単一継承のクラス階層図である。 110〜114,131:クラス、115〜118と132〜134:クラスの階
層関係、120〜130と135:メソッド、180:符号表、186,18
7:候補メソッド対応表。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平2−67635(JP,A) 「bit」 Vol.20,No.7 (1988−7) 共立出版,P.67−70 「コンピュータソフトウェア」 Vo l.4,No.7 (1987−7) 岩波 書店 P.82−92 (58)調査した分野(Int.Cl.6,DB名) G06F 9/44

Claims (10)

    (57)【特許請求の範囲】
  1. 【請求項1】オブジェクト指向言語で記述されたメッセ
    ージ送信によって起動すべきメソッドを、メッセージ送
    信の送信先であるレシーバの情報及びメッセージ送信の
    中に含まれるメッセージセレクタとから決定するオブジ
    ェクト指向言語のメソッド決定方法において、 該オブジェクト指向言語で記述された、メソッドを持つ
    全クラスおよびその階層情報を入力とし、木構造のクラ
    ス階層を、根に相当するクラスから深さ優先で順にたど
    って行き、たどった順に番号付けをする処理を行うこと
    で、該各クラスに対して符号付け処理を行う符号付け処
    理ステップと、 前記符号付け処理ステップの出力を入力として、該オブ
    ジェクト指向言語で記述されたメッセージ送信記述部に
    対応して、該メッセージ送信記述部のメッセージセレク
    タと合致する各クラスの中の候補メソッドとそのメソッ
    ドを定義しているクラスとを抽出し、該メッセージ送信
    記述のセレクタに対応したメソッドを定義しているクラ
    スと、該クラスの子供たちの上記番号付けをする処理で
    番号付けられた番号の範囲の組みからなり、さらに下位
    クラスから上位クラスとなっているようにソーティング
    したメソッド対応表を作成するメソッド対応表作成処理
    ステップと、 メッセージ送信の実行時に、メソッド対応表を順に走査
    し、レシーバのクラスの符号が、該メソッド対応表の各
    クラス及びその下位クラスの符号の最小値の値と各クラ
    ス及び該最下位クラスの符号の最大値の範囲以内であれ
    ば、その候補メソッドを起動すべきメソッドとするメソ
    ッド決定処理ステップと を有することを特徴とするオブジェクト指向言語のメソ
    ッド決定方法。
  2. 【請求項2】請求項1に記載のオブジェクト指向言語の
    メソッド決定方法において、 前記メソッド対応表のエントリがしきい値以下の場合、
    上記処理によりメソッド決定し、 しきい値以上の場合、従来の二分探索方式によるクラス
    の持つメソッド候補表の検索によるメソッド決定を切り
    替えて行うことを特徴とするオブジェクト指向言語のメ
    ソッド決定方法。
  3. 【請求項3】請求項1に記載のオブジェクト指向言語の
    メソッド決定方法において、 前記オブジェクト指向言語が、多重継承機能を有する場
    合、多重継承を含むクラス階層をメソッドの保有状態に
    ついて等価な関係にある単一継承のクラスに変換し、該
    単一継承のクラス階層について上記メソッド決定を行う
    ことを特徴とするオブジェクト指向言語のメソッド決定
    方法。
  4. 【請求項4】請求項1に記載のオブジェクト指向言語の
    メソッド決定方法において、 前記番号付けとして、可変長の符号を用いることを特徴
    とするオブジェクト指向言語のメソッド決定方法。
  5. 【請求項5】請求項1に記載のオブジェクト指向言語の
    メソッド決定方法において、 前記メソッド決定処理では、メッセージ送信実行以前に
    該メッセージ送信によって起動される可能性のあるメソ
    ッドの抽出処理を行い、 メッセージ送信実行時には、前記抽出処理によって抽出
    されたメソッドの中から起動すべきメソッドを決定する
    メソッド最終決定処理を行うことを特徴とするオブジェ
    クト指向言語のメソッド決定方法。
  6. 【請求項6】請求項1または5に記載のオブジェクト指
    向言語のメソッド決定方法において、 前記メソッド決定処理では、メッセージ送信実行以前に
    該メッセージ送信によって起動すべきメソッドが一意に
    判定できる場合、該メッセージ送信実行以前に起動すべ
    きメソッドの決定処理を行い、 メッセージ送信実行以前に該メッセージ送信によって起
    動すべきメソッドが一意に判定できない場合にのみ、前
    記メッセージ送信実行時に起動すべきメソッドを決定す
    るメソッド最終決定処理を行うことを特徴とするオブジ
    ェクト指向言語のメソッド決定方法。
  7. 【請求項7】請求項1に記載のオブジェクト指向言語の
    メソッド決定方法において、 前記メソッド決定処理では、メッセージ送信実行時に同
    一の名称を持つメソッドのみを探索して該メッセージ送
    信によって起動すべきメソッドを決定するメソッド最終
    決定処理を行うことを特徴とするオブジェクト指向言語
    のメソッド決定方法。
  8. 【請求項8】請求項1〜7のいずれかに記載のオブジェ
    クト指向言語のメソッド決定方法において、 前記メソッド決定処理において、予め各クラスに符号を
    付加する前記符号付け処理を行い、上下関係を判定した
    い二つのクラスに付加された符号から上下関係の判定処
    理を行うことを特徴とするオブジェクト指向言語のメソ
    ッド決定方法。
  9. 【請求項9】請求項1〜8のいずれかに記載のオブジェ
    クト指向言語のメソッド決定方法において、 前記符号付け処理は、符号として数字を用い、あるクラ
    スの下位クラスの符号はすべて当該クラスに固有のある
    範囲内の数字であり、それ以外のクラスの符号はすべて
    その範囲内の数字でない符号を付加する処理であり、上
    下関係判定処理は、あるクラスの符号が、別のクラスの
    下位クラスの符号範囲内の数字であれば前者のクラスは
    後者のクラスの下位クラスであり、符号範囲内の数字で
    なければ下位クラスでないと判断する処理であることを
    特徴とするオブジェクト指向言語のメソッド決定方法。
  10. 【請求項10】請求項1〜9のいずれかに記載のオブジ
    ェクト指向言語のメソッド決定方法において、 前記符号付け処理は、符号として可変長の符号を用い、
    あるクラスのすべての下位クラスの符号は該クラスの符
    号パターンを包含する符号を付加する処理であり、 上下関係判定処理は、あるクラスの符号が、別のクラス
    の符号を内部に包含していたならば、前者のクラスは後
    者のクラスの下位クラスであり、包含していなければ下
    位クラスでないと判定することを特徴とするオブジェク
    ト指向言語のメソッド決定方法。
JP1135862A 1989-05-31 1989-05-31 オブジェクト指向言語のクラスを用いるメリッド決定方法 Expired - Lifetime JP2808672B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP1135862A JP2808672B2 (ja) 1989-05-31 1989-05-31 オブジェクト指向言語のクラスを用いるメリッド決定方法
US07/529,955 US5313633A (en) 1989-05-31 1990-05-29 Process and device for deciding class hierarchical relationship of object oriented language and process and device for determining method utilizing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1135862A JP2808672B2 (ja) 1989-05-31 1989-05-31 オブジェクト指向言語のクラスを用いるメリッド決定方法

Publications (2)

Publication Number Publication Date
JPH032932A JPH032932A (ja) 1991-01-09
JP2808672B2 true JP2808672B2 (ja) 1998-10-08

Family

ID=15161502

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1135862A Expired - Lifetime JP2808672B2 (ja) 1989-05-31 1989-05-31 オブジェクト指向言語のクラスを用いるメリッド決定方法

Country Status (2)

Country Link
US (1) US5313633A (ja)
JP (1) JP2808672B2 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659723A (en) * 1991-12-20 1997-08-19 International Business Machines Corporation Entity/relationship to object oriented logical model conversion method
JPH06103075A (ja) * 1992-07-06 1994-04-15 Internatl Business Mach Corp <Ibm> オブジェクト指向適用業務
JP2597460B2 (ja) * 1992-11-12 1997-04-09 インターナショナル・ビジネス・マシーンズ・コーポレイション 複合データ構造を生成及び記憶する方法及び装置
JPH06214865A (ja) * 1993-01-12 1994-08-05 Fujitsu Ltd オブジェクト・ベース・データ処理装置
US5522071A (en) * 1994-01-18 1996-05-28 Sybase, Inc. Run-time message redirection for invoking object oriented methods based on alternate dispatch variable
JPH08249185A (ja) * 1995-03-15 1996-09-27 Fujitsu Ltd オブジェクトデータ処理装置
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
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
US6377954B1 (en) * 1997-04-04 2002-04-23 Fujitsu Limited Object-oriented processing system and object-oriented case apparatus
US6499036B1 (en) * 1998-08-12 2002-12-24 Bank Of America Corporation Method and apparatus for data item movement between disparate sources and hierarchical, object-oriented representation
US6751634B1 (en) * 1999-08-26 2004-06-15 Microsoft Corporation Method and system for detecting object inconsistency in a loosely consistent replicated directory service
US6754364B1 (en) * 1999-10-28 2004-06-22 Microsoft Corporation Methods and systems for fingerprinting digital data
US6598220B1 (en) 1999-12-17 2003-07-22 Dell Products L.P. System and method for allowing registerable runtime modification of object behaviors
US6859217B2 (en) * 2000-07-19 2005-02-22 Microsoft Corporation System and method to display and manage data within hierarchies and polyarchies of information
US6591276B1 (en) 2000-07-21 2003-07-08 International Business Machines Corporation Method and system for managing object types for objects defined externally to the system
US6957230B2 (en) 2000-11-30 2005-10-18 Microsoft Corporation Dynamically generating multiple hierarchies of inter-object relationships based on object attribute values
US7047413B2 (en) 2001-04-23 2006-05-16 Microsoft Corporation Collusion-resistant watermarking and fingerprinting
US7017593B2 (en) 2001-08-30 2006-03-28 Toshimi Honda Pipe washing method and pipe washing apparatus
US6944626B2 (en) 2001-11-26 2005-09-13 Microsoft Corp. Dynamically generated schema representing multiple hierarchies of inter-object relationships
US6952704B2 (en) 2001-11-26 2005-10-04 Microsoft Corporation Extending a directory schema independent of schema modification
US7389335B2 (en) * 2001-11-26 2008-06-17 Microsoft Corporation Workflow management based on an integrated view of resource identity
US7587421B2 (en) * 2004-01-30 2009-09-08 International Business Machines Corporation Method, system, and article of manufacture for generating device specific requests
US9015661B1 (en) 2011-06-23 2015-04-21 The Mathworks, Inc. Restricting class inheritance relationships

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4739477A (en) * 1984-08-30 1988-04-19 International Business Machines Corp. Implicit creation of a superblock data structure
US4930071A (en) * 1987-06-19 1990-05-29 Intellicorp, Inc. Method for integrating a knowledge-based system with an arbitrary database system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
「bit」 Vol.20,No.7 (1988−7) 共立出版,P.67−70
「コンピュータソフトウェア」 Vol.4,No.7 (1987−7) 岩波書店 P.82−92

Also Published As

Publication number Publication date
US5313633A (en) 1994-05-17
JPH032932A (ja) 1991-01-09

Similar Documents

Publication Publication Date Title
JP2808672B2 (ja) オブジェクト指向言語のクラスを用いるメリッド決定方法
US6138269A (en) Determining the actual class of an object at run time
US6301585B1 (en) Redundancy elimination in the persistence of object graphs
US6212578B1 (en) Method and apparatus for managing dependencies in a distributed computing environment for ensuring the safety of remote procedure calls
US20040194065A1 (en) Fuzzy location of a testable object in a functional testing tool
CN107273294B (zh) 一种基于神经网络语言模型的重复代码检测方法
JPH09146821A (ja) 異質データタイプに対して透明性を持った持続的なデータサポートを提供する方法と装置
JP2001125787A (ja) プログラム・オブジェクトのシリアライゼーション方法、およびプログラム・オブジェクトのデシリアライゼーション方法
US6012061A (en) Method and apparatus for deleting nodes in Patricia trees
US4964063A (en) System and method for frame and unit-like symbolic access to knowledge represented by conceptual structures
CA2398148C (en) System and method for managing bi-directional relationships between objects
US20050091637A1 (en) Changeable class and pattern to provide selective mutability in computer programming environments
US8261239B2 (en) Locating a testable object in a functional testing tool
US5267349A (en) Fast determination of subtype relationship in a single inheritance type hierarchy
US8631013B2 (en) Non-intrusive data logging
CN107402764B (zh) 一种图形化页面程序功能特征码计算刷新方法
CN107291435B (zh) 一种不确定性环境下混成aadl模型量化分析方法
US6480833B2 (en) Method of resolving overloaded routines, system for implementing the same and medium for storing processing program therefor
Runwal et al. Code clone detection based on logical similarity: A review
CN114595148B (zh) 一种基于数据流传播分析的Java空指针引用检测方法及系统
CN116226686B (zh) 一种表格相似性分析方法、装置、设备和存储介质
Steindorfer et al. To-many or to-one? all-in-one! efficient purely functional multi-maps with type-heterogeneous hash-tries
US20060155755A1 (en) Constructing and referring objects in a computing environment
Liu et al. Research on Digital Serialization Method of Program Code
CN117632911A (zh) 数据库过程语言迁移方法及装置