JPH09152965A - クラスライブラリ再構築方法 - Google Patents

クラスライブラリ再構築方法

Info

Publication number
JPH09152965A
JPH09152965A JP31032395A JP31032395A JPH09152965A JP H09152965 A JPH09152965 A JP H09152965A JP 31032395 A JP31032395 A JP 31032395A JP 31032395 A JP31032395 A JP 31032395A JP H09152965 A JPH09152965 A JP H09152965A
Authority
JP
Japan
Prior art keywords
class
program
child
name
parent
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
JP31032395A
Other languages
English (en)
Inventor
Kimito Takadate
公人 高舘
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 JP31032395A priority Critical patent/JPH09152965A/ja
Publication of JPH09152965A publication Critical patent/JPH09152965A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 オブジェクト指向プログラムの修正を容易に
する。 【解決手段】 エディタよりメソッドの移動指令を受け
取ると(100)、移動元のクラスのプログラムを読み込み
(101)、移動元のクラスのプログラムから移動するメソ
ッドを検索する(102)。検索したメソッドを切り抜き(10
3)、切り抜いたメソッドの中のクラスの宣言部分を検索
し(104)、その部分を移動元のクラス名から移動先のク
ラス名に変更する(105)、変更後切り抜いたメソッドを
移動先のクラスのプログラムに貼り付ける(106)。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データとデータに
アクセスする関数を1つのクラスと見なし、クラスの集
合としてプログラムを組織化する、オブジェクト指向プ
ログラムの修正作業を容易にするのに有効なシステムに
関する。特に、オブジェクト指向の複数のプログラムを
ライブラリとして管理するクラスライブラリの修正作業
に有効なシステムに関する。
【0002】
【従来の技術】Mark V Systems社のクラス間の階層構造
を定義するオブジェクト図エディタとオブジェクト図か
らプログラムのスケルトンを生成するObjectMakerに見
られるように、1つのクラスが有する属性やメソッドの
定義情報から、1つのクラスのプログラムのスケルトン
を生成していた。生成されるプログラムは、クラスを定
義したヘッダファイルと、メソッドのアルゴリズムを定
義した実装ファイルからなる。しかし、メソッドのアル
ゴリズムは、オブジェクト図の定義情報に記述されてお
らず、実装ファイルには、メソッドの外枠のみが生成さ
れる。
【0003】従って、利用者が生成されたプログラムに
アルゴリズムの記述を追加する。その後、メソッドを追
加する必要が生じ、オブジェクト図において、クラスの
定義情報に新しいメソッドの定義情報を追加し、再度オ
ブジェクト図からプログラムを生成した場合には、既に
生成されたプログラムを解析して、既に記述されたメソ
ッドの部分は残し、新しく追加されたメソッドの宣言部
分のみが追加される。
【0004】
【発明が解決しようとする課題】クラスライブラリを再
利用しながら、新しいシステムを構築する際に、クラス
ライブラリを修正することが度々発生する。修正とは、
親クラスと子クラスの間でメソッドを移動したり、親ク
ラスと子クラスを統合して1つのクラスにしたり、1つ
のクラスを親クラスと子クラスに分割することである。
【0005】従来の技術では、1つのクラスの定義情報
から1つのクラスのプログラムを生成していたので、上
記のような修正を行った場合に、他のクラスから移動し
たメソッドのアルゴリズムの部分を自動的に生成するこ
とができなかった。
【0006】本発明の目的は、オブジェクト指向プログ
ラムをライブラリとして管理するクラスライブラリの修
正作業を容易にするクラスライブラリ再構築方法を提供
することにある。
【0007】
【課題を解決するための手段】本発明を実現するために
は、クラスライブラリのプログラム内のクラスの構造と
一致しているオブジェクト図の情報が必要である。オブ
ジェクト図の情報を得る手段は、3つある。1つは、プ
ログラムを解析して、オブジェクト図を生成する手段で
ある。もう1つは、オブジェクト図の情報からプログラ
ムを生成することで、プログラム内のクラスの構造とオ
ブジェクト図の情報を必ず一致させる手段である。もう
1つは、人手でプログラムからオブジェクト図の情報を
作り出す手段である。どの方法を採用しても、本発明を
適用できる。以後は、プログラムと一致しているオブジ
ェクト図の情報が存在するものとする。
【0008】本発明のクラスライブラリ再構築方法で
は、オブジェクト図を編集するエディタにおいて、利用
者が属性/メソッドの移動/複写を行った際に、移動先
/移動元のプログラムの中から、移動した属性/メソッ
ドに該当する部分を、プログラムを構文解析することで
切り抜くかあるいは複写する。切り抜かれたメソッドの
中で、クラスの宣言部分を検索し、移動先/複写先のク
ラス名に置き換える。次に、移動先/複写先のクラスの
プログラムを構文解析し、移動先/複写先のクラスにお
ける移動/複写した属性/メソッドの位置に該当する部
分に属性/メソッドを挿入する。
【0009】さらに、本発明では、オブジェクト図を編
集するエディタにおいて、利用者がクラスの分割を行っ
た際に、新しいクラスに存在しない属性/メソッドに該
当する部分をプログラムを構文解析することで削除す
る。その後、クラスの宣言部分を検索し、新しいクラス
名に置き換える。
【0010】さらに、本発明では、オブジェクト図を編
集するエディタにおいて、利用者がある親クラスとある
子クラスの統合を行った際に、親クラスのメソッドが子
クラスで再定義されているか否かを検査し、再定義され
ていなければ、メソッドの移動の要領で、子クラスのプ
ログラムにメソッドを貼り付ける。もし、再定義されて
いれば、メソッドに別名を付ける。別名を付けたメソッ
ドが呼び出されている親クラス、子クラスの実装ファイ
ルの部分を検索し、新しい親クラスのメソッドの呼び出
しに置き換える。その後、クラスの宣言部分を検索し、
新しいクラス名に置き換える。
【0011】さらに、本発明では、オブジェクト図を編
集するエディタにおいて、利用者がある親クラスAと子
クラスBの間に、新たにクラスCを挿入し、クラスCの
定義を行った際に、子クラスBのヘッダファイル内を構
文解析することで、親クラスを宣言している部分を検出
し、クラスAからクラスCに置換する。さらに、オブジ
ェクト図上のクラスCの情報とクラスAの情報とを比べ
て、クラスAのメソッドのうち、クラスCで再定義され
ているメソッドを識別する。子クラスBの実装ファイル
を構文解析することで、識別したメソッドを検索し、親
クラスAのメソッドの呼出しをクラスCのメソッドの呼
出しに変更する。
【0012】オブジェクト図エディタにおいて、属性/
メソッドの移動/複写を行うと、該操作が行われたこと
を、プログラムを自動的に修正するシステムに連絡す
る。プログラムを自動的に修正するシステムでは、プロ
グラムを構文解析することで、属性/メソッドの宣言部
分や、メソッドのアルゴリズムの部分を切り出したり、
メソッドが宣言されていることをチェックする。
【0013】本発明においては、移動/複写したメソッ
ドのアルゴリズムの記述の中で、メソッドの所属するク
ラスを宣言する部分を移動先/複写先のクラスに変更す
ることを、構文解析するステップと宣言部分を置換する
ステップで行う。
【0014】クラスを分割する際に、分割したどちらか
一方のクラスに属するメソッドは本発明におけるメソッ
ドの移動処理で対処が可能である。しかし、分割後の両
方のクラスに属するメソッドについては、メソッドの中
の処理が、分割後の2つのクラスに分割される可能性が
ある。それ故、メソッドの中の処理を自動的に2つのク
ラスに分割することは、不可能である。よって、本発明
では、分割後の2つのクラスに、同じメソッドを複写
し、利用者がそれぞれのクラスにおいて不要になった処
理を削除することで、メソッドの中の処理の分割を行
う。クラスを分割する本発明においては、分割元のクラ
スのプログラムのファイルを複製し、分割後のクラスに
存在しないメソッドを削除することで達成できる。
【0015】親クラスと子クラスを統合する際には、親
クラスのメソッドを子クラスのプログラムに移動するス
テップで対処が可能である。両方のクラスで定義されて
いるメソッドについては、親クラスのメソッドの名称を
変更する。統合後のプログラムにおいて、名称を変更し
た親クラスのメソッドを呼び出している部分があれば、
新しい名称のメソッドの呼出しに変更することで本発明
が達成できる。
【0016】
【発明の実施の形態】以下、本発明の実施例を詳細に説
明する前に、オブジェクト指向で使用する用語について
説明する。オブジェクト指向のプログラムでは、クラス
がプログラムを組織する単位になる。クラスは、属性と
呼ばれるデータと、メソッドと呼ばれるプログラムで構
成されている。クラスは複数の属性と複数のメソッドを
有する。各メソッドはクラス内の属性の値を参照したり
更新したりする。
【0017】クラスは階層的に構築される。階層上、上
位のクラスを親クラスと呼び、下位のクラスを子クラス
と呼ぶ。子クラスは、親クラスで定義したメソッドと同
じ名称のメソッドを定義することができる。このことを
メソッドの再定義と呼ぶ。クラス間の親子関係を継承と
呼ぶ。あるクラスが別のクラスを包含する関係にあると
き、クラス間の関係を集約と呼ぶ。
【0018】クラスライブラリを利用する際には、クラ
スライブラリ内のクラスのメソッドを呼び出す。クラス
ライブラリ内のクラスのメソッドを、一部変更する必要
がある場合は、子クラスを定義し、親クラスの有するメ
ソッドを再定義する。この時、子クラスを定義してメソ
ッドを再定義するだけでは、目的とする機能をクラスラ
イブラリから得られないため、ライブラリ内のクラスを
分割する必要が生じることがある。本発明は、クラスの
分割や統合等、クラスライブラリを再構築する作業を、
容易にするとともに、上位の仕様書であるオブジェクト
図とプログラムの整合性を維持するための方法である。
【0019】以下、本発明の実施例を詳細に説明する。
最初に第1の実施例を説明する。第1の実施例は、1つ
のクラスのメソッドを他のクラスに移動する作業を容易
にする。
【0020】第1の実施例を実現するシステムのフロー
チャートを図1に示す。図2は本発明のハードウェア構
成図を示す。200は本発明のプログラムを実行するC
PU、201は本発明で解析するプログラムを一時的に
記憶する主記憶装置、202は本発明のプログラムや解
析対象となるプログラムを記憶する外部記憶装置、20
3はオブジェクト図エディタにおいて、修正指示を入力
する入力装置、204は本発明の出力結果を表示する表
示装置である。
【0021】図3に示したオブジェクト図を、図4に示
したオブジェクト図に変更する操作を例にして説明す
る。図3は、図形エディタのためのオブジェクト図であ
り、300、301、302、303はクラスを表現し、それぞれ図
形、ノード、アーク、アーク名称のクラスを表現する。
1番上の段がクラス名であり、中断が属性、下段がメソ
ッドを表している。図形クラス(300)は、操作対象とな
る図形を画面に表示したり、画面から消去する役割を担
う。属性は有していない。図形クラスと、ノードクラ
ス、アーククラスは継承の関係にあり、アーククラスと
アーク名称クラスは集約の関係にある。
【0022】ノードクラス(301)はネットワーク形状を
なす編集対象の図形における、ノードを操作する役割を
担う。図形エディタでは、ノードが消去されると、それ
に接続しているアークも自動的に消去される。これを実
現するために、ノードクラスは、自分自身に接続された
アークを記憶し、自分が消去する際に、接続しているア
ークに自分が消去することを通知する。ノードに対する
消去操作は、自分自身を画面から消去する以外のことを
行うので、図形クラス(300)が有する消去メソッドとは
異なる。このため、ノードクラス特有の消去メソッドを
再定義している。また、ノードは名称を有し、名称を変
更するためのメソッドを有する。さらに、幅や、高さを
変更するためのメソッドを有する。
【0023】アーククラス(302)は、ノードからの消去
の通知を受信すると、自分自身を画面から消去すると共
に、消去されなかったもう一方のノードに自分自身が消
去されたことを通知する。アークが単独で消去される際
には、アークの両端のノードに自分自身が消去されたこ
とを通知する。アークが消去されたことを通知されたノ
ードは、接続してあるアークを記憶する接続アークリス
トからアークを消去する。アークが挿入された際には、
アークは両端のノードに接続依頼を送信し、それを受け
たノードは、接続アークリストにアークを追加する。
【0024】アークには名称を付加することができる。
アークは残し、アークの名称だけ消去することもでき
る。アーク名称クラス(303)は、アークの名称が消去さ
れた時に、アークに自分自身が消去されたことを通知す
る。さらに、アークが消去された際に、アークから連絡
を受け、自分自身を消去することを行う。
【0025】アークには名称が付加される種類と、付加
されない種類が存在する。名称が付加されないアークを
扱うために、図3において、アーククラスを、名称が付
加されないアーククラス(400)と、名称付きアーククラ
ス(401)に分割する。分割した結果を図4に示す。
【0026】図3、図4は、オブジェクト図エディタを
利用することで作成できる。オブジェクト図エディタが
図3に示す情報を編集するために、ファイルに格納する
データを図12に示す。各行の最初の4文字が、キーワ
ードとなる。例えば、CIDRはクラスの情報であることを
表現し、OBIDはクラス、継承などの図形要素の番号を表
わす。1200から1219までが図形クラスの情報であり、12
01は図形クラスの番号、1202、1203は図形クラスのX座
標、Y座標、1204、1205は幅、高さを表す。1206は、メ
ソッドを記述する領域の高さを表す。1207、1208、1209
はそれぞれクラス名、属性名、メソッド名を表す。1210
から1219はノードクラスの情報、1220から1229はアーク
クラスの情報、1230から1239まではアーク名称クラスの
情報、1240から1254までは継承の情報、1255から1264ま
では集約の情報である。
【0027】図3と図4を見比べると、300のアークク
ラスから401の名称付きアーククラスに、”アーク名
称”の属性と”アーク名称の消去受信”のメソッドが移
動されている。この例を使用して第1の実施例を、図1
のフローチャートに基づいて説明する。本発明を実現す
るにあたり、利用者が、入力装置を介して、表示装置の
画面上にクラス間の関係を定義するエディタが別システ
ムとして存在するとする。利用者が、新たにアーク名称
クラスを作成した後に、”アーク名称の消去受信”のメ
ソッドをアーククラスから、名称付きアーククラスに移
動すると、エディタは、本発明を実現するクラスライブ
ラリ再構築システムに対して、メソッドが移動されたこ
とを通知する。クラスライブラリ再構築システムは、エ
ディタよりメソッドの移動指令を受け取ると(100)、移
動元のクラスのプログラムを読み込む(101)。この場合
は、アーククラスのヘッダファイルと、実装ファイルで
ある。ヘッダファイルを図5に実装ファイルを図6にそ
れぞれ示す。
【0028】ヘッダファイルは、クラスが有する属性/
メソッドを定義したファイルであり、505はクラス名”A
rc”とスーパークラス名”Figure”を定義している。50
7から509までは属性の定義であり、511から513まではメ
ソッドを定義している。実装ファイルは、メソッドの処
理内容を定義したファイルであり、図6の中には3つの
メソッドが定義されている。602から614までは”ノード
の消去受信”メソッド、616から621までは”アーク名称
の消去受信”メソッド、622から633までには”消去”メ
ソッドが定義されている。
【0029】図11に属性の移動指令とメソッドの移動
指令を示す。1100は属性の移動指令であり、移動す
る属性名、移動元のクラス名、移動先のクラス名から構
成される。1101はメソッドの移動指令であり、移動
するメソッド名、移動元のクラス名、移動先のクラス名
から構成される。
【0030】次に、プログラムから、移動するメソッド
に関連する部分を検索する(102)。ヘッダファイルにお
いて、移動するメソッドに関連する部分は、512のアー
ク名称の消去受信メソッドの宣言部である。実装ファイ
ルにおいて、移動するメソッドに関連する部分は、616
から620のアーク名称の消去受信メソッドの定義部であ
る。これらの部分をファイルから切り抜く(103)。切り
抜いたメソッドから、クラスの宣言部分を検索する(10
4)。本実施例では、図6の618のArcと記述された部分で
ある。この部分を新しいクラス名称であるArcWithName
に変更した後(105)、切り抜いたメソッドを移動先
のプログラムに貼り付ける(106)。
【0031】第2の実施例では、属性の移動を容易にす
る。属性”アーク名称”をアーククラスから、名称付き
アーククラスに移動すると、エディタは、クラスライブ
ラリ再構築システムに対して、属性が移動されたことを
通知する。クラスライブラリ再構築システムは、メソッ
ドの移動の時と同様に、図5のヘッダファイルから属
性”アーク名称”に関連する部分507を切り抜き、名称
付きアーククラスのヘッダファイルに貼付ける。
【0032】第1及び第2の実施例の結果、アーククラ
スのヘッダファイル、実装ファイルは図7、図9のよう
になり、”アーク名称の消去通知”メソッド、”アーク
名称”属性に関連する部分が切り抜かれている。貼り付
けた結果である名称付きアーククラスのヘッダファイ
ル、実装ファイルは、図8、図10のようになる。図8
のヘッダファイルには、属性としてアーク名称が宣言さ
れ、メソッドとして”アーク名称の消去受信”と”消
去”が宣言されている。メソッド”消去”は、アークク
ラスから複写されたメソッドである。
【0033】次に、属性/メソッドの複写を可能にする
第3の実施例について説明する。アーク名称の消去受信
メソッドは、メソッド全てが分割後のクラスに移動され
る例だが、クラスの分割に伴い、メソッド”消去”のよ
うにメソッドの中を2つに分割する場合もある。これを
自動的に行うのは、困難である。そこで、メソッドを複
写し、複写されたメソッドを人手によって修正する。第
3の実施例のフローチャートは、図1とほとんど同じで
あり、複写元のメソッドを削除しない点だけが異なる。
図6のアークの消去メソッドでは、629においてアーク
名称に消去の通知を送信しているが、図9のアークの消
去メソッドでは消去の通知を送信していない。図10の
名称付きアーククラスの消去メソッドでは、アーク名称
に消去の通知を送信している部分が残り、他の部分が削
除されるか、あるいは変更されている。これらの変更
は、メソッドの複写後人手によって行なわれる。
【0034】上記のようなクラスの分割を簡潔に行うの
が第4の実施例である。第4の実施例のフローチャート
を図13に示す。エディタよりクラスの分割指令を読み
込むと(1300)、分割元のクラスのプログラムを複写し、
複写したファイルに新たに作成したクラス名に基づいて
命名する(1301)。本実施例では、ArcWithName.CとArcWi
thName.hのファイルが作成される。次に、分割元となっ
たアーククラスのプログラムを読み込み(1302)、メソッ
ドを検索する(1303)。最初に検索されるメソッドは、”
ノードの消去受信”のメソッドである。検索したメソッ
ドが分割後のクラスに存在するか否か、オブジェクト図
を調べ(1305)、もし検索したメソッドが存在しなけれ
ば、メソッドを分割後のプログラムから削除する(130
6)。ノードの消去受信メソッドは存在するので、次のメ
ソッドを検索する(1303)。次のアーク名称の消去メソッ
ドが存在しなければ、ア−ク名称を削除する。消去メソ
ッドが存在すれば、ア−ク名称を残す。これをプログラ
ムの最後まで繰り返す(1304)。同様の操作を複写したプ
ログラムについても行う(1307〜1311)。名称付きアーク
クラスでは、ノードの消去受信メソッドが削除される。
【0035】次に、クラスを統合する第5の実施例につ
いて説明する。図4のオブジェクト図を図3のオブジェ
クト図に対する操作を例に、図14のフローチャートを
用いて説明する。エディタよりクラスの統合指令を受け
取ると(1400)、親クラスのプログラムを読み込み(140
1)、メソッドを検索する(1402)。検索したメソッドが子
クラスに存在しないならば(1404)、検索したメソッドを
子クラスのプログラムに貼り付ける(1405)。本実施例で
は、図9に示した”Arc.C”の実装ファイルが読み込ま
れ、中に書かれたノードの消去受信メソッドと消去メソ
ッドが検索され、それぞれのメソッドが子クラスであ
る”名称付きアーククラス”に定義されているかがチェ
ックされる。ノード消去受信メソッドは存在しないの
で、そのまま図10に示した子クラスの実装ファイルで
ある”ArcWithName.C”に貼り付けられる。ノ−ド消去
受信メソッドが存在する場合は、メソッドの名称に親ク
ラス名を付加し、メソッドの名称を変更する(1406)。消
去メソッドは存在するので、メソッドの名称が”Clea
r”から”ClearArc”に変更される。変更したメソッド
が子クラスのプログラム内で呼び出されていないかチェ
ックし(1407)、呼び出されていればその部分を新しいメ
ソッド名に変換する(1408)。図10の625の部分は、”C
lear”メソッドを呼び出している部分なので変更され
る。同様に親クラスの別のメソッドでも呼び出されてい
ないかチェックし(1409)、呼び出されていればその部分
を新しいメソッド名に変換する(1410)。図9の例では、
親クラスで変更したメソッドを呼び出している部分は存
在しない。統合した実装ファイルの例を図15に示す。
【0036】さらに、クラス階層木の途中にクラスを挿
入した際に、挿入したクラスの子クラスに修正が発生す
る。第6の実施例は子クラスの修正を自動的に行うもの
である。第1の実施例で使用したオブジェクト図上でア
ーククラスの子クラスに、関連クラスが定義されている
とする。オブジェクト図を図16に示す。関連クラスに
は、アーク名称以外に役割名称が付加されている。”関
連”が削除されたときには、”役割名”も削除されなけ
ればならない。この時、アーククラスを分割し、アーク
クラスと名称付きアーククラスに分割すると、今まで、
アーククラスの子クラスだった関連クラスも修正の必要
が生じる。これは、クラスを分割した例であるが、単に
クラスを挿入した際にも同様な修正が発生する。修正後
のオブジェクト図を図17に示す。
【0037】第6の実施例のフローチャートを図18に
示す。エディタよりクラスの挿入指令を受け取ると(180
0)、挿入した子クラスの実装ファイルを読み込み(180
1)、元の親クラスのメソッドを呼び出している部分を検
索する(1802)。この場合、読み込むプログラムは、関連
クラスの実装プログラムであり、検索する部分は、アー
ククラスのメソッドを呼び出している部分である。次
に、検索したメソッドが新たに挿入したクラスで再定義
されているかを調査し(1804)、されていれば、メソッド
の呼び出しを、元の親クラスの呼び出しから、新たに挿
入したクラスの呼び出しに変更する(1805)。関連クラス
の実装ファイルの例を図20に示す。変更した関連クラ
スの実装ファイルの例を図22に示す。図20における
2012は親クラスのメソッドの呼び出しであり、この部分
が図22では変更されて2200になる。関連クラスの実装
ファイルの検索が終了すると(1803)、次に、ヘッダファ
イルを読み込み(1806)、親クラスの宣言部分を検索し(1
807)、その部分を挿入したクラス名に変更する(1808)。
関連クラスのヘッダファイルの例を図19に示す。変更
した関連クラスのヘッダファイルの例を図21に示す。
図19における1902は親クラスの宣言であり”Arc”に
なっている。この部分が図21では変更されて2100にな
り、"ArcWithName”になる。
【0038】クラス階層木の途中のクラスを削除した際
に、削除したクラスの子クラスに修正が発生する。第7
の実施例は子クラスの修正を自動的に行うものである。
第6の実施例とは逆に、図17のオブジェクト図を図1
6のように変更すると、名称付きアーククラスの子クラ
スだった関連クラスも修正の必要が生じる。これは、ク
ラスを統合した例であるが、単にクラスを削除した際に
も同様な修正が発生する。フローチャートは図18とほ
とんど同じであり、関連クラスから呼び出されている名
称付きアーククラスのメソッド名が、アーククラスのメ
ソッドの呼出しに変更される。
【0039】
【発明の効果】本発明では、クラス間の関連を表現した
オブジェクト図を編集するエディタと連動して、ソース
プログラムを修正する。テキストエディタによる煩わし
いプログラムの修正作業が不要となるので、修正作業が
楽になり、修正誤りも削減できる。
【0040】さらに、オブジェクト図の修正結果がプロ
グラムに反映されるので、仕様書とプログラムの間の不
整合が削減できる。
【図面の簡単な説明】
【図1】本発明の第1の実施例のフローチャート。
【図2】本発明のハードウェア構成図。
【図3】本発明の第1の実施例で用いる修正前のオブジ
ェクト図。
【図4】本発明の第1の実施例で用いる修正後のオブジ
ェクト図。
【図5】本発明の第1の実施例で用いる”アーク”クラ
スのヘッダファイル。
【図6】本発明の第1の実施例で用いる”アーク”クラ
スの実装ファイル。
【図7】本発明の第1の実施例で用いる変更後の”アー
ク”クラスのヘッダファイル。
【図8】本発明の第1の実施例で用いる”名称付きアー
ク”クラスのヘッダファイル。
【図9】本発明の第1の実施例で用いる変更後の”アー
ク”クラスの実装ファイル。
【図10】本発明の第1の実施例で用いる”名称付きア
ーク”クラスの実装ファイル。
【図11】本発明の第1の実施例で用いる、属性/メソ
ッドの移動指令
【図12】本発明の第1の実施例で用いる修正前のオブ
ジェクト図のファイル形式。
【図13】本発明の第4の実施例のフローチャート。
【図14】本発明の第5の実施例のフローチャート。
【図15】本発明の第5の実施例で用いる変更後の”ア
ーク”クラスの実装ファイル。
【図16】本発明の第6の実施例で用いるオブジェクト
図。
【図17】本発明の第6の実施例で用いる修正後のオブ
ジェクト図。
【図18】本発明の第5の実施例のフローチャート。
【図19】本発明の第5の実施例で用いる”関連”クラ
スのヘッダファイル。
【図20】本発明の第5の実施例で用いる”関連”クラ
スの実装ファイル。
【図21】本発明の第5の実施例で用いる変更後の”関
連”クラスのヘッダファイル。
【図22】本発明の第5の実施例で用いる変更後の”関
連”クラスの実装ファイル。
【符号の説明】
100……メソッドの修正指示の受信処理、101……
移動元のクラスのプログラムの読み込み処理、102…
…移動するメソッドの検索処理、103……メソッドの
切り抜き処理、104……切り抜いたメソッドからクラ
スの宣言を検索する処理、105……クラスの宣言部分
を移動元のクラス名から移動先のクラス名に変更する処
理、106……切り抜いたメソッドを貼り付ける処理。

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】計算機を用いて、オブジェクト指向プログ
    ラム言語で記述されたプログラムを管理する際に、 プログラム中のクラスの有する属性とメソッド、クラス
    間の階層関係を示すオブジェクト図を表示装置に表示
    し、 前記表示装置の画面上で利用者が入力装置を用いてある
    クラスの有するメソッドを別のクラスに移動し、 移動元のクラスの該メソッドに該当するプログラム断片
    を抽出し、 該プログラム断片中のクラスの宣言部分を移動元のクラ
    ス名から移動先のクラス名に変更し、 移動先のクラスのプログラムに前記プログラム断片を貼
    り付けることを特徴とするクラスライブラリ再構築方
    法。
  2. 【請求項2】前記オブジェクト図上で利用者が前記入力
    装置を用いてあるクラスの有する属性を別のクラスに移
    動し、 移動元のクラスの該属性の宣言に該当するプログラム断
    片を抽出し、 移動先のクラスのプログラムに前記プログラム断片を貼
    り付けることを特徴とする請求項1記載のクラスライブ
    ラリ再構築方法。
  3. 【請求項3】前記オブジェクト図上で利用者が前記入力
    装置を用いてあるクラスの有する属性/メソッドを別の
    クラスに複写し、 複写元のクラスの該属性/メソッドに該当するプログラ
    ム断片を別のクラスに複写し、 該プログラム断片中のクラスの宣言部分を移動元のクラ
    ス名から移動先のクラス名に変更し、 複写先のクラスのプログラムに前記プログラム断片を貼
    り付けることを特徴とする請求項1、及び2記載のクラ
    スライブラリ再構築方法。
  4. 【請求項4】前記オブジェクト図上で利用者が前記入力
    装置を用いてあるクラスを親クラスと子クラスに分割
    し、 該クラスが有する属性/メソッドを移動、又は複写によ
    って親クラスに属するものと子クラスに属するものに振
    り分け、 元のクラスのプログラムを別のクラスに複写し、 親クラス、及び子クラスのプログラムに対して、各クラ
    スで存在しない属性/メソッドに該当するプログラム断
    片を削除することを特徴とする請求項1記載のクラスラ
    イブラリ再構築方法。
  5. 【請求項5】前記オブジェクト図上で利用者が前記入力
    装置を用いてある親クラスと子クラスを統合し、 該親クラスのメソッドの内、該子クラスで再定義されて
    いないメソッドについては、該当するプログラム断片を
    切り抜き、 該子クラスのプログラムに貼り付けられ、該子クラスで
    再定義されているメソッドについては、別名を付け、 該メソッドが呼ばれていないかを検査し、 前記メソッドが呼ばれている場合には、該メソッドの呼
    出しを新しくつけた名称のメソッドの呼出しに変更した
    後、該子クラスのプログラム断片中のクラスの宣言部分
    を統合後のクラス名に変更し、 親クラスのプログラムのファイルを削除することを特徴
    とする請求項1記載のクラスライブラリ再構築方法。
  6. 【請求項6】前記オブジェクト図上で利用者が前記入力
    装置を用いてある親クラスAと子クラスBの間に、新た
    にクラスCを挿入して、クラスCを定義し、 子クラスB内で親クラスを宣言している部分をクラスA
    からクラスCに変更し、 子クラスBから呼び出されて
    いる親クラスAのメソッドが、クラスCで再定義された
    場合には、子クラスBにおける親クラスAのメソッドの
    呼出しをクラスCのメソッドの呼出しに変更することを
    特徴とする請求項1記載のクラスライブラリ再構築方
    法。
  7. 【請求項7】前記オブジェクト図上で利用者が前記入力
    装置を用いてある親クラスAと孫クラスBとの間の子ク
    ラスCを削除し、 子クラスB内で親クラスを宣言している部分をクラスC
    からクラスAに変更し、 子クラスBから呼び出されて
    いるクラスCのメソッドが、クラスAで定義されている
    場合には、子クラスBにおけるクラスCのメソッドの呼
    出しをクラスAのメソッドの呼出しに変更することを特
    徴とする請求項1記載のクラスライブラリ再構築方法。
