JPH06324853A - オブジェクト指向プログラミング言語を対象とした原始プログラム編集装置 - Google Patents

オブジェクト指向プログラミング言語を対象とした原始プログラム編集装置

Info

Publication number
JPH06324853A
JPH06324853A JP11268893A JP11268893A JPH06324853A JP H06324853 A JPH06324853 A JP H06324853A JP 11268893 A JP11268893 A JP 11268893A JP 11268893 A JP11268893 A JP 11268893A JP H06324853 A JPH06324853 A JP H06324853A
Authority
JP
Japan
Prior art keywords
class
definition information
unit
source code
member function
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
JP11268893A
Other languages
English (en)
Inventor
Naoki Tamura
直樹 田村
Norihiko Suhara
則彦 寿原
Yuichi Nagasawa
勇一 永沢
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 JP11268893A priority Critical patent/JPH06324853A/ja
Publication of JPH06324853A publication Critical patent/JPH06324853A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【目的】 各クラスのメンバ関数の名称、引数の型や数
等の統一化が図れる原始プログラム編集装置を提供す
る。 【構成】 原始コード入出力部1は、原始コード7に定
義された各クラスの継承関係を抽出し、それをクラス間
継承関係記憶部21に記録する。ユーザがあるクラスを
追加定義した場合、その定義情報から親クラス名を抽出
する。クラス名検索部23はクラス間継承間系データ2
2から追加定義したクラスの継承基にあたるクラス名を
抽出する。クラス・メンバ関数定義情報検索部26は、
この結果から継承基クラスに定義されたメンバ関数につ
いて、その定義情報を抽出し、表示装置4上に表示す
る。ユーザが、表示された関数の一覧から、新規作成し
たクラスで再定義するメンバ関数の定義を選択して複写
すると、その結果、現在編集中のクラスのクラス毎定義
情報データ25にメンバ関数の定義が複写される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、Smalltalk-80、C++、
Ada 等で知られるオブジェクト指向プログラミング言語
を利用したソウトウェア部品群(クラスライブラリ)の
開発、並びにオブジェクト指向プログミング言語を利用
したアプリケーションプログラムの開発の際に利用する
原始コード編集装置に関する発明である。
【0002】
【従来の技術】オブジェクト指向プログラミング言語を
用いたプログラミングでは、プログラムは基本的に「オ
ブジェクト」に対して「メッセージ」を送る形式で記述
される。一般にオブジェクト指向プログラミング言語で
は、この「オブジェクト」はクラスとして定義される。
また、個々の「メッセージ」は、クラスのメンバ関数と
して定義される。個々の「オブジェクト」に対する「メ
ッセージ」の送付は、他の言語における関数呼び出しに
相当するものである。
【0003】一方、Smalltalk-80やC++を対象としたプ
ログラミング環境には、「ブラウザ(Brwoser)」と呼ば
れるクラス検索とメンバ関数の編集を行うための機能が
備えられている。この「ブラウザ」は、個々のクラス定
義やクラス間の継承関係を表示し、また表示されている
クラスのメンバ関数の名称やその実現部を表示するとい
う機能を有する。
【0004】図11は例えば“Smalltalk-80-Interacti
ve Programming Environment-,”Adele Goldberg(Adiso
n-Weisley,1984)に示される従来のオブジェクト指向プ
ログラミング言語を対象とした原始プログラム編集装置
である。図12は該原始プログラム編集装置の構成図で
ある。1は原始コード入出力部である。この原始コード
入出力部1は、原始コード読み込み部11と、原始コー
ド構文解析部12と、原始コード生成部13とから構成
される。
【0005】2はクラス・メソッド関数定義情報記憶部
である。このクラス・メソッド関数定義情報記憶部2
は、クラス・メンバ関数定義情報記憶部24と、クラス
毎定義情報データ(群)25と、クラス・メンバ関数定
義情報検索部26とから構成される。
【0006】3はメソッド情報編集部である。このメソ
ッド情報編集部3は、クラス・メソッド定義情報表示部
31と、クラス定義情報編集部32と、メソッド選択操
作部33と、メソッド定義編集操作部4とから構成され
る。
【0007】4は表示装置であり、5はポインティング
デバイスであり、6はキーボードであり、7は原始コー
ドである。また、8は新規原始コードであり、本編集装
置を利用した結果出力される原始コードである。
【0008】次に動作について、図13〜図14に示さ
れているフローチャートを用いて説明する。本装置を起
動すると、処理はステップ1001へ進み、原始コード
読み込み部11によって原始コードを読み込まれる。読
み込まれたコードは、原始コード解析部12に提供さ
れ、コードからクラス定義情報が抽出される(ステップ
1002)。読み込まれたクラスが.クラス毎定義情報
データ(群)25に記録されていない場合(ステップ1
004でNoの場合)、読み込まれたクラス定義情報を
基にクラス毎定義情報データが作成される(ステップ1
005)。さらにステップ1006で原始コードよりメ
ンバ関数定義情報が抽出され、これをステップ1005
で作成したクラス毎定義情報データに合わせて格納する
(ステップ1007)。以上の処理が、各クラスの前メ
ンバ関数について行われる。
【0009】ステップ1009までで全てのクラス定義
とクラスのメンバ関数定義が読み込まれた後、ステップ
1010でメソッド情報編集部3が起動され、ユーザが
編集コマンドを入力するを待つ。ステップ1011で読
み込んだ編集コマンドが「編集終了」の場合には、メソ
ッド定義編集操作部34から、原始コード生成部13が
起動され、クラス毎定義情報データ25から、新規原始
コード8が生成される(ステップ1014)ことによ
り、終了動作が行われる。
【0010】ステップ1012でNoの場合、ステップ
1016へ進み、ステップ1011で入力されたコマン
ドが新規クラスの追加定義を指定するものか否かが判定
される。もしYesの場合、ステップ1017へ進み、
ユーザが入力するクラス定義情報が読み込まれる。この
クラス定義情報が既存のクラス定義情報と重複していな
い場合(ステップ1018でYesの場合)には、ステ
ップ1020で新規入力されたクラス定義情報に併せて
クラス毎定義情報データが作成される。最後にステップ
1011に進み、ユーザが次に入力するコマンドの待ち
状態となる。
【0011】ステップ1016でNoの場合ステップ1
023へ進み、ステップ1011で入力されたコマンド
が既定義のクラスのメンバ関数を参照するものか否かが
判定される。この判定結果がYesであった場合、ステ
ップ1024へ進み、参照するメンバ関数を定義したク
ラス名であって、ユーザが入力するクラス名を読み込
む。次に、入力されたクラス名に対応するクラス毎定義
情報ファイルが既にあるかどうかが判定され(ステップ
1025)、もし既に定義済みの場合には、指定された
クラスのクラス定義情報と、そのクラスのメンバ関数名
のリストが表示装置4に表示される。
【0012】次にステップ1201で、ユーザが参照を
希望するメンバ関数の名称が読み込まれる。そして、入
力されたメンバ関数が現在参照中のクラス内で定義され
ているか否かが判定される(ステップ1202)。も
し、指定したメンバ関数が、参照中のクラスで定義され
ていた場合、ステップ1032へ進み、原始コード編集
エディタが起動され、そのメンバ関数の実現部が表示さ
れる。
【0013】最後にステップ1011に進み、ユーザが
次に入力するコマンドの待ち状態となる。
【0014】もし上記ステップ1023でNoの場合、
ステップ1035へ進み、ステップ1011で入力され
たコマンドが現在参照中のクラスに新たなメンバ関数を
追加定義するものかどうかが判定される。ステップ10
35でYesであった場合には、ユーザが入力するメン
バ関数定義情報が読み込まれる(ステップ1038)。
そして、ここで入力されたメンバ関数定義情報をクラス
毎定義情報に追加登録する。最後にステップ1011に
進み、ユーザが次に入力するコマンドの待ち状態とな
る。
【0015】上記ステップ1035でNoであった場合
には、ステップ1011へ進み、次のユーザが入力する
コマンドの待ち状態となる。
【0016】なお、図11の実現例に対して、図15に
示すようにクラスの階層構造を図式表示することによっ
てクラス定義相互の関係をより理解容易にしようとした
改善例が、“GrapherGear User Manual ”富士ゼロック
ス情報システムズ(株)に開示されている。しかし、こ
れらの装置の構成あるいは動作例については基本的に図
12、図13〜図14に示したものと同じである。
【0017】
【発明が解決しようとする課題】従来これらの「ブラウ
ザ」を利用した新たなクラスを定義する場合、クラスが
提供するメンバ関数の名前、引数の数や引数のデータ
型、あるいはメンバ関数の返り値の型については、全て
ユーザが設計する必要があった。しかしながら、全て人
手で行うために、大規模なクラスライブラリを作成する
際に、類似した機能を提供するメンバ関数の間で、関数
の名称、引数の数やデータ型、返り値の型が全く独立別
個に定義されてしまうことが多かった。
【0018】このため、従来のブラウザを利用して開発
されたクラス群をソフトウェア部品(クラスライブラ
リ)として再利用しようとすると、クラスライブラリの
ユーザは個別のクラス、個別のメンバ関数毎に関数の名
称、引数の型や数、返り値の型や数についての詳細な情
報を理解・記憶していなければならなかった。このた
め、ソフトウェア部品を利用することが困難となり、ソ
フトウェアの部品化・再利用が促進されず、ソフトウェ
アの開発時間、コストを増大させる原因となっていた。
【0019】この問題を解決するためには、個々のクラ
スのメンバ関数の目的が同じ場合、それらのメンバ関数
の名称、引数の型や数、そして返り値の型を統一するこ
とが望ましい。しかし、既存のブラウザは、こうしたメ
ンバの関数の定義を支援する手段を提供していなかっ
た。このため、従来のブラウザを利用して新しいクラス
を定義する場合、プログラム作成者は各クラスが持つ既
存メンバ関数の定義を検索し、それを参照しながら、新
しいクラスのメンバ関数を定義しなければならなかっ
た。定義中のクラスと関係する既存クラスの数が増加す
るほど、また関連する既存クラスが提供するメンバ関数
が増加するほど、この検索・参照という操作を頻繁に行
うことが要求され、ひいてはこれが再利用可能なソフト
ウェア部品の開発に時間がかかる原因となっていた。
【0020】本発明の目的は、上記従来技術の問題点を
解決するため、オブジェクト指向プログラミング言語に
よるプログラミングの過程で、新たなクラスを定義し、
該クラスの新たなメンバ関数を定義する場合において、
そのクラスと関連を持つ他のクラスのメンバ関数定義を
複写して利用する途を提供することにより、各クラスの
メンバ関数の名称、引数の型や数、あるいは返り値の統
一化を容易に図れるようにすることである。
【0021】また、本発明の目的は、関連するクラスの
メンバ関数を、プログラマがいちいち検索したりするこ
となく、かつ、キーボードからタイピング入力すること
なく定義し、その結果を原始コードとして生成すること
である。
【0022】
【課題を解決するための手段】本発明によるオブジェク
ト指向プログラミング言語を対象とした原始コード編集
装置は、上記目的を達成するために、従来のオブジェク
ト指向プログラミング言語を対象とした原始コード編集
装置の原始コード入出力部と、メソッド情報編集部と、
表示装置と、ポインティングデバイスと、キーボード入
出力装置を共通部分として備えている構成である。
【0023】この共通部分に対し、原始コード構文解析
部の出力から得たクラス間の継承関係情報を選択的に記
憶するクラス間継承関係記憶部と、この抽出された記録
情報を管理するクラス間継承関係データと、メソッド情
報編集部からの指定によってクラス間継承関係記憶部か
ら特定のクラスの継承関係情報を検索するクラス名検索
部と読み込まれた個々のクラスについての定義情報と、
クラスに定義されたメンバ関数の定義情報を記録・管理
するクラス・メンバ関数定義情報記憶部と、各クラス毎
にクラスの定義情報と各クラスのメンバ関数の定義情報
を記録しておくクラス毎定義情報データ群と、このクラ
ス毎定義情報データ群から指定されたクラス、指定され
たメンバ関数の定義情報を検索しメソッド情報編集部に
渡すクラス・メンバ関数定義情報検索部から構成される
クラス・メソッド定義情報記憶部、を含むことを特徴と
する。
【0024】また、上記共通部分に対し、原始コード構
文解析部の出力から得たクラス間の部品−全体関係情報
を選択的に記憶するクラス間部品−全体関係記憶部と、
この抽出された情報を記録するクラス間部品−全体関係
データと、メソッド情報編集部からの指定によってクラ
ス間部品−全体関係記憶部から特定のクラスの部品クラ
ス情報を検索するクラス名検索部と、読み込まれた個々
のクラスについての定義情報と、クラスに定義されたメ
ンバ関数の定義情報を記録・管理するクラス・メンバ関
数定義情報記憶部と、各クラス毎にクラスの定義情報と
各クラスのメンバ関数の定義情報を記録しておくクラス
毎定義情報データ群と、このクラス毎定義情報データ群
から指定されたクラス、指定されたメンバ関数の定義情
報を検索しメソッド情報編集部に渡すクラス・メンバ関
数定義情報検索部から構成されるクラス・メソッド定義
情報記憶部を含むことを特徴とするものである。
【0025】
【作用】本発明によるオブジェクト指向プログラミンク
言語を対象とした原始コード編集装置においては、継承
関係、あるいは部品−全体の関係にあるクラスに定義さ
れたメンバ関数の定義情報、すなわち個々のメンバ関数
の名称、引数の数や型、返り値の型等を、本編集装置の
表示装置の表示画面上で既存のクラスのメンバ関数の定
義情報から複写して定義することによって、新たに定義
するクラスのメンバ関数の名称を一連のクラス群の間で
容易に統一を図れるようにし、再利用しやすいソフトウ
ェア部品の開発を促進する。
【0026】
【実施例】
実施例1.以下、請求項第1項の一実施例を図を用いて
説明する。図1は本発明によるオブジェクト指向プログ
ラミング言語を対象とする原始コード(プログラム)編
集装置の一実施例の実行画面を表す図である。
【0027】図1に示されているように、この実行画面
は、4つの部分に分かれている。図1中、101はクラ
ス定義情報表示部であり、102はクラスに定義された
メンバ関数のカテゴリを一覧表示するメンバ関数カテゴ
リ表示部である。また、103は継承基クラスまでの全
ての先祖クラスで定義されているメンバ関数の表示・選
択を行う継承基メンバ関数表示部であり、104は現在
編集対象としているクラスのメンバ関数定義編集部であ
る。
【0028】また、図2は本実施例における原始コード
編集装置の構成を示す構成図である。図2において、1
は原始コード入出力部である。この原始コード入出力部
1は、原始コード7を読み込む原始コード読み込み部1
1と、読み込んだ原始コード7を構文解析し、クラス定
義情報を抽出する原始コード構文解析部12と、メソッ
ド定義編集操作部から起動され、クラス・メンバ関数定
義情報記憶部24に記憶された各クラス、各メンバ関数
の定義情報、実現情報を基に新規原始コードを生成する
原始コード生成部13を備えている。
【0029】2はクラス・メソッド定義情報記憶部であ
る。このクラス・メソッド定義情報記憶部2は、原始コ
ード構文解析部12によって抽出された各クラスについ
て継承関係を扱う情報を抽出し記憶するクラス間継承関
係記憶部21と、クラス間継承関係記憶部21が記憶す
る情報を記録しているクラス間継承関係データ22と、
メソッド情報編集部3によって起動され、クラス間継承
関係記憶部21に対して指定されたクラスの継承関係情
報の検索を行うクラス名検索部23と、原始コード構文
解析部12によって抽出された各クラスについてのクラ
ス、及びメンバ関数の定義情報を記憶するクラス・メン
バ関数定義情報記憶部24と、クラス・メンバ関数定義
情報記憶部24で記憶されるクラス、メンバ関数の定義
情報を、クラス毎に分類して記録・管理するクラス毎定
義情報データ(群)25と、メソッド情報編集部3から
起動され、クラス毎定義情報データ(群)25から必要
なクラス、メンバ関数の定義情報を検索するクラス・メ
ンバ関数定義情報検索部26とを含んでいる。
【0030】3はメソッド情報編集部である。このメソ
ッド情報編集部3は、クラスやメソッドの定義情報を画
面上に表示するクラス・メソッド定義情報表示部31
と、ユーザからの要求に応じて新たなクラスを定義する
場合に起動されるクラス定義情報編集部32と、表示画
面上にリスト表示されたメンバ関数中からユーザが特定
のメンバ関数を指定する際にその指定を読み取るメソッ
ド選択操作部33と、編集中のクラスに対して新たなメ
ンバ関数を追加定義するメソッド定義編集操作部34と
を含んでいる。
【0031】また、4はクラスやメンバ関数の定義情報
の表示や一覧表示を行う表示装置であり、5は選択操作
等で利用するポインティングデバイスである。6は新た
なメンバ関数の定義を入力する場合などに利用するキー
ボードである。
【0032】次に、本実施例における動作について図3
〜図5に示されているフローチャートを用いて説明す
る。本装置を起動すると、処理はステップ101へ進
み、原始コード読み込み部11によって原始コード7が
読み込まれる。読み込まれた原始コード7は、原始コー
ド解析部12に供給され、コードからクラス定義情報を
抽出する(ステップ1002)。抽出されたクラス定義
情報から、さらにクラス間の継承関係が抽出され、これ
はクラス間継承関係記憶部21に登録される。登録され
た情報は全てクラス間継承関係データ22に反映され
る。
【0033】また、読み込まれたクラスがクラス毎定義
情報データ(群)25に記録されていない場合(ステッ
プ1004でNoの場合)には、読み込まれたクラス定
義情報を基にクラス毎定義情報データが作成される(ス
テップ1005)。さらにステップ1006で原始コー
ド7からメンバ関数定義情報が抽出され、これをステッ
プ1005で作成したクラス毎定義情報データと合わせ
て格納する。以上の動作が、各クラスの全メンバ関数に
ついて行われる。
【0034】ステップ1009において、全てのクラス
の定義とクラスのメンバ関数定義が読み込まれたか否か
が判断され、全て読み込まれたと判断された場合には、
ステップ1010においてメソッド情報編集部が起動さ
れ、ユーザが入力する編集コマンドを待つ状態となる。
【0035】ステップ1011においては、読み込んだ
編集コマンドが「編集終了」の場合には(ステップ10
12でYesの場合)、メソッド定義編集操作部34か
ら原始コード生成部13が起動される。原始コード生成
部13は、クラス間継承関係記憶部21に記録された全
てのクラスについてクラス毎定義情報データ25を読み
出し、新規原始コード8を生成し(ステップ101
4)、終了する。
【0036】ステップ1012でNoの場合には、ステ
ップ1016へ進み、ステップ1011で入力されたコ
マンドが新規クラスの追加定義を指定するものであるか
否かが判定される。もしYesの場合、ステップ101
7へ進み、ユーザが入力するクラス定義情報を読み込
む。このクラス定義情報が既存のクラス定義情報と重複
しない場合(ステップ1018でNoの場合)には、ス
テップ1019で、新たに入力されたクラス定義情報を
解析し、クラス間継承関係データ22にこのクラスの情
報を追加する。さらに、このクラスのクラス定義情報を
クラス毎定義情報データ25に追加登録する(ステップ
1020)。
【0037】次に、ステップ1021で、新たに定義さ
れたクラスの継承基となる全てのクラスについて、クラ
ス毎定義情報を検索において定義されるメンバ関数を、
クラス・メソッド定義情報表示部31によって一覧表示
する。この表示は、例えば図1に示されているメンバ関
数カテゴリ一覧表示部102、及びメンバ関数表示部1
03のように表示される。
【0038】次に、本装置の制御はステップ1029へ
進み、継承基にあたるクラスのメンバ関数の定義を参照
するか否かが判定される。ここでYesの場合、すなわ
ち参照する場合には、ステップ1030へ進み、参照対
象となるメンバ関数の指定が読み込まれる。この操作
は、ユーザが図1のメンバ関数カテゴリ表示部102及
び継承基メンバ関数表示部103上でポインティングデ
バイス5を用いて指示するメンバ関数の名称を読み取る
ことで行われる。さらに、選択したメンバ関数の実現部
を参照する場合(ステップ1031でYesが選択され
た場合)、原始コード編集エディタを起動し、現在選択
されているメンバ関数の実現部が表示される(ステップ
1032)。
【0039】最後にステップ1011に制御が移り、ユ
ーザが入力するコマンドを待つ状態となる。なお、ステ
ップ1029及び1031でNoが入力された時もステ
ップ1011に進み、次にユーザが入力するコマンドを
待つ。
【0040】ステップ1016でNoの場合はステップ
1023へ進み、ステップ1011で入力されたコマン
ドが既定義のクラスのメンバ関数を参照するものか否か
が判定される。ここでYesであった場合、すなわち既
定義のクラスのメンバ関数を参照するものであった場合
にはステップ1024へ進み、参照するメンバ関数を定
義したクラス名をユーザが入力するのを読み込む。次
に、ステップ1025で入力されたクラス名に対応する
クラス毎定義情報ファイルが既にあるかどうかを判定
し、もし既に定義済みの場合は、クラス間継承関係デー
タ22から指定されたクラスの継承基クラスを検索し
(ステップ1026)、この結果をクラス・メンバ関数
定義情報検索部26に供給して指定したクラスの継承基
にある全クラスのクラス毎定義情報データを検索する
(ステップ1027)。ステップ1028では、この検
索結果を基に、指定したクラスの継承基クラスで定義さ
れているメンバ関数の定義情報が、図1の継承基メンバ
関数表示部103に表示される。以下、ステップ102
9〜ステップ1032の処理が同様に行われる。
【0041】ステップ1023でNoが選択された場合
はステップ1033へ進み、1011で入力されたコマ
ンドが、現在選択しているメンバ関数定義情報を複写す
るものか否かが判定される。ここでYesが選択された
場合、すなわちメンバ関数定義情報を複写するものであ
るばあいにはステップ1034へ進み、現在画面103
で選択されているメンバ関数の定義情報を34.メソッ
ド定義編集操作部中の一時記憶バッファに複写する。最
後にステップ1011に進み、次にユーザが入力するコ
マンドを待つ。
【0042】ステップ1033でNoが選択された場合
はステップ1035へ進み、1011で入力されたコマ
ンドが、現在参照中のクラス(図1中クラス定義情報表
示部101に表示されているクラス)に対して新たなメ
ンバ関数の追加定義を指示するものか否かを判定する。
ここでYesが選択された場合、ステップ1016へ進
み、メソッド定義情報編集部34中の一時記憶バッファ
に、既にいずれかのメンバ関数定義情報が保存されてい
るか否かが判定される。ここでYesの場合は、一時記
憶バッファに保存されたメンバ関数の定義情報を、図1
中のメンバ関数定義編集部104に複写する(ステップ
1017)。
【0043】一方、ステップ1016でNoとなった場
合、すなわち既定義のクラスのメンバ関数を参照するも
のではない場合にはステップ1018へ進み、ユーザが
入力する新規メンバ関数の定義情報を読み込む。いずれ
の場合も、その次にステップ1019へ進み、追加され
たメンバ関数定義情報に対応したメンバ関数実現部のテ
ンプレートを作成する。このテンプレートは、例えば継
承基のクラスの同名のメンバ関数を呼び出す、あるいは
何も操作を行わないメンバ関数を実現するものである。
ユーザは、後にこのテンプレートを編集し、適切なメン
バ関数の実現部を記述する。次に、ステップ1041へ
進み、追加されたメンバ関数定義情報を、25.クラス
毎定義情報データ(群)中の対応するクラス毎定義情報
データに追加する。最後に、ステップ1011へ戻り、
ユーザが次に入力するコマンドの読み込みを行う。
【0044】なお、ステップ1035でもNoが選択さ
れた場合は、本実現例ではステップ1011へそのまま
戻り、次のユーザが入力するコマンドの読み込みを行
う。
【0045】実施例2.請求項第2項の一実施例を図を
用いて説明する。図4は本発明によるオブジェクト指向
プログラミング言語を対象とする原始コード編集装置の
一実施例の実行画面を示す図である。図4において、1
01はクラス定義情報表示部であり、102はクラスに
定義されたメンバ関数のカテゴリを一覧表示するメンバ
関数カテゴリ表示部である。また、105は現在編集対
象としているクラスの部品として機能する各クラスで定
義されているメンバ関数の表示・選択を行う部品クラス
メンバ関数表示部であり、104は現在編集対象として
いるクラスのメンバ関数定義編集部である。
【0046】又、図7は本実施例における原始コード編
集装置の構成を示す構成図である。1は原始コード入出
力部である。この原始コード入出力部1は、原始コード
7を読み込む原始コード読み込み部11と、読み込んだ
原始コード7を構文解析し、クラス定義情報を抽出する
原始コード構文解析部12と、メソッド定義編集操作部
34から起動され、クラス・メンバ関数定義情報記憶部
26に記憶された各クラス、各メンバ関数の定義情報、
実現情報を基に新規原始コードを生成する原始コード生
成部13と、を備えている。
【0047】2はクラス・メソッド定義情報記憶部であ
る。このクラス・メソッド定義情報記憶部2は、原始コ
ード構文解析部12によって抽出された各クラスについ
て部品となるクラス(クラス定義の中でメンバ変数とし
て利用されるクラス)のクラス名を抽出し、記憶するク
ラス間部品−全体関係記憶部27と、クラス間部品−全
体関係記憶部27が記憶する情報を記録しているクラス
間部品−全体関係データ28と、メソッド情報編集部3
によって起動され、クラス間部品−全体関係記憶部28
に対して指定されたクラスの部品クラスの一覧を検索す
るクラス名検索部23と、原始コード解析部12によっ
て抽出された各クラスについてのクラス、及びメンバ関
数の定義情報を記憶するクラス・メンバ関数定義情報記
憶部24と、クラス・メンバ関数定義情報記憶部24で
記憶されるクラス、メンバ関数の定義情報を、クラス毎
に分類して記録・管理するクラス毎定義情報データ
(群)25と、メソッド情報編集部3から起動され、ク
ラス毎定義情報データ(群)25から必要なクラス、メ
ンバ関数の定義情報を検索するクラス・メンバ関数定義
情報検索部26とから構成される。
【0048】3はメソッド情報編集部である。このメソ
ッド情報編集部3は、クラスやメソッドの定義情報を画
面上に表示するクラス・メソッド定義情報表示部31
と、ユーザからの要求に応じて新たなクラスを定義する
場合に起動されるクラス定義情報編集部32と、表示画
面上にリスト表示されたメンバ関数中からユーザが特定
のメンバ関数を指定する際にその指定を読み取るメソッ
ド選択操作部33と、編集中のクラスに対して新たなメ
ンバ関数を追加定義するメソッド定義編集操作部34
と、から構成される。
【0049】また、4はクラスやメンバ関数の定義情報
の表示や一覧表示を行う表示装置であり、5は選択操作
等で利用するポインティングデバイスであり、6は新た
なメンバ関数の定義を入力する場合などに利用するキー
ボードである。
【0050】次に、本実施例における動作について図8
〜図10に示されているフローチャートを用いて説明す
る。本装置を起動すると、処理はステップ101へ進
み、原始コード読み込み部11によって原始コードが読
み込まれる。読み込まれた原始コード7は、原始コード
解析部12に供給され、原始コード7からクラス定義情
報が抽出される(ステップ1002)。読み込まれたク
ラスがまだ25.クラス毎定義情報データ(群)25に
記録されていない場合(ステップ1004でNoの場
合)、読み込まれたクラス定義情報を基にクラス毎定義
情報データが作成される(ステップ1005)。さらに
ステップ1006で原始コード7から、メンバ関数定義
情報が抽出され、これをステップ1005で作成したク
ラス毎定義情報データと合わせて格納する。このような
処理を、全てのメンバ関数に対して行う。
【0051】次にステップ1011に進み、そのクラス
のクラス定義情報から、そのクラスのメンバ変数とし
て、他のクラスのインスタンスを利用しており、かつそ
のインスタンスがそのクラス内部で生成、削除されてい
るかを検索する。ここでYesと判定された場合、その
メンバ変数のクラスは、読み込んだクラスの部品として
利用されていると判断し、これを27.クラス間部品−
全体関係記憶部に登録する。この処理を読み込んだ原始
コード7に現れる全てのクラスに対して行う。
【0052】ステップ1009において全てのクラスの
定義とクラスのメンバ関数定義を読み込んだか否かが確
認され、すべて読み込まれていれば、ステップ1010
でメソッド情報編集部3が起動され、ユーザが入力する
編集コマンドの待ち状態となる。ステップ1011で読
み込んだ編集コマンドが「編集終了」の場合、メソッド
定義編集操作部34から原始コード生成部13が起動さ
れる。原始コード生成部13は、クラス・メンバ関数定
義情報記憶部24に記録された全てのクラスについてク
ラス毎定義情報データ25を読み出し(ステップ110
3)、新規原始コード8を生成し(ステップ101
4)、終了される。
【0053】ステップ1012でNoの場合、ステップ
1016へ進みステップ1011で入力されたコマンド
が新規クラスの追加定義を指定するものであるか否かが
判定される。もしYesの場合、すなわち、新規クラス
の追加定義を指定するものであるばあいには、ステップ
1017へ進み、ユーザが入力するクラス定義情報が読
み込まれる。このクラス定義情報が既存のクラス定義情
報と重複しない場合(ステップ1018でNoの場
合)、ステップ1020で入力されたクラス定義情報を
解析し、このクラスに対応したクラス間継承関係データ
22にこのクラスの情報を追加生成する。次に、ステッ
プ1104で、新たに定義されたクラスのクラス定義情
報の中でメンバ変数の型として定義されているクラスを
抽出し、そのメンバ変数が新たに定義しているクラス部
品として利用されるか否かが判定される。この判定は、
編集対象となるプログラミング言語によって異なる。Sm
alltalk-80を用いた場合はユーザに直接問い合わせて決
定する。一方、C++言語の場合は、コンストラクタ・デ
ストラクタ中の記述から部品クラスを同定する。ステッ
プ1104で判定した結果がYesとなった場合には、
ステップ1105へ進み、クラス間部品−全体関係記憶
部27に部品オブジェクトが登録される。また、部品ク
ラスと判定されたクラス名を基にクラス・メンバ関数定
義情報検索部26によって該当するクラス毎定義情報デ
ータ25が検索され、部品クラスのメンバ関数の定義情
報を抽出し、その結果を図6のメンバ関数カテゴリリス
ト表示部102、及びメンバ関数定義情報リスト表示部
105に表示される(ステップ1106)。さらに、新
たに作成したクラスのメンバ関数についても、メンバ関
数定義情報をメンバ関数定義情報編集部104にリスト
表示される。
【0054】次に、本装置はステップ1029へ制御が
進み、部品として使用しているクラスのメンバ関数定義
を参照するか否かが判定される。ここでYesの場合、
すなわち部品として使用しているクラスのメンバ関数定
義を参照する場合には、ステップ1030へ進み、参照
対象となるメンバ関数の指定が読み込まれる。この操作
は、ユーザが図6のメンバ関数カテゴリ表示部102、
及びメンバ関数定義情報リスト表示部105上でポイン
ティングデバイス5を用いて指示するメンバ関数の名称
を読み取ることで行われる。さらに、選択したメンバ関
数の実現部を参照する場合(ステップ1031でYes
を選択した場合)には、原始コード編集エディタが起動
され、現在選択されているメンバ関数の実現部が使用さ
れる(ステップ1032)。最後にステップ1011に
進み、次にユーザが入力するコマンドを待つ状態とな
る。なお、ステップ1029及び1031でNoが入力
された時もステップ1011に進み、次に、ユーザが入
力するコマンドを待つ状態に移る。
【0055】上記ステップ1016でNoの場合はステ
ップ1023へ進み、ステップ1011で入力されたコ
マンドが既定義のクラスのメンバ関数を参照するものか
否かが判定される。ここでYesであった場合、すなわ
ち既定義のクラスのメンバ関数を参照するものであった
場合には、ステップ1024へ進み、参照するメンバ関
数を定義したクラス名をユーザが入力するのを読み込
む。次に、ステップ1025で入力されたクラス名に対
応するクラス毎定義情報ファイルが既にあるかどうかが
判定され、もし既に定義済みの場合はクラス間部品−全
体関係データ28から指定されたクラスの部品クラスを
検索し(ステップ1108)、この検索結果をクラス・
メンバ関数定義情報検索部26に渡して指定したクラス
で定義されているメンバ関数の定義情報を抽出し、その
結果をメンバ関数定義情報編集部104にリスト表示す
る(ステップ1109)。
【0056】次にステップ1110で、このクラスの名
称がクラス間部品−全体間系データ28に保存されてい
るかが検索され、もし保存されていれば(ステップ11
10でYesの場合)、ステップ1111へ進む。ステ
ップ1111では、クラス間部品−全体関係データ28
に保存されている情報から、指定されたクラスの部品ク
ラスのクラス名を抽出し、クラス・メンバ関数定義情報
検索部26に供給して該当するクラスのクラス・メンバ
関数定義情報データ25を得る。このデータから、各部
品クラスのメンバ関数定義情報を得て、その結果が図6
のメンバ関数カテゴリリスト表示部102、及びメンバ
関数定義情報リスト表示部105に表示される(ステッ
プ1111)。以下、ステップ1029〜ステップ10
32の処理が同様に行われる。
【0057】ステップ1023でNoが選択された場合
はステップ1033へ進み、1011で入力されたコマ
ンドが、現在選択されているメンバ関数定義情報を複写
するものか否かを判定する。ここでYesが選択された
場合はステップ1034へ進み、現在の画面103で選
択されているメンバ関数の定義情報をメソッド定義編集
操作部34中の一時記憶バッファに複写する。最後にス
テップ1011に進み、ユーザが次に入力するコマンド
を待つ状態となる。
【0058】ステップ1033でNoが選択された場合
はステップ1035へ進み、1011で入力されたコマ
ンドが、現在参照中のクラス(図1中クラス定義情報表
示部101に表示されているクラス)に対して新たなメ
ンバ関数の追加定義を指示するものか否かを判定する。
ここでYesが選択された場合、ステップ1016へ進
み、メソッド定義情報編集部34中の一時記憶バッファ
に、既にいずれかのメンバ関数定義情報が保存されてい
るか否かが判定される。ここでYesの場合は、一時記
憶バッファに保存されたメンバ関数の定義情報を、図1
中のメンバ関数定義編集部104に複写する(ステップ
1017)。一方、ステップ1016でNoとなった場
合、ステップ1018へ進み、ユーザが入力する新規メ
ンバ関数の定義情報を読み込む。いずれの場合も、その
次にステップ1019へ進み、追加されたメンバ関数定
義情報に対応したメンバ関数実現部のテンプレートを作
成する。このテンプレートは、例えば部品クラスの同名
のメンバ関数を呼び出す、あるいは何も操作を行わない
メンバ関数を実現するものである。ユーザは、後にこの
テンプレートを編集し、適切なメンバ関数の実現部を記
述する。次に、ステップ1041へ進み、追加されたメ
ンバ関数定義情報を、クラス毎定義情報データ(群)2
5中の対応するクラス毎定義情報データに追加する。最
後に、ステップ1011へ戻り、ユーザが次に入力する
コマンドの読み込みを待つ状態となる。
【0059】なお、ステップ1035でもNoが選択さ
れた場合は、本実現例ではステップ1011へそのまま
戻り、次のユーザが入力するコマンドの読み込みを行
う。
【0060】以上の実施例では、対象とするオブジェク
ト指向プログラミング言語にSmalltalk-80を採用した例
について説明したが、その他のオブジェクト指向プログ
ラミング言語であっても良いことは言うまでもない。
【0061】
【発明の効果】以上、本発明によれば、オブジェクト指
向プログラミング言語によるプログラミングの過程で、
新たなクラスを定義し、該クラスに新たなメンバ関数を
定義する際に、そのクラスと関連を持つ他のクラスのメ
ンバ関数定義を複写して利用することにより、各クラス
のメンバ関数の名称、引数の型や数、あるいは返り値の
型を統一化することを、プログラマが関連するクラスの
メンバ関数をいちいち検索したりすることなく、かつ、
キーボードからタイピング入力することなく定義し、そ
の結果を原始コードとして生成することを可能にする。
これにより、再利用可能なソフトウェア部品の開発を効
率的に行うことが可能となる。
【図面の簡単な説明】
【図1】本発明によるオブジェクト指向プログラミング
言語を対象とした原始コード編集装置の実施例1におけ
る実行画面の図である。
【図2】本発明によるオブジェクト指向プログラミング
言語を対象とした原始コード編集装置の実施例1におけ
る構成図である。
【図3】本発明によるオブジェクト指向プログラミング
言語を対象とした原始コード編集装置の実施例1におけ
る動作を示すフローチャートである。
【図4】本発明によるオブジェクト指向プログラミング
言語を対象とした原始コード編集装置の実施例1におけ
る動作を示すフローチャートである。
【図5】本発明によるオブジェクト指向プログラミング
言語を対象とした原始コード編集装置の実施例1におけ
る動作を示すフローチャートである。
【図6】本発明によるオブジェクト指向プログラミング
言語を対象とした原始コード編集装置の実施例2におけ
る実行画面の図である。
【図7】本発明によるオブジェクト指向プログラミング
言語を対象とした原始コード編集装置の実施例2におけ
る構成図である。
【図8】本発明によるオブジェクト指向プログラミング
言語を対象とした原始コード編集装置の実施例2におけ
る動作を示すフローチャートである。
【図9】本発明によるオブジェクト指向プログラミング
言語を対象とした原始コード編集装置の実施例2におけ
る動作を示すフローチャートである。
【図10】本発明によるオブジェクト指向プログラミン
グ言語を対象とした原始コード編集装置の実施例2にお
ける動作を示すフローチャートである。
【図11】従来のオブジェクト指向プログラミング言語
を対象とした原始コード編集装置の実行画面の図であ
る。
【図12】従来のオブジェクト指向プログラミング言語
を対象とした原始コード編集装置の構成図である。
【図13】従来のオブジェクト指向プログラミング言語
を対象とした原始コード編集装置の動作を示すフローチ
ャートである。
【図14】従来のオブジェクト指向プログラミング言語
を対象とした原始コード編集装置の動作を示すフローチ
ャートである。
【図15】従来のオブジェクト指向プログラミング言語
を対象とした原始コード編集装置の実行画面の図であ
る。
【符号の説明】
1 原始コード入出力部 11 原始コード読み込み部 12 原始コー構文解析部 13 原始コード生成部 2 クラス・メソッド定義情報記憶部 21 クラス間継承関係記憶部 22 クラス間継承関係データ 23 クラス名検索部 24 クラス・メンバ関数定義情報記憶部 25 クラス毎定義情報データ(群) 26 クラス・メンバ関数定義情報検索部 27 クラス間部品−全体関係記憶部 28 クラス間部品−全体関係データ 3 メソッド情報編集部 31 クラス・メソッド定義情報編集部 32 クラス定義情報編集部 33 メソッド選択操作部 34 メソッド定義編集操作部 4 表示装置 5 ポインティングデバイス 6 キーボード 7 原始コード 8 新規原始コード 101 クラス定義情報表示部 102 メンバ関数カテゴリリスト表示部 103 継承基メンバ関数表示部 104 メンバ関数定義編集部 105 部品クラスメンバ関数表示部

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 クラス間に継承関係を設定できるオブジ
    ェクト指向プログラミング言語を利用したソフトウェア
    開発を対象とするソフトウェア開発支援において使用さ
    れるオブジェクト指向プログラミング言語を対象とした
    原始プログラム編集装置であって、 表示装置と、 ポインティングデバイスと、 キーボードと、 原始コードを読み込む原始コード読み込み部と、原始コ
    ードの構文を解析する原始コード構文解析部と、新規原
    始コードを生成する原始コード生成部とを備えた原始コ
    ード入出力部と、 クラス間承継関係データを記憶するクラス間継承関係記
    憶部と、クラス間継承関係に基づきクラス名を検索する
    クラス名検索部と、クラスに定義されたメンバ関数の定
    義情報を記録管理するクラス・メンバ関数定義情報記憶
    部と、を備えたクラス・メソッド定義情報記憶部と、 クラス・メソッド定義情報表示部と、クラス定義情報編
    集部と、メソッド選択操作部と、メソッド定義編集操作
    部とを備えたメソッド情報編集部と、 を備えたことを特徴とするオブジェクト指向プログラミ
    ング言語を対象とした原始プログラム編集装置。
  2. 【請求項2】 抽象データ型の概念を利用できるオブジ
    ェクト指向プログラミング言語を利用したソフトウェア
    の開発を対象としたソフトウェア開発支援において使用
    されるオブジェクト指向プログラミング言語を対象とし
    た原始プログラム編集装置であって、 表示装置と、 ポインティングデバイスと、 キーボードと、 原始コードを読み込む原始コード読み込み部と、原始コ
    ードの構文を解析する原始コード構文解析部と、新規原
    始コードを生成する原始コード生成部とを備えた原始コ
    ード入出力部と、 原始コード構文解析部の出力信号から得たクラス間の部
    品−全体関係情報を選択的に記憶するクラス間部品−全
    体関係記憶部と、メソッド情報編集部からの指定によっ
    てクラス間部品−全体関係記憶部から特定のクラスの部
    品クラス情報を検索するクラス名検索部と、読み込まれ
    た個々のクラスについてのクラス毎定義情報データ群で
    あって、定義情報とクラスに定義されたメンバ関数の定
    義情報とを含むデータ群を記録管理するクラス・メンバ
    関数定義情報記憶部と、クラス・メンバ関数定義情報記
    憶部に記録されたクラス毎定義情報データ群から指定さ
    れたクラス及びメンバ関数の定義情報を検索しメソッド
    情報編集部に供給するクラス・メンバ関数定義情報検索
    部とを備えたクラス・メソッド定義情報記憶部と、 クラス・メソッド定義情報表示部と、クラス定義情報編
    集部と、メソッド選択操作部と、メソッド定義編集操作
    部とを備えたメソッド情報編集部と、 を備えたことを特徴とするオブジェクト指向プログラミ
    ング言語を対象とした原始プログラム編集装置。
