JPH08314724A - オブジェクト指向プログラム編集装置 - Google Patents

オブジェクト指向プログラム編集装置

Info

Publication number
JPH08314724A
JPH08314724A JP7143958A JP14395895A JPH08314724A JP H08314724 A JPH08314724 A JP H08314724A JP 7143958 A JP7143958 A JP 7143958A JP 14395895 A JP14395895 A JP 14395895A JP H08314724 A JPH08314724 A JP H08314724A
Authority
JP
Japan
Prior art keywords
class
modified
command
editing
oriented program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP7143958A
Other languages
English (en)
Inventor
Chiaki Hirai
千秋 平井
Atsuhiko Hirota
敦彦 廣田
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
Original Assignee
Hitachi 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 filed Critical Hitachi Ltd
Priority to JP7143958A priority Critical patent/JPH08314724A/ja
Publication of JPH08314724A publication Critical patent/JPH08314724A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】オブジェクト指向プログラムのクラス定義を修
正した際に、クラス定義の修正に伴って発生する他の修
正必要箇所を表示することにより、プログラムの開発効
率を向上させる技術を提供することを目的とする。 【構成】ソースファイルを編集するコマンドを読み込む
手段により編集コマンドを読み込み、該編集コマンドに
より修正を受けたクラス(被修正クラス)を同定する手
段により被修正クラスを同定し、被修正クラスの修正に
よって新たに修正の必要性が生じる他のクラスを検索す
る手段と検索されたクラスを定義するソースファイルを
表示する手段により、修正が波及する可能性のある場所
をプログラマに提示する。 【効果】オブジェクト指向プログラムのクラス定義を修
正した際に、クラス定義の修正に伴って発生する他の修
正必要箇所を表示することにより、プログラムの開発効
率を向上させることができる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、オブジェクト指向プロ
グラムを記述したソースファイルを編集する装置に関す
るものである。
【0002】
【従来の技術】一般にプログラムを修正すると、修正は
その箇所だけにとどまらず、複数の箇所を同時に修正す
る必要性が生じる。これを修正の波及と呼ぶ。プログラ
ムの修正に応じて発生する修正の波及箇所を自動的に同
定できれば、プログラム開発の効率を高めることが出来
る。
【0003】このような問題を解決する従来の方法とし
て、例えば、特開平6―332687号の「プログラム
自動修正反映方式」がある。この方式では、関数プログ
ラムのひな型を修正した際に、このひな型を引用してい
るプログラムを検索して、引用部分を自動的に修正する
ようにしている。
【0004】
【発明が解決しようとする課題】しかしながら、上記特
開平6―332687号の「プログラム自動修正反映方
式」では、関数のひな型に対する変更波及箇所の同定は
行っているが、オブジェクト指向プログラムにおけるク
ラスの修正に伴う変更波及箇所の同定は行っていない。
【0005】本発明の目的は、オブジェクト指向プログ
ラムのクラス定義を修正した際に、クラス定義の修正に
伴って発生する他の修正必要箇所を表示することによ
り、プログラムの開発効率を向上させる技術を提供する
ことにある。
【0006】
【課題を解決するための手段】本発明は、オブジェクト
指向プログラムのソースファイルを編集するコマンドを
読み込むコマンド読み込み手段と、該編集コマンドによ
り修正を受けたクラス(被修正クラス)を同定する被修
正クラス同定手段と、該被修正クラスの修正によって新
たに修正の必要性が生じる他のクラスを検索する検索手
段と、検索されたクラスを定義するソースファイルを表
示する表示手段とを備えたことを特徴とする。また、修
正されたクラスと該修正によって新たに修正の必要性が
生じる他のクラスの部分のみ、再コンパイルするように
する。
【0007】修正を受けたクラスの同定は、ソースファ
イルの編集コマンドの種類と編集箇所とに基づいて行う
とよい。その他、修正前の状態と修正後の状態とを比較
して修正を受けたクラスを同定する方法を用いてもよ
い。また、ある編集対象行で修正が行われている間はク
ラスの同定を行わず、編集対象行が変更されるときに、
修正を受けたクラスの同定を行うようにするとよい。修
正が行なわれる度にクラスの同定を行うよりも処理が簡
単だからである。
【0008】
【作用】ソースファイルを編集するコマンドを読み込む
手段により編集コマンドを読み込み、該編集コマンドに
より修正を受けたクラス(被修正クラス)を同定する手
段により被修正クラスを同定し、被修正クラスの修正に
よって新たに修正の必要性が生じる他のクラスを検索す
る手段と検索されたクラスを定義するソースファイルを
表示する手段により、修正が波及する可能性のある場所
をプログラマに提示することができる。
【0009】
【実施例】以下、本発明の実施例を図面により詳細に説
明する。
【0010】(実施例1)図1は、本発明の第1の実施
例に係るオブジェクト指向プログラム編集システムの構
成図を示す。図において、3は、キーボードなど、プロ
グラマが編集コマンドを入力する入力手段である。入力
手段3により入力されたコマンドは、編集コマンド読み
込み手段901により認識される。902は、入力され
た編集コマンドによって修正されるクラス(被修正クラ
ス)を同定する被修正クラス同定手段である。905
は、被修正クラス同定手段902によって同定されたク
ラスが修正されることにより発生する他の修正必要箇所
を検索する検索手段である。4は、クラスの修正に伴っ
て変更が他のどのクラスに波及するかの対応表(クラス
依存関係)を格納する記憶手段である。対応表を用意せ
ずに、検索手段905内に、ソースファイルから直接変
更箇所を検索する機能を持たせてもよい。904は検索
手段905により検索されたクラス(すなわち、修正が
波及するクラス)を表示する手段であり、2は実際に表
示を行うディスプレイである。編集コマンドの実行によ
るファイルの修正は、ファイル修正手段903によって
行われる。906は、各ブロックの実行順序を制御する
実行管理手段である。
【0011】以下、図1のシステムの動作を詳細に説明
する。
【0012】図2に、図1の実行管理手段906による
制御方法の手順の概要を示す。図2において、ステップ
110は、編集対象となるファイル(オブジェクト指向
プログラムのソースファイル)をメモリに読み込むステ
ップである。ステップ111は、編集コマンドを読み込
むステップであり、図1の編集コマンド入力手段3と編
集コマンド入力読み込み手段901により実行される。
ステップ112は、入力された編集コマンドにより修正
されるクラスを同定するステップであり、図1の被修正
クラス同定手段902によって実行される。このステッ
プ112の詳細は、後に図7を用いてより詳細に説明す
る。ステップ113の編集コマンド実行では、入力され
た編集コマンドを実行して実際にファイルの編集を行
う。このステップは、図1のファイル修正手段903に
より実行される。
【0013】ステップ114は、修正が波及する他のク
ラスを表示するか否かをプログラマ(操作者)に選ばせ
るステップである。プログラマからの提示要求があれ
ば、ステップ115により修正が波及するクラスの検索
を行い、ステップ116により検索されたクラスの表示
を行う。ステップ115の修正波及クラスの検索は、図
1の検索手段905により行う。ステップ116のクラ
ス表示は、修正波及クラス表示手段904およびディス
プレイ2により行う。このクラス表示は、クラス名だけ
の表示でも良く、また波及するクラスを定義するファイ
ルの内容を画面上に表示してもよい。
【0014】なお、ステップ114では、特にプログラ
マに問い合わせることなく、プログラマからの提示要求
があればステップ115に進み、提示要求が無ければス
テップ117に進むようになっているが、ステップ11
4でディスプレイ2に修正波及クラスを表示するか否か
を問い合わせる画面を表示し、プログラマに選択させる
ようにしてもよい。また、あらかじめ修正波及クラスを
表示することを指定しておき、修正波及クラスがあると
きはプログラマに問い合わせすることなく常に修正波及
クラスの表示を行うようにしてもよい。
【0015】ステップ117では、編集続行か否かをプ
ログラマに問い合わせる。編集続行のときは、ステップ
111に戻って編集を続行する。編集の終了であれば、
ステップ118でファイルをセーブして編集を終了す
る。なお、ステップ113のコマンド実行は、ステップ
117の直前に行ってもよい。
【0016】上述の図2のステップ115の修正波及ク
ラス検索処理では、記憶手段4に格納されているクラス
の修正波及関係(クラス依存関係)を参照する。このク
ラス依存関係を作成する方法を次に説明する。
【0017】図3は、クラス依存関係を作成するための
方法を示すフローチャートである。まずステップ101
でクラスの新規定義か否か判定する。クラスが新規に定
義される場合は、ステップ102から104でクラスの
新規定義の編集作業を行う。すなわち、ステップ102
で編集コマンドを読み込み、ステップ103でその編集
コマンドを実行し、ステップ104で編集続行か否か判
定する。編集続行のときはステップ102に戻って編集
を続ける。
【0018】ステップ104でクラスの新規定義の編集
が終了したら、ステップ105によってクラスの依存関
係を解析する。このステップは、プログラム中に定義さ
れている全クラスを調べ、あるクラスの修正が生じたと
きに他のどのクラスをそれに伴って修正すべきかを解析
するステップである。このステップについては、図4〜
6を用いてさらに詳細に説明する。このステップにより
解析された依存関係は、ステップ106によりクラス依
存関係を記憶する記憶手段4に登録される。クラスが新
規定義されたソースファイルは、ステップ107でセー
ブされる。
【0019】図3のステップ105のクラスの依存関係
の解析は次のように行う。まず、あるクラス1があるク
ラス2に依存するパターン(すなわち、クラス2の修正
がクラス1に波及するのはどういう場合かを示すパター
ン)を予め定義しておく。そして、ステップ105で
は、このパターンに合致するクラスがあるか否かを調べ
る。
【0020】図4に、クラス1がクラス2に依存するパ
ターンの例を示す。図4では左側にパターンを特定する
パターン番号を図示し、各パターン番号に対応するパタ
ーンを記載してある。例えば、パターン番号1のパター
ンは「クラス1のメンバ定義としてクラス2を用いる」
というパターンである。ステップ105では、編集中の
プログラム中のすべてのクラスを参照して図4のパター
ンに合致するものを調べる。例えば、もし、あるクラス
のメンバ定義として別のクラスを用いているものがあれ
ば、それはパターン番号1のパターンに合致するので、
それらのクラスはクラス依存関係として登録されること
になる。
【0021】図5は、パターン番号1の「クラス1のメ
ンバ定義にクラス2を用いる」場合の例を示す。オブジ
ェクト指向言語として、C++を例としている。図5の
203で定義されるクラスCのメンバ定義は、202で
定義されるクラスAを用いている(クラスCの定義の3
行目の「A a;」の部分)。これは、図4のパターン
のパターン1に合致するから、クラスCはクラスAに依
存することになる。従って、クラスAが修正を受けたと
き、クラスCに修正が波及する可能性がある。そこで、
クラス依存関係として、クラスAとクラスCを登録す
る。
【0022】図6は、クラス依存関係格納手段に格納さ
れる依存関係テーブル示す。このようにクラスとそのク
ラスに依存するクラスを対にして格納して置けば良い。
上記例では、「クラスCがクラスAに依存する」のであ
るから、クラス名としてAを格納し、依存クラスとして
Cを格納する。
【0023】図7は、図2のステップ112の修正クラ
スの同定方法の詳細な手順を示す。図7は、図2のステ
ップ110〜113の部分をより詳細に示したものであ
り、特に図2のステップ112は図7のステップ305
〜311に対応する。
【0024】ステップ110は、編集対象ファイルを読
み込むステップである。このステップでは、修正対象と
なるクラスが定義されているファイルを計算機メモリ内
に読み込む。ステップ302と303は、修正クラス同
定にあたって初期化を行うステップである。すなわち、
修正フラグFLGを「0」にリセットし、配列CLAS
SESを空にする。修正フラグFLGはソースファイル
が変更されたとき「1」をセットするフラグである。配
列CLASSESは、修正を受けたクラス名を登録して
おく配列である。
【0025】ステップ111で、プログラマが入力する
編集コマンドを読み込む。ステップ305では、入力さ
れた編集コマンドがソースファイルに変更を与えるか否
かを判定する。この判定は、ソースファイルに変更を与
えるコマンドの一覧を用意しておき、この一覧と入力さ
れたコマンドを照らし合わせることによって行う。図8
の401に、ソースコードに変更を与えるコマンドの一
覧を示す。ソースコードに変更を与えるコマンドである
ときは、ステップ306で修正フラグFLGに「1」を
セットしておく。次に、ステップ307によって、入力
された編集コマンドが、編集対象行を変える(すなわ
ち、カーソルを別の行に移動する)コマンドであるか否
かを判定する。図8の402に、編集対象行を変えるコ
マンドの一覧を示す。
【0026】コマンドが編集対象行を変えるコマンドで
ある場合は、ステップ308により、修正フラグFLG
の値が「1」であるか否かを判定する。「1」であれ
ば、ステップ309により、エディタ上のカーソル存在
位置(編集対象行を変えるコマンドを実行する前のカー
ソル位置)からそのカーソルがどのクラス定義ブロック
に属しているかを調べ、修正を受けるクラスを同定す
る。次に、ステップ310でそのクラス名を配列CLA
SSESに登録する。ステップ311で修正フラグFL
Gを「0」にリセットして、ステップ113に進む。ス
テップ113では、入力された編集コマンドを実行す
る。ステップ307でコマンドが編集対象行を変えるコ
マンドでない場合、およびステップ308で修正フラグ
FLGが「1」でない場合は、直接、ステップ113に
進む。
【0027】図9は、編集対象のソースファイルの例を
示す。いま、図9のように画面上に表示されているとす
る。501はカーソルの存在位置を示す。この状態で、
例えば、24行目の「int」という文字列を「double」
という文字列に置き換えると、図2のステップ306に
より、修正フラグFLGの値が1となる。この場合、
「int」を削除して「double」を挿入してもよいし、「i
nt」を「double」に置換する文字列置換を行ってもよ
い。いずれにしても、編集対象行(カーソル行)が24
行目にある間は、修正フラグFLGの値が1とされ、ス
テップ307からステップ113に進んで24行目の編
集を続行することになる。「int」を「double」に修正
する編集が終わったら、次には編集行を移動(すなわ
ち、カーソルを別の行に移動)するコマンドまたはソー
スファイルセーブ(編集終了時のセーブも含む)コマン
ドが必ず入力されるはずである。それらのコマンドが入
力されると、ステップ307からステップ308を経て
ステップ309に進む。そして、ステップ309によ
り、カーソル位置が存在する場所(カーソル移動前)
が、どのクラス定義文に属するかを判定する。図9の例
の場合、カーソル501はクラスAの定義文の中にある
から、修正を受けたクラスはAであると同定できる。修
正を受けたクラス名は、ステップ310により配列CL
ASSESに登録される。図10は、クラス名A(60
1)が登録された配列CLASSES(600)を示
す。
【0028】このようにして、修正を受けたクラスが図
10の配列CLASSESに登録される。一方、図3〜
6で説明したように既に図6に示したクラス依存関係対
応テーブルにクラス依存関係が登録されているから、図
2のステップ115では、修正の波及するクラスを検索
することが出来る。すなわち、図10の配列CLASS
ESに登録されているクラスを、図6のクラス依存関係
対応テーブルのクラス名から検索し、対応する依存クラ
スを得ることができる。上記の例の場合には、クラスA
の修正により、クラスCが修正の波及を受けることが検
索できる。この検索を行うのは、図1の検索手段905
であり、検索結果は、図1の表示手段904とディスプ
レイ2により表示される。
【0029】以上の装置を実施することにより、オブジ
ェクト指向プログラムのクラス定義を修正した際に、ク
ラス定義の修正に伴って発生する他の修正必要箇所を表
示でき、プログラムの開発効率を向上させることができ
る。
【0030】(実施例2)図11は、本発明の別の実施
例である。ほぼ上述の第1の実施例と同様であるので、
異なる部分のみ説明する。図11では、図1の修正波及
クラス表示手段904を、修正波及クラスの再コンパイ
ル手段907に置き換えたものである。これにより、再
コンパイルが必要なクラスを限定することが出来る。す
なわち、再コンパイルが必要なクラスは、修正が波及す
るクラスだけであるので、修正が波及するクラスを検索
することにより、不必要なクラスのコンパイルを避ける
ことが出来る。
【0031】図12にコンパイル方法を示す。ステップ
701でソースプログラムの修正箇所から修正されたク
ラスを同定し、ステップ702で修正されたクラスを再
コンパイルする。さらに、ステップ703では、図11
の検索手段905により、再コンパイルが必要なクラス
を検索する。そして、ステップ704で、検索されたク
ラスを再コンパイルする。ステップ704の再コンパイ
ルは、図11の実行海里手段908によって行われる。
【0032】以上の装置を実施することにより、オブジ
ェクト指向プログラムのクラス定義を修正した際に、ク
ラス定義の修正に伴って発生する再コンパイル必要クラ
スを限定でき、コンパイルに要する時間が削減され、プ
ログラムの開発効率を向上させることができる。
【0033】
【発明の効果】以上説明したように、本発明によれば、
オブジェクト指向プログラムのクラス定義を修正した際
に、クラス定義の修正に伴って発生する他の修正必要箇
所を表示することにより、プログラムの開発効率を向上
させることができる。
【図面の簡単な説明】
【図1】本発明を実施する装置の構成を示す図
【図2】本発明を実施する装置を制御する方法を説明す
る図
【図3】クラス依存関係を作成する方法を説明する図
【図4】クラスの依存関係がどのような場合に生じるか
を説明する図
【図5】クラスの依存関係が生じる具体例を示す図
【図6】クラス依存関係テーブルの実現例を示す図
【図7】編集コマンドによって修正されるクラスの同定
方法を説明する図
【図8】編集コマンドの種類を説明する図
【図9】編集対象となるソースファイルの具体例を示す
【図10】修正を受けたクラスを格納するテーブルの実
現方法を示す図
【図11】コンパイル装置を実施するための構成図
【図12】コンパイル装置を制御する方法を示す図
【符号の説明】
2…クラス表示手段、3…入力手段、4…クラス依存関
係格納手段、901…編集コマンド読み込み手段、90
2…被修正クラス同定手段、903…ファイル修正手
段、904…修正波及クラス表示手段、905…被修正
クラスに依存するクラスの検索手段、906…実行管理
手段。

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】オブジェクト指向プログラムのソースファ
    イルを編集するコマンドを読み込むコマンド読み込み手
    段と、 該編集コマンドにより修正を受けたクラス(被修正クラ
    ス)を同定する被修正クラス同定手段と、 該被修正クラスの修正によって新たに修正の必要性が生
    じる他のクラスを検索する検索手段と、 検索されたクラスを定義するソースファイルを表示する
    表示手段とを備えたことを特徴とするオブジェクト指向
    プログラム編集装置。
  2. 【請求項2】オブジェクト指向プログラムのソースファ
    イルを編集するコマンドを読み込むコマンド読み込み手
    段と、 該編集コマンドにより修正を受けたクラス(被修正クラ
    ス)を同定する被修正クラス同定手段と、 該被修正クラスの修正によって新たに修正の必要性が生
    じる他のクラスを検索する検索手段と、 該検索されたクラスに対して、必要に応じて修正を施す
    手段と、 該検索されたクラスを再コンパイルするコンパイル手段
    とを備えたことを特徴とするオブジェクト指向プログラ
    ム編集装置。
  3. 【請求項3】前記被修正クラス同定手段は、ソースファ
    イルの編集コマンドの種類と編集箇所とから修正を受け
    たクラスを同定するものである請求項1または2に記載
    のオブジェクト指向プログラム編集装置。
  4. 【請求項4】前記被修正クラス同定手段は、ソースファ
    イル上でカーソルが存在する行位置を変えるコマンドが
    入力されたとき、該コマンドを実行する前にカーソルが
    存在する位置がどのクラス定義ブロック中にあるかを判
    定することにより、修正を受けたクラスを同定するもの
    である請求項1から3の何れか1つに記載のオブジェク
    ト指向プログラム編集装置。
  5. 【請求項5】ソースファイル上で定義されるクラスを修
    正したときに、新たに修正が必要となる他のクラスを表
    示する請求項1から4の何れか1つに記載のオブジェク
    ト指向プログラム編集装置。
  6. 【請求項6】あらかじめ、プログラム中でクラスが定義
    されるごとに、クラスの修正に伴って変更が他のどのク
    ラスに波及するかを調べ、対応表として記憶しておき、 前記検索手段は、該対応表を参照して、前記被修正クラ
    スの修正によって新たに修正の必要性が生じる他のクラ
    スを検索する請求項1から5の何れか1つに記載のオブ
    ジェクト指向プログラム編集装置。