JP31032395A 1995-11-29 1995-11-29 クラスライブラリ再構築方法 Pending JPH09152965A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP31032395A JPH09152965A (ja) 1995-11-29 1995-11-29 クラスライブラリ再構築方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP31032395A JPH09152965A (ja) 1995-11-29 1995-11-29 クラスライブラリ再構築方法

Publications (1)

Publication Number Publication Date
JPH09152965A true JPH09152965A (ja) 1997-06-10

Family

ID=18003858

Family Applications (1)

Application Number Title Priority Date Filing Date
JP31032395A Pending JPH09152965A (ja) 1995-11-29 1995-11-29 クラスライブラリ再構築方法

Country Status (1)

Country Link
JP (1) JPH09152965A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005530238A (ja) * 2002-06-12 2005-10-06 アイ−ロジックス・インコーポレイテッド 動的モデル/コード結合を提供するシステム、方法、および媒体
JP2014044754A (ja) * 2004-05-04 2014-03-13 Fisher Rosemount Systems Inc プロセスコントロールデータアクセスシステム、及びプロセスコントロールデータ修正方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005530238A (ja) * 2002-06-12 2005-10-06 アイ−ロジックス・インコーポレイテッド 動的モデル/コード結合を提供するシステム、方法、および媒体
JP2014044754A (ja) * 2004-05-04 2014-03-13 Fisher Rosemount Systems Inc プロセスコントロールデータアクセスシステム、及びプロセスコントロールデータ修正方法