JP11268893A 1993-05-14 1993-05-14 オブジェクト指向プログラミング言語を対象とした原始プログラム編集装置 Pending JPH06324853A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11268893A JPH06324853A (ja) 1993-05-14 1993-05-14 オブジェクト指向プログラミング言語を対象とした原始プログラム編集装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11268893A JPH06324853A (ja) 1993-05-14 1993-05-14 オブジェクト指向プログラミング言語を対象とした原始プログラム編集装置

Publications (1)

Publication Number Publication Date
JPH06324853A true JPH06324853A (ja) 1994-11-25

Family

ID=14592998

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11268893A Pending JPH06324853A (ja) 1993-05-14 1993-05-14 オブジェクト指向プログラミング言語を対象とした原始プログラム編集装置

Country Status (1)

Country Link
JP (1) JPH06324853A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002046921A1 (fr) * 2000-12-08 2002-06-13 Fujitsu Limited Procede et dispositif pour l'analyse de sequences
JP2011028665A (ja) * 2009-07-29 2011-02-10 Mitsubishi Electric Corp 管理装置及び管理方法及びプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002046921A1 (fr) * 2000-12-08 2002-06-13 Fujitsu Limited Procede et dispositif pour l'analyse de sequences
US7062751B2 (en) 2000-12-08 2006-06-13 Fujitsu Limited Sequence analysis method and apparatus
JP2011028665A (ja) * 2009-07-29 2011-02-10 Mitsubishi Electric Corp 管理装置及び管理方法及びプログラム