JP7143958A 1995-05-18 1995-05-18 オブジェクト指向プログラム編集装置 Pending JPH08314724A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP7143958A JPH08314724A (ja) 1995-05-18 1995-05-18 オブジェクト指向プログラム編集装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP7143958A JPH08314724A (ja) 1995-05-18 1995-05-18 オブジェクト指向プログラム編集装置

Publications (1)

Publication Number Publication Date
JPH08314724A true JPH08314724A (ja) 1996-11-29

Family

ID=15351013

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7143958A Pending JPH08314724A (ja) 1995-05-18 1995-05-18 オブジェクト指向プログラム編集装置

Country Status (1)

Country Link
JP (1) JPH08314724A (ja)

Similar Documents

Publication Publication Date Title
EP0664027B1 (en) Program modeling system
US5182806A (en) Incremental compiler for source-code development system
US5170465A (en) Incremental-scanning compiler for source-code development system
US5313387A (en) Re-execution of edit-compile-run cycles for changed lines of source code, with storage of associated data in buffers
US5325531A (en) Compiler using clean lines table with entries indicating unchanged text lines for incrementally compiling only changed source text lines
US5201050A (en) Line-skip compiler for source-code development system
US6954747B1 (en) Methods for comparing versions of a program
US5193191A (en) Incremental linking in source-code development system
US5758160A (en) Method and apparatus for building a software program using dependencies derived from software component interfaces
US11579856B2 (en) Multi-chip compatible compiling method and device
EP0997815A2 (en) Interactive translation system and method
US20050005239A1 (en) System and method for automatic insertion of cross references in a document
US5781905A (en) Program generating method combining data item part with database manipulation part
EP0406028A2 (en) Incremental compiler for source code development system
EP1202171A2 (en) Compile method and program recording medium
Atkinson et al. Context sensitive editing as an approach to incremental compilation
JPH08314724A (ja) オブジェクト指向プログラム編集装置
JP3516843B2 (ja) データベースアクセス方法
JP2000207246A (ja) デバッグ支援装置及び方法並びにデバッグ支援用ソフトウェアを記録した記録媒体
JP2672968B2 (ja) デバッグ用ソースリスト出力処理方式
JP2002082811A (ja) コンパイル方法および記録媒体
KR20060074676A (ko) 개발도구의 객체메서드 자동생성방법및 시스템
JPH05250221A (ja) シミュレータ実行方式
JP3139393B2 (ja) デバッグ装置
JP2607975B2 (ja) デバック方式