Similar Documents

Publication Publication Date Title
US10558642B2 (en) Mechanism for deprecating object oriented data
US5551028A (en) Design data management system and associated method
CN111666526A (zh) 页面生成方法、装置、设备及存储介质
JP2005141768A (ja) ネットワーク構造によるファイル管理システム
JP2008509477A (ja) 文書のある表現における変更を別の表現に反映させるための文書処理及び管理方法
KR20050014917A (ko) 파일 시스템 api 확장 방법 및 시스템
JP4588295B2 (ja) シーケンス解析方法およびシーケンス解析装置
JP2000099508A (ja) 複合文書管理システム及び複合文書の構造管理方法ならびに複合文書構造管理プログラムを格納した記録媒体
US20050289450A1 (en) User interface virtualization
US7409642B2 (en) Method and system for applying user interface elements to data
US20070208995A1 (en) Document Processing Device and Document Processing Method
US20070198915A1 (en) Document Processing Device And Document Processing Method
US20110252400A1 (en) Adding inheritance support to a computer programming language
JPH09152965A (ja) クラスライブラリ再構築方法
US7359914B2 (en) Reference manager
US20030154462A1 (en) Software maintenance material generation apparatus and generation program therefor
CN112732643A (zh) 流程图图形文件数据与s1000d标准xml格式数据的相互转换方法
KR100283099B1 (ko) 객체지향 모형화 도구 및 그의 논리적 정보와 그래픽 정보 처리 방법
JP2001134424A (ja) システムパラメタ作成方法、システムパラメタ作成装置、システムパラメタ作成プログラムを記録したコンピュータ読み取り可能な記録媒体及びシステムパラメタ作成データを格納したコンピュータ読み取り可能な記録媒体
JP4180099B2 (ja) シーケンス解析プログラムを記録した記録媒体、シーケンス解析装置およびシーケンス解析方法
Mitchell et al. DRIVE: an environment for the organised construction of user-interfaces to databases
JP2001117761A (ja) 画面プログラム製造方法及びその装置並びに画面プログラム製造プログラムを記録した記録媒体
JP3395347B2 (ja) 文書処理装置
JPH10143510A (ja) 文書処理装置及びその方法
JP3722854B2 (ja) データ編集装置