Similar Documents

Publication Publication Date Title
US5513305A (en) System and method for documenting and displaying computer program code
US6651240B1 (en) Object-oriented software development support apparatus and development support method
US6305008B1 (en) Automatic statement completion
US6745208B2 (en) Method and apparatus for synchronizing an XML document with its object model
JPH07182147A (ja) コンピュータプログラムを発生する方法及びシステム
US5982365A (en) System and methods for interactively generating and testing help systems
JPH08503568A (ja) 複数のプログラムモジュールとコンピュータの記憶装置との間にファイルまたは他のデータエンティティの転送を集積するための順次情報集積サービス
JPH096794A (ja) データ検索指示装置
CN112181483B (zh) 等离子体控制系统软件开发平台及方法
JPH1115841A (ja) 情報検索装置及び情報検索プログラムを記録した媒体
JPH06324853A (ja) オブジェクト指向プログラミング言語を対象とした原始プログラム編集装置
JPH11338686A (ja) プログラム開発支援装置及びプログラム開発支援方法並びにプログラム開発支援プログラムを記録した記録媒体
JP3167412B2 (ja) データベース検索処理装置
JP2000322295A (ja) データベースストアドサブプログラム用プログラミング支援方法ならびに装置
Caloini Matching hypertext models to hypertext systems
JPH05307472A (ja) プログラム部品情報再利用装置
JPH06161726A (ja) ツールデータ再利用装置
JP2946509B2 (ja) 対話型マニュアルの制御方法
TW552557B (en) Automatic program generating system and the method thereof
CN117453713A (zh) 多类型数据库的sql语句生成方法、设备和存储介质
JPH09223134A (ja) 文書処理装置
JPH08123811A (ja) 文書編集装置及び文書編集方法
JPH10260822A (ja) オブジェクト指向ソフトウェア文書編集管理支援装置
JPH09231064A (ja) ソフトウエア開発支援システム及び該システムを記憶した媒体
JPH07141165A (ja) 情報処理装置