JPH02214940A - メソッド実行方式 - Google Patents
メソッド実行方式Info
- Publication number
- JPH02214940A JPH02214940A JP3669689A JP3669689A JPH02214940A JP H02214940 A JPH02214940 A JP H02214940A JP 3669689 A JP3669689 A JP 3669689A JP 3669689 A JP3669689 A JP 3669689A JP H02214940 A JPH02214940 A JP H02214940A
- Authority
- JP
- Japan
- Prior art keywords
- class
- module
- inheritance
- execution
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 139
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔概要〕
継承を解決してメソッドを実行するメソッド実行方式に
関し、 クラス内で定義したメソッドのコードモジュールと、ク
ラス毎にこれをポイントするための結合メソッドモジュ
ールおよび結合メソッドテーブルとを別個に設け、必要
に応じて継承を解決して実行すると共に継承クラスの変
更を容易に可能にすることを目的とし、 クラス内で定義するメソッドの実行コードをまとめたコ
ードモジュールと、クラス内で定義およびクラスが継承
するメソッド名を格納するメソッドテーブルと、このメ
ソッドテーブルに格納したメソッド名に対応する自クラ
スおよび継承する他のクラスのメソッドの上記コードモ
ジュール内の実行コードに関連づけるポインタを格納す
る結合メソッドモジュールとを備え、実行に先立ち各ク
ラス内で定義したメソッドの上記コードモジュール(3
)を作成すると共に、継承解決可能なクラスのメソッド
、更に実行中にクラスの継承が未解決あるいは変更と判
明した時に、上記メソッドテーブルおよび上記結合メソ
ッドモジュール(2)に当該メソッド名およびポインタ
を登録・変更して継承を解決し、これらを参照して該当
メソッドのコードモジュール内の実行コードを実行する
ように構成する。
関し、 クラス内で定義したメソッドのコードモジュールと、ク
ラス毎にこれをポイントするための結合メソッドモジュ
ールおよび結合メソッドテーブルとを別個に設け、必要
に応じて継承を解決して実行すると共に継承クラスの変
更を容易に可能にすることを目的とし、 クラス内で定義するメソッドの実行コードをまとめたコ
ードモジュールと、クラス内で定義およびクラスが継承
するメソッド名を格納するメソッドテーブルと、このメ
ソッドテーブルに格納したメソッド名に対応する自クラ
スおよび継承する他のクラスのメソッドの上記コードモ
ジュール内の実行コードに関連づけるポインタを格納す
る結合メソッドモジュールとを備え、実行に先立ち各ク
ラス内で定義したメソッドの上記コードモジュール(3
)を作成すると共に、継承解決可能なクラスのメソッド
、更に実行中にクラスの継承が未解決あるいは変更と判
明した時に、上記メソッドテーブルおよび上記結合メソ
ッドモジュール(2)に当該メソッド名およびポインタ
を登録・変更して継承を解決し、これらを参照して該当
メソッドのコードモジュール内の実行コードを実行する
ように構成する。
本発明は、継承を解決してメソッドを実行するメソッド
実行方式に関するものである。
実行方式に関するものである。
〔従来の技術と発明が解決しようとする課題〕オブジェ
クト指向型言語は、継承という機能を持っている。従来
、継承しているクラスのメソッドを実行前に静的あるい
は実行時に動的にメソッドテーブルに登録し、実行時に
このメソッドテーブルをもとに実行するようにしている
。
クト指向型言語は、継承という機能を持っている。従来
、継承しているクラスのメソッドを実行前に静的あるい
は実行時に動的にメソッドテーブルに登録し、実行時に
このメソッドテーブルをもとに実行するようにしている
。
しかし、前者の静的に継承を解決する方式は、該当する
クラスのメソッドテーブルを作成する前に継承する全て
のクラスが登録されている必要があり、被継承クラスか
ら順に登録していかなければならないと共に、継承クラ
スが変更された場合にコードモジュール全体を作り直さ
なければならないという問題がある。
クラスのメソッドテーブルを作成する前に継承する全て
のクラスが登録されている必要があり、被継承クラスか
ら順に登録していかなければならないと共に、継承クラ
スが変更された場合にコードモジュール全体を作り直さ
なければならないという問題がある。
一方、後者の動的に継承を解決する方式は、継承クラス
の変更による影響を受けずに済むが、実行時に継承解決
を行うためにオーバーヘッドが大きいという問題がある
。
の変更による影響を受けずに済むが、実行時に継承解決
を行うためにオーバーヘッドが大きいという問題がある
。
本発明は、クラス内で定義したメソッドのコードモジュ
ールと、クラス毎にこれをポイントするための結合メソ
ッドモジュールおよび結合メソッドテーブルとを別個に
設け、必要に応じて継承を解決して実行すると共に継承
クラスの変更を容易に可能にすることを目的としている
。
ールと、クラス毎にこれをポイントするための結合メソ
ッドモジュールおよび結合メソッドテーブルとを別個に
設け、必要に応じて継承を解決して実行すると共に継承
クラスの変更を容易に可能にすることを目的としている
。
第1図は本発明の原理構成図を示す。
第1図において、コードモジュール3は、クラス内で定
義するメソッドの実行コードを1つのモジュールにまと
めたものである。
義するメソッドの実行コードを1つのモジュールにまと
めたものである。
メソッドテーブルlは、クラス内で定義およびクラスが
継承するメソッド名を格納するテーブルである。
継承するメソッド名を格納するテーブルである。
結合メソッドモジュール2は、メソッドテーブルlに格
納したメソッド名に対応する自クラスおよび継承する他
のクラスのメソッドのコードモジュール3内の実行コー
ドに関連づけるポインタを格納するものである。
納したメソッド名に対応する自クラスおよび継承する他
のクラスのメソッドのコードモジュール3内の実行コー
ドに関連づけるポインタを格納するものである。
本発明は、第1図に示すように、メソッドの実行に先立
ち、クラス内で定義したメソッドのコードモジュール3
を図示のように作成すると共に、クラス毎に設けたメソ
ッドテーブル1および結合メソッドモジュール2に対し
て自クラス内のメソッド名、継承解決可能な継承するク
ラスのメソッド名、および該当するコードモジュール3
内の実行コードをポイントするポインタをそれぞれ登録
し、これらのメソッドテーブル1および結合メソッドモ
ジュール2を参照して該当メソッドのコードモジュール
3内の実行コードの実行時に継承クラスの未解決あるい
は変更と判明した時に、未解決あるいは変更(追加、修
正、変更、削除)のクラスのメソッドについて、メソッ
ドテーブル1および結合メソッドモジュール2に登録あ
るいは変更し、クラスの継承を解決して実行するように
している。
ち、クラス内で定義したメソッドのコードモジュール3
を図示のように作成すると共に、クラス毎に設けたメソ
ッドテーブル1および結合メソッドモジュール2に対し
て自クラス内のメソッド名、継承解決可能な継承するク
ラスのメソッド名、および該当するコードモジュール3
内の実行コードをポイントするポインタをそれぞれ登録
し、これらのメソッドテーブル1および結合メソッドモ
ジュール2を参照して該当メソッドのコードモジュール
3内の実行コードの実行時に継承クラスの未解決あるい
は変更と判明した時に、未解決あるいは変更(追加、修
正、変更、削除)のクラスのメソッドについて、メソッ
ドテーブル1および結合メソッドモジュール2に登録あ
るいは変更し、クラスの継承を解決して実行するように
している。
従って、クラスのメソッドを実行するためのコードモジ
ュール3と、クラス毎にメソッドテーブルlおよび結合
メソッドモジュール2とを別個に設けることにより、実
行時までに継承するクラスが登録されていれば実行する
ことが可能であり、しかも継承クラスが変更されても、
メソッドテーブル1および結合メソッドモジュール2の
該当するメソッド名およびポインタのみを変更すればよ
く、実行時の負担を軽減すること可能となる。
ュール3と、クラス毎にメソッドテーブルlおよび結合
メソッドモジュール2とを別個に設けることにより、実
行時までに継承するクラスが登録されていれば実行する
ことが可能であり、しかも継承クラスが変更されても、
メソッドテーブル1および結合メソッドモジュール2の
該当するメソッド名およびポインタのみを変更すればよ
く、実行時の負担を軽減すること可能となる。
次に、第1図から第3図を用いて本発明の1実施例の構
成および動作を順次詳細に説明する。
成および動作を順次詳細に説明する。
第1図(イ)は、継承関係例を示す。ここで、Qはクラ
スを表し、矢印はクラスの継承関係を表す。例えばクラ
スaは、クラスbおよびクラスCの両者を継承している
旨を表す。そして、クラスa内でメソッドmoを定義、
クラスb内でメソッドm1およびメソッドm2を定義、
クラスC内でメソッドm1およびメソッドm3を定義し
ている。
スを表し、矢印はクラスの継承関係を表す。例えばクラ
スaは、クラスbおよびクラスCの両者を継承している
旨を表す。そして、クラスa内でメソッドmoを定義、
クラスb内でメソッドm1およびメソッドm2を定義、
クラスC内でメソッドm1およびメソッドm3を定義し
ている。
第1図(ロ)は、メソッド情報の登録例を示す。
第1図(ロ)において、コードモジュール3は、クラス
内で定義したメソッドのコードモジュールであって、例
えば第1図(イ)の場合にはクラスaのメソッドmOの
コードモジュール、クラスbのメソッドm1、m2のコ
ードモジュール、クラスCのメソッドm1、m3のコー
ドモジュールである。
内で定義したメソッドのコードモジュールであって、例
えば第1図(イ)の場合にはクラスaのメソッドmOの
コードモジュール、クラスbのメソッドm1、m2のコ
ードモジュール、クラスCのメソッドm1、m3のコー
ドモジュールである。
メソッドテーブル1および結合メソッドモジュール2は
、クラス毎に設けたものであって、第1図(イ)はクラ
スaに対して設けたものである。
、クラス毎に設けたものであって、第1図(イ)はクラ
スaに対して設けたものである。
ここで、メソッドテーブルlには、第1図(イ)から判
明するように、クラスa内で定義したメソッドmO1お
よび継承するクラスb内で定義したメソッドml、m2
、更に継承するクラスC内で定義したメソッドml m
3について重複しない態様で格納したものである。また
、結合メソッドモジュール2には、メソッドテーブル1
のメソッドに対応するコードモジュール3内の実行コー
ドをポイントするポインタを格納するものであって、例
えばメソッドテーブル1のメソッドmOから、クラスa
のメソッドmOのコードモジュール3内の実行コードを
ポイントするポインタを図示のように格納したものであ
る。
明するように、クラスa内で定義したメソッドmO1お
よび継承するクラスb内で定義したメソッドml、m2
、更に継承するクラスC内で定義したメソッドml m
3について重複しない態様で格納したものである。また
、結合メソッドモジュール2には、メソッドテーブル1
のメソッドに対応するコードモジュール3内の実行コー
ドをポイントするポインタを格納するものであって、例
えばメソッドテーブル1のメソッドmOから、クラスa
のメソッドmOのコードモジュール3内の実行コードを
ポイントするポインタを図示のように格納したものであ
る。
次に、第2図システム構成図を用いて本発明の構成の全
体を説明する。
体を説明する。
第2図において、コンパイラ5は、ソースファイル4か
ら取り出したソースプログラムを翻訳してクラス内の情
報(クラス内で定義したメソッドのコードモジュールな
ど)6および継承情報(クラスの継承の一覧表など)7
などを作成するものである。
ら取り出したソースプログラムを翻訳してクラス内の情
報(クラス内で定義したメソッドのコードモジュールな
ど)6および継承情報(クラスの継承の一覧表など)7
などを作成するものである。
継承解決サブシステム8は、コンパイラ5の作成した情
報をもとに継承を解決し、クラス毎にメソッドテーブル
1および結合メソッドモジュール2を作成・更新・変更
するものである。この継承解決は、継承を解決しようと
するクラスの継承クラスの一覧表を参照し、各継承クラ
スのメソッドを継承順に取り込んでメソッドテーブル1
に登録すると共に、結合メソッドモジュール2に該当す
るコードモジュール3内の実行コードをポイントするよ
うにポインタを格納する。同一メソッドを複数のクラス
で定義していた場合には、使用言語の規則に従ってメソ
ッドを結合(例えば第1図(ロ)メソッドm1の結合メ
ソッドモジュール2に格納したように、6クラスbのメ
ソッドm1の実行、失敗したら、クラスCのメソッドm
1の実行”というように結合)する。これにより、例え
ばクラスbのメソッドm1の実行コードを実行して失敗
した場合には、次にクラスCのメソッドm1の実行コー
ドを実行するようにしている。この間に、成功したらそ
の時点で実行を終了する。
報をもとに継承を解決し、クラス毎にメソッドテーブル
1および結合メソッドモジュール2を作成・更新・変更
するものである。この継承解決は、継承を解決しようと
するクラスの継承クラスの一覧表を参照し、各継承クラ
スのメソッドを継承順に取り込んでメソッドテーブル1
に登録すると共に、結合メソッドモジュール2に該当す
るコードモジュール3内の実行コードをポイントするよ
うにポインタを格納する。同一メソッドを複数のクラス
で定義していた場合には、使用言語の規則に従ってメソ
ッドを結合(例えば第1図(ロ)メソッドm1の結合メ
ソッドモジュール2に格納したように、6クラスbのメ
ソッドm1の実行、失敗したら、クラスCのメソッドm
1の実行”というように結合)する。これにより、例え
ばクラスbのメソッドm1の実行コードを実行して失敗
した場合には、次にクラスCのメソッドm1の実行コー
ドを実行するようにしている。この間に、成功したらそ
の時点で実行を終了する。
次に、第3図フローチャートを用いて本発明の1実施例
の構成の処理を説明する。
の構成の処理を説明する。
第3図において、■は、登録済(例えば第1図(イ)ク
ラスaが登録済)か否かを判別する。YESの場合には
、■以降を実行する。Noの場合には、失敗として終了
する。
ラスaが登録済)か否かを判別する。YESの場合には
、■以降を実行する。Noの場合には、失敗として終了
する。
■は、継承解決済(例えば第1図(イ)クラスaが継承
解決済)か否かを判別する。YESの場合には、■を実
行する。Noの場合には、継承が未解決(例えば第1図
(イ)でクラスa、b、cの順に登録し、クラスaの継
承解決が行われていない状態のもとで、クラスaのメソ
ッドm1を実行しようとした場合に継承が未解決)であ
るので、■で継承を解決する。
解決済)か否かを判別する。YESの場合には、■を実
行する。Noの場合には、継承が未解決(例えば第1図
(イ)でクラスa、b、cの順に登録し、クラスaの継
承解決が行われていない状態のもとで、クラスaのメソ
ッドm1を実行しようとした場合に継承が未解決)であ
るので、■で継承を解決する。
■は、継承クラスに変更ありかを判別する。YESの場
合には、継承クラスが変更ありと判別されたので、■で
再度、継承を解決する。NOの場合には、継承が既に解
決済かつ変更がなしであるので、■を実行する。
合には、継承クラスが変更ありと判別されたので、■で
再度、継承を解決する。NOの場合には、継承が既に解
決済かつ変更がなしであるので、■を実行する。
■は、クラスの継承を解決する。これは、既述したよう
に、例えば第1図(イ)クラスaについて、継承が未解
決(■No)であるので、コンパイラ5の作成した継承
クラス−覧表をもとに継承クラスb、cのメソッド(機
能)を取り込み、メソッドテーブル1および結合メソッ
ドモジュール2を作成して継承を解決する。また、同様
に、継承クラスに変更が発生(■YES、■YES)し
た場合、例えばクラスaの解決済の継承クラスbのメソ
ッドm2が削除された場合に継承解決をし直す。
に、例えば第1図(イ)クラスaについて、継承が未解
決(■No)であるので、コンパイラ5の作成した継承
クラス−覧表をもとに継承クラスb、cのメソッド(機
能)を取り込み、メソッドテーブル1および結合メソッ
ドモジュール2を作成して継承を解決する。また、同様
に、継承クラスに変更が発生(■YES、■YES)し
た場合、例えばクラスaの解決済の継承クラスbのメソ
ッドm2が削除された場合に継承解決をし直す。
■は、該メソッドありかを判別する。YESの場合(■
で作成した、あるいは既に作成したメソソドテーブル1
および結合メソッドモジュール2を参照して該当するメ
ソッドが見つかった場合)には、該当メソッドの実行コ
ードを■で実行し、成功する。NOの場合には、失敗と
して終了する。
で作成した、あるいは既に作成したメソソドテーブル1
および結合メソッドモジュール2を参照して該当するメ
ソッドが見つかった場合)には、該当メソッドの実行コ
ードを■で実行し、成功する。NOの場合には、失敗と
して終了する。
以上説明したように、本発明によれば、クラスのメソッ
ドを実行するためのコードモジュール3と、クラス毎の
メソッドテーブル1および結合メソッドモジュール2と
を別個に設け、クラスの継承を解決してこれらに登録す
ると共に、これらを参照して該当メソッドの実行コード
を実行する構成を採用しているため、メソッドの実行時
までに継承するクラスが登録されていれば全部の継承が
解決されていなくても実行することができ、しかも継承
クラスが変更されても、メソッドテーブル1および結合
メソッドモジュール2の該当するメソッド名およびポイ
ンタのみを作成し直せばよく、実行時の負担を軽減する
ことができる。このようにクラスの継承解決を柔軟に行
うことにより、必要な部分から開発を順次行うことが可
能となる。
ドを実行するためのコードモジュール3と、クラス毎の
メソッドテーブル1および結合メソッドモジュール2と
を別個に設け、クラスの継承を解決してこれらに登録す
ると共に、これらを参照して該当メソッドの実行コード
を実行する構成を採用しているため、メソッドの実行時
までに継承するクラスが登録されていれば全部の継承が
解決されていなくても実行することができ、しかも継承
クラスが変更されても、メソッドテーブル1および結合
メソッドモジュール2の該当するメソッド名およびポイ
ンタのみを作成し直せばよく、実行時の負担を軽減する
ことができる。このようにクラスの継承解決を柔軟に行
うことにより、必要な部分から開発を順次行うことが可
能となる。
第1図は本発明の原理構成図、第2図は本発明のシステ
ム構成図、第3図は本発明の処理フローチャートを示す
。 図中、■はメソッドテーブル、2は結合メソッドモジュ
ール、3はコードモジュール、5はコンパイラ、6はク
ラス内の情報、7は継承情報、8は継承解決サブシステ
ム、9は継承解決後の情報、10は実行サブシステムを
表す。
ム構成図、第3図は本発明の処理フローチャートを示す
。 図中、■はメソッドテーブル、2は結合メソッドモジュ
ール、3はコードモジュール、5はコンパイラ、6はク
ラス内の情報、7は継承情報、8は継承解決サブシステ
ム、9は継承解決後の情報、10は実行サブシステムを
表す。
Claims (1)
- 【特許請求の範囲】 継承を解決してメソッドを実行するメソッド実行方式に
おいて、 クラス内で定義するメソッドの実行コードをまとめたコ
ードモジュール(3)と、 クラス内で定義およびクラスが継承するメソッド名を格
納するメソッドテーブル(1)と、このメソッドテーブ
ル(1)に格納したメソッド名に対応する自クラスおよ
び継承する他のクラスのメソッドの上記コードモジュー
ル(3)内の実行コードに関連づけるポインタを格納す
る結合メソッドモジュール(2)とを備え、 実行に先立ち各クラス内で定義したメソッドの上記コー
ドモジュール(3)を作成すると共に、継承解決可能な
クラスのメソッド、更に実行中にクラスの継承が未解決
あるいは変更と判明した時に、上記メソッドテーブル(
1)および上記結合メソッドモジュール(2)に当該メ
ソッド名およびポインタを登録・変更して継承を解決し
、これらを参照して該当メソッドのコードモジュール(
3)内の実行コードを実行するように構成したことを特
徴とするメソッド実行方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3669689A JPH02214940A (ja) | 1989-02-16 | 1989-02-16 | メソッド実行方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP3669689A JPH02214940A (ja) | 1989-02-16 | 1989-02-16 | メソッド実行方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH02214940A true JPH02214940A (ja) | 1990-08-27 |
Family
ID=12476947
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP3669689A Pending JPH02214940A (ja) | 1989-02-16 | 1989-02-16 | メソッド実行方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH02214940A (ja) |
-
1989
- 1989-02-16 JP JP3669689A patent/JPH02214940A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2811990B2 (ja) | プログラム処理装置及びプログラム処理方法 | |
Gregersen et al. | Dynamic update of Java applications—balancing change flexibility vs programming transparency | |
JPH02214940A (ja) | メソッド実行方式 | |
JPH09218789A (ja) | 分割コンパイル方式 | |
JP2609820B2 (ja) | プログラム管理方法 | |
JPH0411888B2 (ja) | ||
JPH01144127A (ja) | インタプリタ方式 | |
JPH03144832A (ja) | プリコンパイラ言語プログラムのシンボリックデバッグ装置 | |
JPH03278232A (ja) | 非リエントラント構造サブルーチンの排他制御方式 | |
JPH0439734A (ja) | プログラム言語翻訳処理方式 | |
JPH05298121A (ja) | 利用者プログラム実行制御方式 | |
Miller | Language Support for Distributed Functional Programming | |
JPH0695868A (ja) | ソフトウェア管理方式 | |
JPH0283634A (ja) | プログラムデバッグ方式 | |
JPH0430694A (ja) | 蓄積プログラム制御電子交換機 | |
JPH05100829A (ja) | コンパイルユニツト管理方式 | |
JPH05313913A (ja) | コンパイル情報管理方式 | |
JPS62100834A (ja) | プログラムの版数管理方式 | |
JPH09146766A (ja) | クラス構造変更方法 | |
JPS63195731A (ja) | プログラム組込み方式 | |
JPH04243424A (ja) | 動的リンク方式 | |
JPH0359726A (ja) | プログラム単位一括翻訳方式 | |
JPH02130637A (ja) | ソースコード翻訳方式 | |
JPH0279121A (ja) | ソースコード管理方式 | |
JPH01286037A (ja) | ソースファイル更新時刻自動認識コンパイル方式 |