JPH08221274A - オブジェクト変換装置 - Google Patents
オブジェクト変換装置Info
- Publication number
- JPH08221274A JPH08221274A JP7029218A JP2921895A JPH08221274A JP H08221274 A JPH08221274 A JP H08221274A JP 7029218 A JP7029218 A JP 7029218A JP 2921895 A JP2921895 A JP 2921895A JP H08221274 A JPH08221274 A JP H08221274A
- Authority
- JP
- Japan
- Prior art keywords
- class definition
- generated
- class
- definition
- database
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】 少ないコーディング量で、オブジェクト指向
プログラムから関係データベースに格納された情報をア
クセスできるようにすること。 【構成】 第1の手段2a、第2の手段2bは関係デー
タベース1のテーブル1aのスキーマ定義1bからオブ
ジェクトクラス定義3aと関係データベースへのアクセ
スを管理するオブジェクトのクラス定義を自動生成す
る。オブジェクト指向プログラム3は、上記オブジェク
トのクラス定義3aとアクセス管理オブジェクト3bを
用いて、関係データベース1から必要なレコードを一つ
ずつ取り出してオブジェクトに変換して利用する。ま
た、データベース中の各レコードの特定部分、特定の分
類に属する各レコードを指定して取り出し、オブジェク
トに変換して利用することもできる。
プログラムから関係データベースに格納された情報をア
クセスできるようにすること。 【構成】 第1の手段2a、第2の手段2bは関係デー
タベース1のテーブル1aのスキーマ定義1bからオブ
ジェクトクラス定義3aと関係データベースへのアクセ
スを管理するオブジェクトのクラス定義を自動生成す
る。オブジェクト指向プログラム3は、上記オブジェク
トのクラス定義3aとアクセス管理オブジェクト3bを
用いて、関係データベース1から必要なレコードを一つ
ずつ取り出してオブジェクトに変換して利用する。ま
た、データベース中の各レコードの特定部分、特定の分
類に属する各レコードを指定して取り出し、オブジェク
トに変換して利用することもできる。
Description
【0001】
【産業上の利用分野】本発明は、既存の関係データベー
スに格納されている情報を利用するプログラムの開発に
使用されるオブジェクト変換装置に関し、さらに詳細に
は、オブジェクト指向プログラム(例えば、プログラミ
ング言語C++等により作成されたプログラム)から、容
易に関係データベースに格納された情報をアクセスでき
るようにしたオブジェクト変換装置に関するものであ
る。
スに格納されている情報を利用するプログラムの開発に
使用されるオブジェクト変換装置に関し、さらに詳細に
は、オブジェクト指向プログラム(例えば、プログラミ
ング言語C++等により作成されたプログラム)から、容
易に関係データベースに格納された情報をアクセスでき
るようにしたオブジェクト変換装置に関するものであ
る。
【0002】
【従来の技術】図33は既存のデータベース中に格納さ
れている部品テーブルの一例を示す図である。オブジェ
クト指向プログラムで上記部品テーブルPart中のレコー
ドを利用する場合には、テーブルのレコード一つ一つに
プログラム中の一つのオブジェクト(例えば、PartReco
rdオブジェクト)を対応させるのが自然である。
れている部品テーブルの一例を示す図である。オブジェ
クト指向プログラムで上記部品テーブルPart中のレコー
ドを利用する場合には、テーブルのレコード一つ一つに
プログラム中の一つのオブジェクト(例えば、PartReco
rdオブジェクト)を対応させるのが自然である。
【0003】このようなプログラムを開発するためには
主に、(a)テーブルに対応するオブジェクトのクラス
定義する、(b)データベースにアクセスし、必要なレ
コードを取り出し、それをオブジェクトに変換する、と
いった2種類のプログラムコードを書き下す必要があ
る。図34は、上記図33に示した部品テーブルPartに
対応するPartRecordオブジェクトのクラス定義を最も一
般的なオブジェクト指向プログラミング言語であるC++
で記述した例である。
主に、(a)テーブルに対応するオブジェクトのクラス
定義する、(b)データベースにアクセスし、必要なレ
コードを取り出し、それをオブジェクトに変換する、と
いった2種類のプログラムコードを書き下す必要があ
る。図34は、上記図33に示した部品テーブルPartに
対応するPartRecordオブジェクトのクラス定義を最も一
般的なオブジェクト指向プログラミング言語であるC++
で記述した例である。
【0004】同図において、A部で、図33に示したテ
ーブルPartにおけるレコード[code],[name],[descripti
on]をそれぞれ整数、文字列、文字列として定義し、B
部で、コンストラクタ[PartRecord]と、デストラクタ
[〜PartRecord] を定める。C部で、コンストラクタ[Pa
rtRecord]を定義し、文字列については領域を確保する
とともに、文字列をコピーし、D部でデストラクタ [〜
PartRecord] を定義する([name]と[description] の消
去)。
ーブルPartにおけるレコード[code],[name],[descripti
on]をそれぞれ整数、文字列、文字列として定義し、B
部で、コンストラクタ[PartRecord]と、デストラクタ
[〜PartRecord] を定める。C部で、コンストラクタ[Pa
rtRecord]を定義し、文字列については領域を確保する
とともに、文字列をコピーし、D部でデストラクタ [〜
PartRecord] を定義する([name]と[description] の消
去)。
【0005】図35、図36は比較的よく利用されてい
る関係データベース管理システムの一つであるSybaseに
前記図33に示した情報が格納されている場合に、オブ
ジェクト指向プログラムからデータベースへのアクセス
処理を実行する部分を、同じくC++言語で記述した例で
ある。同図は、テーブルPartからフィールドcodeの値が
100 以上であるすべてのレコードを順次読み出して、Pa
rtRecordオブジェクトに変換して必要な処理を行う関数
Sampleの一例である。
る関係データベース管理システムの一つであるSybaseに
前記図33に示した情報が格納されている場合に、オブ
ジェクト指向プログラムからデータベースへのアクセス
処理を実行する部分を、同じくC++言語で記述した例で
ある。同図は、テーブルPartからフィールドcodeの値が
100 以上であるすべてのレコードを順次読み出して、Pa
rtRecordオブジェクトに変換して必要な処理を行う関数
Sampleの一例である。
【0006】同図において、A部で初期設定を行い、B
部で上記テーブルPartからデータを取り込む。その際、
B部の第2番目にででくる[while] 以降でデータがなく
なるまで繰り返し取り込み処理を行い、オブジェクト[*
C]に取り込む。そして、同図のC部の関数[body]で各オ
ブジェクトに対する実際の処理を行う。
部で上記テーブルPartからデータを取り込む。その際、
B部の第2番目にででくる[while] 以降でデータがなく
なるまで繰り返し取り込み処理を行い、オブジェクト[*
C]に取り込む。そして、同図のC部の関数[body]で各オ
ブジェクトに対する実際の処理を行う。
【0007】
【発明が解決しようとする課題】上記したように、従来
技術においては、利用するテーブル毎に図34に示した
クラス定義を記述し、また、それを利用するプログラム
の各部分に図35、図36に示したようなプログラムコ
ードを記述する必要があった。また、1レコードに含ま
れるデータ量が多いときには、特定のモジュールにおい
て、メモリ効率を考慮して、必要なフィールド情報のみ
からなるオブジェクトを使用することもあり、その場合
には、前記図34に示すクラス定義をそれぞれ別個に記
述する必要があった。
技術においては、利用するテーブル毎に図34に示した
クラス定義を記述し、また、それを利用するプログラム
の各部分に図35、図36に示したようなプログラムコ
ードを記述する必要があった。また、1レコードに含ま
れるデータ量が多いときには、特定のモジュールにおい
て、メモリ効率を考慮して、必要なフィールド情報のみ
からなるオブジェクトを使用することもあり、その場合
には、前記図34に示すクラス定義をそれぞれ別個に記
述する必要があった。
【0008】さらに、オブジェクト指向プログラミング
においては、テーブルに格納されているレコードを特定
の観点から数種類に分類し、クラスの階層構造に導入し
て理解し易いプログラムを開発することがあり、従来の
おいては、この場合にも、同一のテーブルに対して複数
のクラス定義を記述する必要があった。本発明は上記し
た従来技術の問題点を考慮してなされたものであって、
本発明の第1の目的は、既存の関係データベースのスキ
ーマ定義から、オブジェクトのクラス定義、および、デ
ータベースへのアクセス管理を行うオブジェクトのクラ
ス定義を自動生成することにより、少ないコーディング
量で、オブジェクト指向プログラムから関係データベー
スに格納された情報をアクセスできるようにすることで
ある。
においては、テーブルに格納されているレコードを特定
の観点から数種類に分類し、クラスの階層構造に導入し
て理解し易いプログラムを開発することがあり、従来の
おいては、この場合にも、同一のテーブルに対して複数
のクラス定義を記述する必要があった。本発明は上記し
た従来技術の問題点を考慮してなされたものであって、
本発明の第1の目的は、既存の関係データベースのスキ
ーマ定義から、オブジェクトのクラス定義、および、デ
ータベースへのアクセス管理を行うオブジェクトのクラ
ス定義を自動生成することにより、少ないコーディング
量で、オブジェクト指向プログラムから関係データベー
スに格納された情報をアクセスできるようにすることで
ある。
【0009】本発明の第2の目的は、オブジェクト指向
プログラムから関係データベースの特定テーブルの各レ
コードの特定部分を一つのオブジェクトとして利用でき
るようにすることである。本発明の第3の目的は、オブ
ジェクト指向プログラムから関係データベース中の特定
のテーブル中で特定の分類に属する各レコードを一つの
オブジェクトとして利用できるようにことである。
プログラムから関係データベースの特定テーブルの各レ
コードの特定部分を一つのオブジェクトとして利用でき
るようにすることである。本発明の第3の目的は、オブ
ジェクト指向プログラムから関係データベース中の特定
のテーブル中で特定の分類に属する各レコードを一つの
オブジェクトとして利用できるようにことである。
【0010】
【課題を解決するための手段】図1は本発明の原理図で
ある。同図において、1は既存の関係データベース、1
aはテーブル、1bはテーブル1aのスキーマ定義、2
aはオブジェクトのクラス定義を自動生成する第1の手
段、2bはデータベース1へのアクセスを管理するオブ
ジェクトのクラス定義を自動生成する第2の手段であ
る。3はオブジェクト指向プログラムであり、オブジェ
クト指向プログラム3は上記第1、第2の手段により自
動生成されたオブジェクトのクラス定義3aおよびアク
セス管理オブジェクトクラス定義3bを用いて、関係デ
ータベース1からテーブル1aのレコード取り出して、
オブジェクトに変換して利用する。
ある。同図において、1は既存の関係データベース、1
aはテーブル、1bはテーブル1aのスキーマ定義、2
aはオブジェクトのクラス定義を自動生成する第1の手
段、2bはデータベース1へのアクセスを管理するオブ
ジェクトのクラス定義を自動生成する第2の手段であ
る。3はオブジェクト指向プログラムであり、オブジェ
クト指向プログラム3は上記第1、第2の手段により自
動生成されたオブジェクトのクラス定義3aおよびアク
セス管理オブジェクトクラス定義3bを用いて、関係デ
ータベース1からテーブル1aのレコード取り出して、
オブジェクトに変換して利用する。
【0011】前記課題を解決するため、図1に示すよう
に、本発明の請求項1の発明は、既存関係データベース
のテーブルのスキーマ定義から、オブジェクトのクラス
定義を自動生成する第1の手段と、上記スキーマ定義か
ら、データベースへのアクセスを管理するオブジェクト
のクラス定義を自動生成する第2の手段とを設け、上記
第1の手段によりオブジェクトのクラス定義を生成する
とともに、第2の手段によりデータベースへのアクセス
管理オブジェクトのクラス定義を生成し、上記生成され
たオブジェクトのクラス定義とアクセス管理オブジェク
トを用いて、既存の関係データベース中の特定テーブル
の各レコードを変換して、オブジェクト指向プログラム
中で一つのオブジェクトとして利用するようにしたもの
である。
に、本発明の請求項1の発明は、既存関係データベース
のテーブルのスキーマ定義から、オブジェクトのクラス
定義を自動生成する第1の手段と、上記スキーマ定義か
ら、データベースへのアクセスを管理するオブジェクト
のクラス定義を自動生成する第2の手段とを設け、上記
第1の手段によりオブジェクトのクラス定義を生成する
とともに、第2の手段によりデータベースへのアクセス
管理オブジェクトのクラス定義を生成し、上記生成され
たオブジェクトのクラス定義とアクセス管理オブジェク
トを用いて、既存の関係データベース中の特定テーブル
の各レコードを変換して、オブジェクト指向プログラム
中で一つのオブジェクトとして利用するようにしたもの
である。
【0012】本発明の請求項2の発明は、既存関係デー
タベースのテーブルのスキーマ定義と指定記述から、オ
ブジェクトのクラス定義を自動生成する第1の手段と、
上記スキーマ定義と指定記述から、データベースへのア
クセスを管理するオブジェクトのクラス定義を自動生成
する第2の手段とを設け、上記第1の手段によりオブジ
ェクトのクラス定義を生成するとともに、第2の手段に
よりデータベースへのアクセス管理オブジェクトのクラ
ス定義を生成し、上記生成されたクラス定義とアクセス
管理オブジェクトを用いて、既存の関係データベース中
の特定テーブルの各レコードの特定部分を変換して、オ
ブジェクト指向プログラム中で一つのオブジェクトとし
て利用するようにしたものである。
タベースのテーブルのスキーマ定義と指定記述から、オ
ブジェクトのクラス定義を自動生成する第1の手段と、
上記スキーマ定義と指定記述から、データベースへのア
クセスを管理するオブジェクトのクラス定義を自動生成
する第2の手段とを設け、上記第1の手段によりオブジ
ェクトのクラス定義を生成するとともに、第2の手段に
よりデータベースへのアクセス管理オブジェクトのクラ
ス定義を生成し、上記生成されたクラス定義とアクセス
管理オブジェクトを用いて、既存の関係データベース中
の特定テーブルの各レコードの特定部分を変換して、オ
ブジェクト指向プログラム中で一つのオブジェクトとし
て利用するようにしたものである。
【0013】本発明の請求項3の発明は、既存関係デー
タベースのテーブルのスキーマ定義と分類指定記述か
ら、オブジェクトのクラス定義を自動生成する第1の手
段と、上記スキーマ定義と分類指定記述から、データベ
ースへのアクセスを管理するオブジェクトのクラス定義
を自動生成する第2の手段とを設け、上記第1の手段に
よりオブジェクトのクラス定義を生成するとともに、第
2の手段によりデータベースへのアクセス管理オブジェ
クトのクラス定義を生成し、上記自動生成されたクラス
定義とアクセス管理オブジェクトを用いて、既存の関係
データベース中の特定テーブル中で特定の分類に属する
各レコードを変換して、オブジェクト指向プログラム中
で一つのオブジェクトとして利用するようにしたもので
ある。
タベースのテーブルのスキーマ定義と分類指定記述か
ら、オブジェクトのクラス定義を自動生成する第1の手
段と、上記スキーマ定義と分類指定記述から、データベ
ースへのアクセスを管理するオブジェクトのクラス定義
を自動生成する第2の手段とを設け、上記第1の手段に
よりオブジェクトのクラス定義を生成するとともに、第
2の手段によりデータベースへのアクセス管理オブジェ
クトのクラス定義を生成し、上記自動生成されたクラス
定義とアクセス管理オブジェクトを用いて、既存の関係
データベース中の特定テーブル中で特定の分類に属する
各レコードを変換して、オブジェクト指向プログラム中
で一つのオブジェクトとして利用するようにしたもので
ある。
【0014】
【作用】図1において、第1の手段2a、第2の手段2
bは関係データベース1のテーブル1aのスキーマ定義
1b等からオブジェクトクラス定義3aと関係データベ
ースへのアクセスを管理するオブジェクトのクラス定義
を自動生成する。オブジェクト指向プログラム3は、上
記オブジェクトのクラス定義3aとアクセス管理オブジ
ェクト3bにより関係データベース1から必要なレコー
ドを一つずつ取り出してオブジェクトに変換して利用す
る。
bは関係データベース1のテーブル1aのスキーマ定義
1b等からオブジェクトクラス定義3aと関係データベ
ースへのアクセスを管理するオブジェクトのクラス定義
を自動生成する。オブジェクト指向プログラム3は、上
記オブジェクトのクラス定義3aとアクセス管理オブジ
ェクト3bにより関係データベース1から必要なレコー
ドを一つずつ取り出してオブジェクトに変換して利用す
る。
【0015】本発明の請求項1の発明においては、上記
のように、関係データベースのスキーマ定義から、オブ
ジェクトのクラス定義を生成するとともに、データベー
スへのアクセス管理オブジェクトのクラス定義を生成
し、上記生成されたオブジェクトのクラス定義とアクセ
ス管理オブジェクトを用いて、既存の関係データベース
中の特定テーブルの各レコードを変換して、オブジェク
ト指向プログラム中で一つのオブジェクトとして利用す
るようにしたので、少ないコーディング量で、既存の関
係データベースに格納されている情報を利用することが
可能となる。
のように、関係データベースのスキーマ定義から、オブ
ジェクトのクラス定義を生成するとともに、データベー
スへのアクセス管理オブジェクトのクラス定義を生成
し、上記生成されたオブジェクトのクラス定義とアクセ
ス管理オブジェクトを用いて、既存の関係データベース
中の特定テーブルの各レコードを変換して、オブジェク
ト指向プログラム中で一つのオブジェクトとして利用す
るようにしたので、少ないコーディング量で、既存の関
係データベースに格納されている情報を利用することが
可能となる。
【0016】本発明の請求項2の発明においては、既存
関係データベースのテーブルのスキーマ定義と指定記述
から、オブジェクトのクラス定義を生成するとともに、
データベースへのアクセス管理オブジェクトのクラス定
義を生成し、上記生成されたクラス定義とアクセス管理
オブジェクトを用いて、既存の関係データベース中の特
定テーブルの各レコードの特定部分を変換して、オブジ
ェクト指向プログラム中で一つのオブジェクトとして利
用するようにしたので、少ないコーディング量で、既存
のデータベースのテーブル内の指定されたフィールドの
み対象としたオブジェクトを利用することができる。
関係データベースのテーブルのスキーマ定義と指定記述
から、オブジェクトのクラス定義を生成するとともに、
データベースへのアクセス管理オブジェクトのクラス定
義を生成し、上記生成されたクラス定義とアクセス管理
オブジェクトを用いて、既存の関係データベース中の特
定テーブルの各レコードの特定部分を変換して、オブジ
ェクト指向プログラム中で一つのオブジェクトとして利
用するようにしたので、少ないコーディング量で、既存
のデータベースのテーブル内の指定されたフィールドの
み対象としたオブジェクトを利用することができる。
【0017】本発明の請求項3の発明においては、既存
関係データベースのテーブルのスキーマ定義と分類指定
記述から、オブジェクトのクラス定義を生成するととも
に、データベースへのアクセス管理オブジェクトのクラ
ス定義を生成し、上記自動生成されたクラス定義とアク
セス管理オブジェクトを用いて、既存の関係データベー
ス中の特定テーブル中で特定の分類に属する各レコード
を変換して、オブジェクト指向プログラム中で一つのオ
ブジェクトとして利用するようにしたので、少ないコー
ディング量で、既存データベースのテーブル内の特注部
品のみを対象としたオブジェクトを利用することができ
る。
関係データベースのテーブルのスキーマ定義と分類指定
記述から、オブジェクトのクラス定義を生成するととも
に、データベースへのアクセス管理オブジェクトのクラ
ス定義を生成し、上記自動生成されたクラス定義とアク
セス管理オブジェクトを用いて、既存の関係データベー
ス中の特定テーブル中で特定の分類に属する各レコード
を変換して、オブジェクト指向プログラム中で一つのオ
ブジェクトとして利用するようにしたので、少ないコー
ディング量で、既存データベースのテーブル内の特注部
品のみを対象としたオブジェクトを利用することができ
る。
【0018】
【実施例】図2〜図9は本発明の第1の実施例のシステ
ム構成を示す図である。図2において、11はスキーマ
情報読込部であり、スキーマ情報読込部11は図3に示
すように、テーブル名読込部11aとフィールド読込部
11bから構成され、関係データベースからテーブル名
およびフィールド名と型を読み込む。12はクラス名決
定部であり、クラス名決定部12は、スキーマ情報読込
部11において読み込まれたテーブル名に基づきオブジ
ェクトプログラムにおけるレコードクラス名とイテレー
タクラス名を決定する。
ム構成を示す図である。図2において、11はスキーマ
情報読込部であり、スキーマ情報読込部11は図3に示
すように、テーブル名読込部11aとフィールド読込部
11bから構成され、関係データベースからテーブル名
およびフィールド名と型を読み込む。12はクラス名決
定部であり、クラス名決定部12は、スキーマ情報読込
部11において読み込まれたテーブル名に基づきオブジ
ェクトプログラムにおけるレコードクラス名とイテレー
タクラス名を決定する。
【0019】13はレコードクラス定義生成部であり、
レコードクラス定義生成部13は図4に示すように、レ
コードクラス定義ヘッダ生成部13aとデータメンバ定
義生成部13bとコンストラクタ仕様生成部13cとデ
ストラクタ仕様生成部13dとレコードクラス定義フッ
タ生成部13eから構成されている。14はレコードク
ラスコンストラクタ生成部であり、レコードクラスコン
ストラクタ生成部14は図5に示すように、コンストラ
クタヘッダ生成部14aと整数フィールド初期化処理生
成部14bと文字列フィールド初期化処理生成部14c
から構成される。
レコードクラス定義生成部13は図4に示すように、レ
コードクラス定義ヘッダ生成部13aとデータメンバ定
義生成部13bとコンストラクタ仕様生成部13cとデ
ストラクタ仕様生成部13dとレコードクラス定義フッ
タ生成部13eから構成されている。14はレコードク
ラスコンストラクタ生成部であり、レコードクラスコン
ストラクタ生成部14は図5に示すように、コンストラ
クタヘッダ生成部14aと整数フィールド初期化処理生
成部14bと文字列フィールド初期化処理生成部14c
から構成される。
【0020】15はレコードクラスデストラクタ生成部
であり、レコードクラスデストラクタ生成部15は図6
に示すようにデストラクタヘッダ生成部15aと文字列
フィールド処理生成部15bから構成される。16はイ
テレータクラス定義生成部であり、イテレータクラス定
義生成部16は図7に示すように、イテレータクラス定
義ヘッダ生成部16aとコンストラクタ仕様生成部16
bと検索関数仕様生成部16cから構成される。
であり、レコードクラスデストラクタ生成部15は図6
に示すようにデストラクタヘッダ生成部15aと文字列
フィールド処理生成部15bから構成される。16はイ
テレータクラス定義生成部であり、イテレータクラス定
義生成部16は図7に示すように、イテレータクラス定
義ヘッダ生成部16aとコンストラクタ仕様生成部16
bと検索関数仕様生成部16cから構成される。
【0021】17はイテレータクラスコンストラクタ生
成部であり、イテレータクラスコンストラクタ生成部1
7は、図8に示すようにコンストラクタヘッダ生成部1
7aとテーブル名指定処理生成部17bとコンストラク
タ後処理生成部17cから構成される。18はイテレー
タクラス検索関数生成部であり、イテレータクラス検索
関数生成部18は図9に示すように、検索関数ヘッダ生
成部18aとフィールドバッファ定義生成部18bと初
期処理生成部18cとバッファ結合処理生成部18dと
中間処理生成部18eとオブジェクト生成処理生成部1
8fと終了処理生成部18gから構成されている。
成部であり、イテレータクラスコンストラクタ生成部1
7は、図8に示すようにコンストラクタヘッダ生成部1
7aとテーブル名指定処理生成部17bとコンストラク
タ後処理生成部17cから構成される。18はイテレー
タクラス検索関数生成部であり、イテレータクラス検索
関数生成部18は図9に示すように、検索関数ヘッダ生
成部18aとフィールドバッファ定義生成部18bと初
期処理生成部18cとバッファ結合処理生成部18dと
中間処理生成部18eとオブジェクト生成処理生成部1
8fと終了処理生成部18gから構成されている。
【0022】図10〜図18は本実施例における処理手
順を示す図であり、図10は全体の動作の概要を示し、
図11〜図18は図10の各ステップの詳細動作を示し
ている。また、図19は、上記図10〜図18に示した
実施例により生成される、前記図33に示したテーブル
Partに対応するPartRecordクラス定義であり、また、図
20、図21、図22はそのアクセス管理オブジェクト
であるPartIterクラス定義である。
順を示す図であり、図10は全体の動作の概要を示し、
図11〜図18は図10の各ステップの詳細動作を示し
ている。また、図19は、上記図10〜図18に示した
実施例により生成される、前記図33に示したテーブル
Partに対応するPartRecordクラス定義であり、また、図
20、図21、図22はそのアクセス管理オブジェクト
であるPartIterクラス定義である。
【0023】次に、図10〜図22により本実施例につ
いて説明する。 (1) 図10のステップS1において、関係データベース
のスキーマ情報を読み込む。図11(a)に示すよう
に、テーブル名(この場合はテーブル名はPart)とフィ
ールド名と型(この場合は、フィールド名は[code],[na
me],[description] 、型は整数と文字列)を読み込む。 (2) 図10のステップS2において、クラス名を決定す
る。
いて説明する。 (1) 図10のステップS1において、関係データベース
のスキーマ情報を読み込む。図11(a)に示すよう
に、テーブル名(この場合はテーブル名はPart)とフィ
ールド名と型(この場合は、フィールド名は[code],[na
me],[description] 、型は整数と文字列)を読み込む。 (2) 図10のステップS2において、クラス名を決定す
る。
【0024】図11(b)に示すように、”テーブル名
Record”をレコードクラス名(この場合はPartRecordと
なる)とし、”テーブル名Iter”をイテレータクラス名
(この場合はPartIterとなる)とする。 (3) 図10のステップS3において、レコードクラス定
義を生成する。図12に示すように、まず、レコードク
ラス定義ヘッダを生成する。レコードクラス定義ヘッダ
にはレコードクラス名を使用し、図19のA部が生成さ
れる。
Record”をレコードクラス名(この場合はPartRecordと
なる)とし、”テーブル名Iter”をイテレータクラス名
(この場合はPartIterとなる)とする。 (3) 図10のステップS3において、レコードクラス定
義を生成する。図12に示すように、まず、レコードク
ラス定義ヘッダを生成する。レコードクラス定義ヘッダ
にはレコードクラス名を使用し、図19のA部が生成さ
れる。
【0025】次に、データメンバ定義部を生成する(図
19のB部が生成される)。各フィールドに対して、整
数型ならばint 、文字列型ならばchar* フィールド名を
出力する。ついで、コンストラクタ仕様を生成する(図
19のC部が生成される)。この場合、各関数名はレコ
ードクラス名(PartRecord)と同一、引数部は各フィー
ルドに対して、整数型ならばint 、文字列型ならばchar
* フィールド名を出力する。
19のB部が生成される)。各フィールドに対して、整
数型ならばint 、文字列型ならばchar* フィールド名を
出力する。ついで、コンストラクタ仕様を生成する(図
19のC部が生成される)。この場合、各関数名はレコ
ードクラス名(PartRecord)と同一、引数部は各フィー
ルドに対して、整数型ならばint 、文字列型ならばchar
* フィールド名を出力する。
【0026】また、デストラクタ仕様を生成する(図1
9のD部が生成される)。デストラクタ仕様において、
関数名はレコードクラス名(PartRecord)を使用し(Pa
rtRecordの前に〜が付き、 [〜PartRecord()] とな
る)、引数は無い。次に、レコードクラス定義フッタを
生成する(図19のE部が生成される)。これは固定部
分である。 (4) 図10のステップS4において、レコードクラスコ
ンストラクタを生成する。
9のD部が生成される)。デストラクタ仕様において、
関数名はレコードクラス名(PartRecord)を使用し(Pa
rtRecordの前に〜が付き、 [〜PartRecord()] とな
る)、引数は無い。次に、レコードクラス定義フッタを
生成する(図19のE部が生成される)。これは固定部
分である。 (4) 図10のステップS4において、レコードクラスコ
ンストラクタを生成する。
【0027】図13に示すように、まず、コンストラク
ヘッダを生成する。これにより、図19のF部が生成さ
れる。関数名はレコードクラス名::レコードクラス名で
あり(この場合は、PartRecord::PartRecordとなる)、
引数部は図19のC部と同じである。次に整数フィール
ド初期化部を生成する。これにより、図19のG部が生
成され、型が整数の各フィールドに対して、フィールド
名( フィールド名)を出力する。
ヘッダを生成する。これにより、図19のF部が生成さ
れる。関数名はレコードクラス名::レコードクラス名で
あり(この場合は、PartRecord::PartRecordとなる)、
引数部は図19のC部と同じである。次に整数フィール
ド初期化部を生成する。これにより、図19のG部が生
成され、型が整数の各フィールドに対して、フィールド
名( フィールド名)を出力する。
【0028】ついで、文字列フィールド初期化部を生成
する。これにより、図19のH部が生成される。上記H
部において、型が文字列の各フィールドに対して、フィ
ールド名=new char[strlen( フィールド名)+1]; で領
域を確保し、strcpy( フィールド名, フィールド
名);でコピーをする。 (5) 図10のステップS5において、レコードクラスデ
ストラクタを生成する。
する。これにより、図19のH部が生成される。上記H
部において、型が文字列の各フィールドに対して、フィ
ールド名=new char[strlen( フィールド名)+1]; で領
域を確保し、strcpy( フィールド名, フィールド
名);でコピーをする。 (5) 図10のステップS5において、レコードクラスデ
ストラクタを生成する。
【0029】図14に示すように、まず、デストラクタ
ヘッダを生成する。生成されるデストラクタヘッダは、
図19のI部に示すように、関数名はレコードクラス
名::〜レコードクラス名である(この場合は、PartReco
rd::〜PartRecordとなる)。次に、文字列フィールド消
去部を生成する(図19のJ部が生成される)。文字列
フィールド消去部は、型が文字列の各フィールドに対し
てdelete[]フィールド名; となる。
ヘッダを生成する。生成されるデストラクタヘッダは、
図19のI部に示すように、関数名はレコードクラス
名::〜レコードクラス名である(この場合は、PartReco
rd::〜PartRecordとなる)。次に、文字列フィールド消
去部を生成する(図19のJ部が生成される)。文字列
フィールド消去部は、型が文字列の各フィールドに対し
てdelete[]フィールド名; となる。
【0030】以上で、図19に示したテーブルPartに対
応するPartRecordクラス定義が生成される。 (6) 図10のステップS6において、イテレータクラス
定義を生成する。図15に示すように、まず、イテレー
タクラス名(この場合は、PartIter)を使用して図20
のA部に示すようなイテレータクラス定義ヘッダを生成
する。その下の部分は固定部分である。
応するPartRecordクラス定義が生成される。 (6) 図10のステップS6において、イテレータクラス
定義を生成する。図15に示すように、まず、イテレー
タクラス名(この場合は、PartIter)を使用して図20
のA部に示すようなイテレータクラス定義ヘッダを生成
する。その下の部分は固定部分である。
【0031】次に、コンストラクタ仕様を生成する。生
成されるコンストラクタ仕様は、図20のB部に示すよ
うに、関数名はイテレータクラス名と同一、引数部は固
定である。ついで、検索(取り込み)関数仕様を生成す
る。検索(取り込み)関数仕様は、図20のC部に示す
ように、関数名はnext(固定)で、返す値の型はレコー
ドクラス名* である。 (7) 図10のステップS7において、イテレータクラス
コンストラクタを生成する。
成されるコンストラクタ仕様は、図20のB部に示すよ
うに、関数名はイテレータクラス名と同一、引数部は固
定である。ついで、検索(取り込み)関数仕様を生成す
る。検索(取り込み)関数仕様は、図20のC部に示す
ように、関数名はnext(固定)で、返す値の型はレコー
ドクラス名* である。 (7) 図10のステップS7において、イテレータクラス
コンストラクタを生成する。
【0032】図16に示すように、まず、コンストラク
タヘッダを生成する。生成されるコンストラクタヘッダ
は図20のD部に示すように、関数名は、イテレータク
ラス名::イテレータクラス名であり(この場合は、Part
Iter::PartIterとなる)、その下は固定部分である。次
に、dbcmd(dbproc,"select* fromテーブル名")によりテ
ーブル名指定部を生成する(図20のE部が生成され
る)。ついで、コンストラクタ後処理部を生成する(図
20のF部が生成される)。この部分は固定部分であ
る。 (8) 図10のステップS8において、イテレータクラス
検索(取り込み)関数を生成する。
タヘッダを生成する。生成されるコンストラクタヘッダ
は図20のD部に示すように、関数名は、イテレータク
ラス名::イテレータクラス名であり(この場合は、Part
Iter::PartIterとなる)、その下は固定部分である。次
に、dbcmd(dbproc,"select* fromテーブル名")によりテ
ーブル名指定部を生成する(図20のE部が生成され
る)。ついで、コンストラクタ後処理部を生成する(図
20のF部が生成される)。この部分は固定部分であ
る。 (8) 図10のステップS8において、イテレータクラス
検索(取り込み)関数を生成する。
【0033】図17に示すように、まず、検索関数ヘッ
ダを生成する。これにより、図21のG部が生成され、
関数名はイテレータクラス名::next、返す値の型はレコ
ードクラス名* となる。次に、フィールドバッファ定義
部を生成する(図21のH部が生成される)。すなわ
ち、各フィールドに対して、型と フィールド名を出力
する。
ダを生成する。これにより、図21のG部が生成され、
関数名はイテレータクラス名::next、返す値の型はレコ
ードクラス名* となる。次に、フィールドバッファ定義
部を生成する(図21のH部が生成される)。すなわ
ち、各フィールドに対して、型と フィールド名を出力
する。
【0034】ついで、初期処理部を生成する(図21の
I部が生成される)。この部分は固定部分である。次
に、図18に示すように、バッファ結合部を生成する
(図22のJ部が生成される)。すなわち、各フィール
ドに対し、整数型ならdbbind(dbproc,番号,INTBIND,(DB
INT)0,(cs BYTE")& フィールド名);、文字列型なら
dbbind(dbproc,番号,NTBSTRINGBIND,(DBINT)0,(cs BY
TE") フィールド名);となる。
I部が生成される)。この部分は固定部分である。次
に、図18に示すように、バッファ結合部を生成する
(図22のJ部が生成される)。すなわち、各フィール
ドに対し、整数型ならdbbind(dbproc,番号,INTBIND,(DB
INT)0,(cs BYTE")& フィールド名);、文字列型なら
dbbind(dbproc,番号,NTBSTRINGBIND,(DBINT)0,(cs BY
TE") フィールド名);となる。
【0035】次に、中間処理部を生成する(図22のK
部が生成される)。この部分は固定部分であり、この部
分でデータが終了するまで、関係データベースからデー
タが取り込まれる。ついで、オブジェクト生成部を生成
する(図22のL部が生成される)。この部分でオブジ
ェクトが生成され、レコードクラス名* c=new レコード
クラス名(に続いて、各フィールドに対して、整数型な
ら(int) フイールド名、文字列型ならば、(char * )
フィールド名となる。
部が生成される)。この部分は固定部分であり、この部
分でデータが終了するまで、関係データベースからデー
タが取り込まれる。ついで、オブジェクト生成部を生成
する(図22のL部が生成される)。この部分でオブジ
ェクトが生成され、レコードクラス名* c=new レコード
クラス名(に続いて、各フィールドに対して、整数型な
ら(int) フイールド名、文字列型ならば、(char * )
フィールド名となる。
【0036】ついで、終了処理部を生成する(図22の
M部が生成される)。この部分は固定部である。以上
で、図20,図21、図22に示したPartIterクラス定
義が生成される。上記のように関係データベースのスキ
ーマに基づき図19,図20,図21,図22に示した
PartRecordクラス定義、そのアクセス管理オブジェクト
であるPartIterクラス定義を生成する。一方、プログラ
マは、図23に示すプログラムをコーディングする。
M部が生成される)。この部分は固定部である。以上
で、図20,図21、図22に示したPartIterクラス定
義が生成される。上記のように関係データベースのスキ
ーマに基づき図19,図20,図21,図22に示した
PartRecordクラス定義、そのアクセス管理オブジェクト
であるPartIterクラス定義を生成する。一方、プログラ
マは、図23に示すプログラムをコーディングする。
【0037】図23において、PartIter *ci=new PartI
ter(dbproc,"code>10");は図20のD,E,F部を呼び
出す部分であり、これによりcodeの値が10以上のレコー
ドの取り込みが指定される。また、次の、PartRecord *
c; は図21、図22のG〜Mを呼び出す部分であり、
関数[body]で各オブジェクトに対する実際の処理を行
う。
ter(dbproc,"code>10");は図20のD,E,F部を呼び
出す部分であり、これによりcodeの値が10以上のレコー
ドの取り込みが指定される。また、次の、PartRecord *
c; は図21、図22のG〜Mを呼び出す部分であり、
関数[body]で各オブジェクトに対する実際の処理を行
う。
【0038】そして、上記した図19〜図23のプログ
ラムと、プログラマがコーディングしたオブジェクト指
向プログラムとをコンパイルすることにより、既存の関
係データベースに格納されている情報を利用するオブジ
ェクト指向プログラムを得ることができる。図24は本
実施例により生成された図20、図21、図22に示す
プログラムの動作を示す図である。
ラムと、プログラマがコーディングしたオブジェクト指
向プログラムとをコンパイルすることにより、既存の関
係データベースに格納されている情報を利用するオブジ
ェクト指向プログラムを得ることができる。図24は本
実施例により生成された図20、図21、図22に示す
プログラムの動作を示す図である。
【0039】図20、図21、図22に示すようにイテ
レータオブジェクトは内部に「INITIAL 」,「NEXT」、
「NOMORE」、「FINISHED」の4状態をもち、生成された
とき「INITIAL 」状態であり、next関数が呼ばれる毎に
現在の状態に従って図24に示すような処理を行う。す
なわち、図24に示すように、「INITIAL 」状態から始
まり、「INITIAL 」状態において、サーバに次のデータ
を要求して成功しかた否か判別し、成功しない場合に
は、「FINISHED」に移行して、「NULL」ポインタを返
す。また、成功した場合には、レコードデータを取り出
す準備をして「NEXT」状態に移行する。
レータオブジェクトは内部に「INITIAL 」,「NEXT」、
「NOMORE」、「FINISHED」の4状態をもち、生成された
とき「INITIAL 」状態であり、next関数が呼ばれる毎に
現在の状態に従って図24に示すような処理を行う。す
なわち、図24に示すように、「INITIAL 」状態から始
まり、「INITIAL 」状態において、サーバに次のデータ
を要求して成功しかた否か判別し、成功しない場合に
は、「FINISHED」に移行して、「NULL」ポインタを返
す。また、成功した場合には、レコードデータを取り出
す準備をして「NEXT」状態に移行する。
【0040】そして、「NEXT」状態において、次のデー
タを取り出し、成功したか否かを判別する。成功しない
場合には「NOMORE」状態に移行し、成功した場合には、
オブジェクトを生成して返し、次のレコードを取り出し
て同様な処理を行う。「NEXT」状態において、次のレコ
ードの取り出が不成功であると、上記したように「NOMO
RE」状態に移行し、「NOMORE」状態において、サーバに
次のデータを要求し、成功した場合には次のレコードデ
ータを取り出す準備をして「NEXT」に戻る。また、サー
バに次のデータを要求し、不成功であると「FINISHED」
に以降して、上記と同様「NULL」ポインタを返す。
タを取り出し、成功したか否かを判別する。成功しない
場合には「NOMORE」状態に移行し、成功した場合には、
オブジェクトを生成して返し、次のレコードを取り出し
て同様な処理を行う。「NEXT」状態において、次のレコ
ードの取り出が不成功であると、上記したように「NOMO
RE」状態に移行し、「NOMORE」状態において、サーバに
次のデータを要求し、成功した場合には次のレコードデ
ータを取り出す準備をして「NEXT」に戻る。また、サー
バに次のデータを要求し、不成功であると「FINISHED」
に以降して、上記と同様「NULL」ポインタを返す。
【0041】以上のように、図20、図21、図22に
示すイテレータオブジェクトは状態を「INITIAL 」,
「NEXT」、「NOMORE」、「FINISHED」と変化させつつ、
レコードオブジェクトを生成して順次返す。本実施例に
おいては、上記のようにオブジェクト変換装置により、
関係データベースのスキーマに基づき図19、図20、
図21、図22に示したPartRecordクラス定義、そのア
クセス管理オブジェクトであるPartIterクラス定義を生
成しているので、プログラマは図23に示す簡単なプロ
グラムを作成するだけで、既存の関係データベースに格
納されている情報を利用することが可能となる。
示すイテレータオブジェクトは状態を「INITIAL 」,
「NEXT」、「NOMORE」、「FINISHED」と変化させつつ、
レコードオブジェクトを生成して順次返す。本実施例に
おいては、上記のようにオブジェクト変換装置により、
関係データベースのスキーマに基づき図19、図20、
図21、図22に示したPartRecordクラス定義、そのア
クセス管理オブジェクトであるPartIterクラス定義を生
成しているので、プログラマは図23に示す簡単なプロ
グラムを作成するだけで、既存の関係データベースに格
納されている情報を利用することが可能となる。
【0042】図25は本発明の第2の実施例のシステム
構成を示す図である。本実施例は図2に示したシステム
にフィールド指定読込部19を付加したものであり、そ
の他の構成は図2に示したものと同様である。本実施例
においては、フィールド指定読込部19を設けて、必要
とされるフィールド名の指定を読み込み、図33に示し
たpartテーブル内の指定されたフィールドのみ対象とし
たオブジェクトを利用できるようにしたものである。
構成を示す図である。本実施例は図2に示したシステム
にフィールド指定読込部19を付加したものであり、そ
の他の構成は図2に示したものと同様である。本実施例
においては、フィールド指定読込部19を設けて、必要
とされるフィールド名の指定を読み込み、図33に示し
たpartテーブル内の指定されたフィールドのみ対象とし
たオブジェクトを利用できるようにしたものである。
【0043】すなわち、特定のプログラムモジュールに
おいて、図33のpartテーブル内の全てのフィールドを
必要とせず、例えば、codeとnameのみが必要であり、メ
モリ効率上、より小さなオブジェクトを利用したい場合
に本実施例を適用することができる。図26は本実施例
により生成されるSmallPartRecord クラス定義であり、
また、図27、図28、図29はそのアクセス管理オブ
ジェクトであるSmallPartIter クラス定義である。本実
施例においては、上記のように扱うデータがデータベー
スに格納されているデータの一部であることを明示する
ため、Small という単語を先頭にクラス名を生成する。
おいて、図33のpartテーブル内の全てのフィールドを
必要とせず、例えば、codeとnameのみが必要であり、メ
モリ効率上、より小さなオブジェクトを利用したい場合
に本実施例を適用することができる。図26は本実施例
により生成されるSmallPartRecord クラス定義であり、
また、図27、図28、図29はそのアクセス管理オブ
ジェクトであるSmallPartIter クラス定義である。本実
施例においては、上記のように扱うデータがデータベー
スに格納されているデータの一部であることを明示する
ため、Small という単語を先頭にクラス名を生成する。
【0044】その結果、生成されるプログラムは図2
6、図27、図28、図29に示すように変化する。す
なわち、図26においては、前記した図19に比べレコ
ードクラス名にSmall が付加され(この場合はSmallPar
tRecord となる)、図19のB,C,F,G,H,Jの
各部に対応した各部分で、指定されたフィールド(code
とname)のみが処理されている。
6、図27、図28、図29に示すように変化する。す
なわち、図26においては、前記した図19に比べレコ
ードクラス名にSmall が付加され(この場合はSmallPar
tRecord となる)、図19のB,C,F,G,H,Jの
各部に対応した各部分で、指定されたフィールド(code
とname)のみが処理されている。
【0045】また、図27、図28、図29において
は、前記した図20,図21、図22に比べイテレータ
クラス名にSmall が付加されて(この場合はSmallPartI
ter となる)、テーブルの一部のみを扱うことが示さ
れ、図20,図21、図22のH,J,Lの各部に対応
した各部分で、指定されたフィールドのみが処理されて
いる。また、図20,図21、図22のE部に対応した
部分では、selectとfromの間の「* 」がフィールド名の
リスト(codeとname)に置き変わっている。
は、前記した図20,図21、図22に比べイテレータ
クラス名にSmall が付加されて(この場合はSmallPartI
ter となる)、テーブルの一部のみを扱うことが示さ
れ、図20,図21、図22のH,J,Lの各部に対応
した各部分で、指定されたフィールドのみが処理されて
いる。また、図20,図21、図22のE部に対応した
部分では、selectとfromの間の「* 」がフィールド名の
リスト(codeとname)に置き変わっている。
【0046】本実施例においては、上記のように、関係
データベースのスキーマ情報から指定されたフィールド
のみを処理するSmallPartRecord クラス定義とSmallPar
tIter クラス定義を自動生成しているので、プログラマ
は、前記図23に示すプログラムをコーディングするだ
けで、partテーブル内の指定されたフィールドのみ対象
としたオブジェクトを利用することができる。
データベースのスキーマ情報から指定されたフィールド
のみを処理するSmallPartRecord クラス定義とSmallPar
tIter クラス定義を自動生成しているので、プログラマ
は、前記図23に示すプログラムをコーディングするだ
けで、partテーブル内の指定されたフィールドのみ対象
としたオブジェクトを利用することができる。
【0047】図30は本発明の第3の実施例のシステム
構成を示す図である。本実施例は図2に示したシステム
に分類指定読込部20が付加され、また、前記図8に示
したイテレータクラスコンストラクタ生成部17には、
図31に示すように、分類指定処理生成部17dが付加
される。上記分類指定読込部20は、データベースに格
納されているデータの中から特定の分類に属するレコー
ドのみを選択的する方法の指定を読み込んで、イテレー
タクラスコンストラクタ生成部17に指示を出す。ま
た、クラス名決定部12は扱うデータがデータベースに
格納されているデータの中の特定の分類に属するレコー
ドのみを明示するためSpecial と言う単語を先頭にクラ
ス名を生成する。
構成を示す図である。本実施例は図2に示したシステム
に分類指定読込部20が付加され、また、前記図8に示
したイテレータクラスコンストラクタ生成部17には、
図31に示すように、分類指定処理生成部17dが付加
される。上記分類指定読込部20は、データベースに格
納されているデータの中から特定の分類に属するレコー
ドのみを選択的する方法の指定を読み込んで、イテレー
タクラスコンストラクタ生成部17に指示を出す。ま
た、クラス名決定部12は扱うデータがデータベースに
格納されているデータの中の特定の分類に属するレコー
ドのみを明示するためSpecial と言う単語を先頭にクラ
ス名を生成する。
【0048】その結果、特注部品に対応するオブジェク
トであるSpecialPartRecord クラスと、そのアクセス管
理オブジェクトであるSpecialPartIter クラス定義が生
成される。例えば、前記図33に示されるPartテーブル
に一般部品と特注部品のレコードが格納されており、特
に、nameフィールドの値が "ZZ" で始まる場合にそのレ
コードが特注部品である場合、本実施例では、特注部品
に対応するオブジェクトであるSpecialPartRecord クラ
ス定義と、そのアクセス管理オブジェクトであるSpecia
lPartIter クラス定義を自動生成が生成される。
トであるSpecialPartRecord クラスと、そのアクセス管
理オブジェクトであるSpecialPartIter クラス定義が生
成される。例えば、前記図33に示されるPartテーブル
に一般部品と特注部品のレコードが格納されており、特
に、nameフィールドの値が "ZZ" で始まる場合にそのレ
コードが特注部品である場合、本実施例では、特注部品
に対応するオブジェクトであるSpecialPartRecord クラ
ス定義と、そのアクセス管理オブジェクトであるSpecia
lPartIter クラス定義を自動生成が生成される。
【0049】ここで、本実施例において生成されるSpec
ialPartRecord クラス定義は前記図26に示したPartRe
cordクラス定義と本質的に同一のものであり、また、Sp
ecialPartIter クラス定義は前記図27、図28、図2
9に示したものと一部のみが異なり、その他の部分は本
質的に同一である。図32は本実施例により生成される
アクセス管理オブジェクトSpecialPartIter クラス定義
の一部を示す図であり、同図は、前記図27における
D,E,F部分のみを示しており、その他の部分は、特
定の分類に属するデータのみを扱うことを示すためクラ
ス定義とイテレータクラス定義のレコードクラス名、イ
テレータクラス名にSpecial が付加される点を除き同一
である。
ialPartRecord クラス定義は前記図26に示したPartRe
cordクラス定義と本質的に同一のものであり、また、Sp
ecialPartIter クラス定義は前記図27、図28、図2
9に示したものと一部のみが異なり、その他の部分は本
質的に同一である。図32は本実施例により生成される
アクセス管理オブジェクトSpecialPartIter クラス定義
の一部を示す図であり、同図は、前記図27における
D,E,F部分のみを示しており、その他の部分は、特
定の分類に属するデータのみを扱うことを示すためクラ
ス定義とイテレータクラス定義のレコードクラス名、イ
テレータクラス名にSpecial が付加される点を除き同一
である。
【0050】図32においては、イテレータクラスコン
ストラクタ生成部の1コンポーネントである分類指定処
理生成部17dが、分類指定読込み部20の指示によっ
て、同図の「*」の部分を生成し、特定の分類に属する
データのみが処理される。本実施例においては、上記の
ように、関係データベースのスキーマ情報から特注部品
のみに対応するオブジェクトであるSpecialPartRecord
クラス定義とSpecialPartIter クラス定義を自動生成し
ているので、プログラマは、前記図23に示すプログラ
ムをコーディングするだけで、partテーブル内の特注部
品のみを対象としたオブジェクトを利用することができ
る。
ストラクタ生成部の1コンポーネントである分類指定処
理生成部17dが、分類指定読込み部20の指示によっ
て、同図の「*」の部分を生成し、特定の分類に属する
データのみが処理される。本実施例においては、上記の
ように、関係データベースのスキーマ情報から特注部品
のみに対応するオブジェクトであるSpecialPartRecord
クラス定義とSpecialPartIter クラス定義を自動生成し
ているので、プログラマは、前記図23に示すプログラ
ムをコーディングするだけで、partテーブル内の特注部
品のみを対象としたオブジェクトを利用することができ
る。
【0051】
【発明の効果】以上説明したように、本発明において
は、オブジェクトのクラス定義と、データベースへのア
クセスを管理するオブジェクトのクラス定義を自動生成
しているので、プログラマが簡単なプログラムをコーデ
ィングするだけで、既存の関係データベースのテーブル
のレコードを利用することができる。
は、オブジェクトのクラス定義と、データベースへのア
クセスを管理するオブジェクトのクラス定義を自動生成
しているので、プログラマが簡単なプログラムをコーデ
ィングするだけで、既存の関係データベースのテーブル
のレコードを利用することができる。
【図1】本発明の原理図である。
【図2】本発明の第1の実施例のシステム構成を示す図
である。
である。
【図3】図2におけるスキーマ情報読込部の構成を示す
図である。
図である。
【図4】図2におけるレコードクラス定義生成部の構成
を示す図である。
を示す図である。
【図5】図2におけるレコードクラスコンストラクタ生
成部の構成を示す図である。
成部の構成を示す図である。
【図6】図2におけるレコードクラスデストラクタ生成
部の構成を示す図である。
部の構成を示す図である。
【図7】図2におけるイテレータクラス定義生成部の構
成を示す図である。
成を示す図である。
【図8】図2におけるイテレータクラスコンストラクタ
生成部の構成を示す図である。
生成部の構成を示す図である。
【図9】図2におけるイテレータクラス検索関数生成部
の構成を示す図である。
の構成を示す図である。
【図10】本実施例における処理手順全体の動作の概要
を示す図である。
を示す図である。
【図11】図10におけるスキーマ読込動作、クラス名
決定動作を示す図である。
決定動作を示す図である。
【図12】図10におけるレコードクラス定義生成動作
を示す図である。
を示す図である。
【図13】図10におけるレコードクラスコンストラク
タ生成動作を示す図である。
タ生成動作を示す図である。
【図14】図10におけるレコードクラスデストラクタ
生成動作を示す図である。
生成動作を示す図である。
【図15】図10におけるイテレータクラス定義生成動
作を示す図である。
作を示す図である。
【図16】図10におけるイテレータクラスコンストラ
クタ生成動作を示す図である。
クタ生成動作を示す図である。
【図17】図10におけるイテレータクラス検索関数生
成動作を示す図である。
成動作を示す図である。
【図18】図10におけるイテレータクラス検索関数生
成動作を示す図である。
成動作を示す図である。
【図19】第1の実施例により生成されるPartRecordク
ラス定義を示す図である。
ラス定義を示す図である。
【図20】第1の実施例により生成されるPartIterクラ
ス定義を示す図である。
ス定義を示す図である。
【図21】第1の実施例により生成されるPartIterクラ
ス定義を示す図である。
ス定義を示す図である。
【図22】第1の実施例により生成されるPartIterクラ
ス定義を示す図である。
ス定義を示す図である。
【図23】第1の実施例においてプログラマがコーディ
ングする部分を示す図である。
ングする部分を示す図である。
【図24】本実施例により生成されるイテレータオブジ
ェクトの動作を示す図である。
ェクトの動作を示す図である。
【図25】本発明の第2の実施例のシステム構成を示す
図である。
図である。
【図26】第2の実施例により生成されるSmallPartRec
ord クラス定義を示す図である。
ord クラス定義を示す図である。
【図27】第2の実施例により生成されるSmallPartIte
r クラス定義を示す図である。
r クラス定義を示す図である。
【図28】第2の実施例により生成されるSmallPartIte
r クラス定義を示す図である。
r クラス定義を示す図である。
【図29】第2の実施例により生成されるSmallPartIte
r クラス定義を示す図である。
r クラス定義を示す図である。
【図30】本発明の第3の実施例のシステム構成を示す
図である。
図である。
【図31】図30におけるイテレータクラスコンストラ
クタ生成部を示す図である。
クタ生成部を示す図である。
【図32】図30により生成されるSpecialPartIter ク
ラス定義の一部を示す図である。
ラス定義の一部を示す図である。
【図33】データベース中に格納されている部品テーブ
ルの一例を示す図である。
ルの一例を示す図である。
【図34】PartRecordオブジェクトのクラス定義の一例
を示す図である。
を示す図である。
【図35】データベースへのアクセス処理を実行する部
分の記述例を示す図である。
分の記述例を示す図である。
【図36】データベースへのアクセス処理を実行する部
分の記述例を示す図である。
分の記述例を示す図である。
1 既存の関係データベース 1a テーブル 1b スキーマ定義 2a クラス定義を自動生成する第1の手段 2b アクセス管理オブジェクトクラス定義を自動生
成する第2の手段 3 オブジェクト指向プログラム 3a オブジェクトのクラス定義 3b アクセス管理オブジェクトクラス定義 3c ユーザプログラム 11 スキーマ情報読込部 11a テーブル名読込部 11b フィールド読込部 12 クラス名決定部 13 レコードクラス定義生成部 13a レコードクラス定義ヘッダ生成部 13b データメンバ定義生成部 13c コンストラクタ仕様生成部 13d デストラクタ仕様生成部 13e レコードクラス定義フッタ生成部 14 レコードクラスコンストラクタ生成部 14a コンストラクタヘッダ生成部 14b 整数フィールド初期化処理生成部 14c 文字列フィールド初期化処理生成部 15 レコードクラスデストラクタ生成部 15a デストラクタヘッダ生成部 15b 文字列フィールド処理生成部 16 イテレータクラス定義生成部 16a イテレータクラス定義ヘッダ生成部 16b コンストラクタ仕様生成部 16c 検索関数仕様生成部 17 イテレータクラスコンストラクタ生成部 17a コンストラクタヘッダ生成部 17b テーブル名指定処理生成部 17c コンストラクタ後処理生成部 17d 分類指定処理生成部 18 イテレータクラス検索関数生成部 18a 検索関数ヘッダ生成部 18b フィールドバッファ定義生成部 18c 初期処理生成部 18d バッファ結合処理生成部 18e 中間処理生成部 18f オブジェクト生成処理生成部 18g 終了処理生成部 19 フィールド指定読込部 20 分類指定読込部
成する第2の手段 3 オブジェクト指向プログラム 3a オブジェクトのクラス定義 3b アクセス管理オブジェクトクラス定義 3c ユーザプログラム 11 スキーマ情報読込部 11a テーブル名読込部 11b フィールド読込部 12 クラス名決定部 13 レコードクラス定義生成部 13a レコードクラス定義ヘッダ生成部 13b データメンバ定義生成部 13c コンストラクタ仕様生成部 13d デストラクタ仕様生成部 13e レコードクラス定義フッタ生成部 14 レコードクラスコンストラクタ生成部 14a コンストラクタヘッダ生成部 14b 整数フィールド初期化処理生成部 14c 文字列フィールド初期化処理生成部 15 レコードクラスデストラクタ生成部 15a デストラクタヘッダ生成部 15b 文字列フィールド処理生成部 16 イテレータクラス定義生成部 16a イテレータクラス定義ヘッダ生成部 16b コンストラクタ仕様生成部 16c 検索関数仕様生成部 17 イテレータクラスコンストラクタ生成部 17a コンストラクタヘッダ生成部 17b テーブル名指定処理生成部 17c コンストラクタ後処理生成部 17d 分類指定処理生成部 18 イテレータクラス検索関数生成部 18a 検索関数ヘッダ生成部 18b フィールドバッファ定義生成部 18c 初期処理生成部 18d バッファ結合処理生成部 18e 中間処理生成部 18f オブジェクト生成処理生成部 18g 終了処理生成部 19 フィールド指定読込部 20 分類指定読込部
Claims (3)
- 【請求項1】 既存の関係データベースを利用するオブ
ジェクト指向プログラムの開発を支援するためのオブジ
ェクト変換装置であって、 既存関係データベースのテーブルのスキーマ定義から、
オブジェクトのクラス定義を自動生成する第1の手段
と、 上記スキーマ定義から、データベースへのアクセスを管
理するオブジェクトのクラス定義を自動生成する第2の
手段とを備え、 上記第1の手段によりオブジェクトのクラス定義を生成
するとともに、第2の手段によりデータベースへのアク
セス管理オブジェクトのクラス定義を生成し、 上記生成されたオブジェクトのクラス定義とアクセス管
理オブジェクトを用いて、既存の関係データベース中の
特定テーブルの各レコードを変換して、オブジェクト指
向プログラム中で一つのオブジェクトとして利用するこ
とを特徴とするオブジェクト変換装置。 - 【請求項2】 既存の関係データベースを利用するオブ
ジェクト指向プログラムの開発を支援するためのオブジ
ェクト変換装置であって、 既存関係データベースのテーブルのスキーマ定義と指定
記述から、オブジェクトのクラス定義を自動生成する第
1の手段と、 上記スキーマ定義と指定記述から、データベースへのア
クセスを管理するオブジェクトのクラス定義を自動生成
する第2の手段とを備え、 上記第1の手段によりオブジェクトのクラス定義を生成
するとともに、第2の手段によりデータベースへのアク
セス管理オブジェクトのクラス定義を生成し、 上記生成されたクラス定義とアクセス管理オブジェクト
を用いて、既存の関係データベース中の特定テーブルの
各レコードの特定部分を変換して、オブジェクト指向プ
ログラム中で一つのオブジェクトとして利用することを
特徴とするオブジェクト変換装置。 - 【請求項3】 既存の関係データベースを利用するオブ
ジェクト指向プログラムの開発を支援するためのオブジ
ェクト変換装置であって、 既存関係データベースのテーブルのスキーマ定義と分類
指定記述から、オブジェクトのクラス定義を自動生成す
る第1の手段と、 上記スキーマ定義と分類指定記述から、データベースへ
のアクセスを管理するオブジェクトのクラス定義を自動
生成する第2の手段とを備え、 上記第1の手段によりオブジェクトのクラス定義を生成
するとともに、第2の手段によりデータベースへのアク
セス管理オブジェクトのクラス定義を生成し、 上記自動生成されたクラス定義とアクセス管理オブジェ
クトを用いて、既存の関係データベース中の特定テーブ
ル中で特定の分類に属する各レコードを変換して、オブ
ジェクト指向プログラム中で一つのオブジェクトとして
利用することを特徴とするオブジェクト変換装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7029218A JPH08221274A (ja) | 1995-02-17 | 1995-02-17 | オブジェクト変換装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7029218A JPH08221274A (ja) | 1995-02-17 | 1995-02-17 | オブジェクト変換装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH08221274A true JPH08221274A (ja) | 1996-08-30 |
Family
ID=12270069
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP7029218A Pending JPH08221274A (ja) | 1995-02-17 | 1995-02-17 | オブジェクト変換装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH08221274A (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH113359A (ja) * | 1997-05-09 | 1999-01-06 | Internatl Business Mach Corp <Ibm> | 照会処理システム、方法及びプログラム |
| JPH1153234A (ja) * | 1997-08-08 | 1999-02-26 | N T T Data:Kk | データベース利用システム |
-
1995
- 1995-02-17 JP JP7029218A patent/JPH08221274A/ja active Pending
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH113359A (ja) * | 1997-05-09 | 1999-01-06 | Internatl Business Mach Corp <Ibm> | 照会処理システム、方法及びプログラム |
| JPH1153234A (ja) * | 1997-08-08 | 1999-02-26 | N T T Data:Kk | データベース利用システム |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3272014B2 (ja) | 階層構造データ処理情報を含むデータ処理辞書を作成する方法及び装置 | |
| US7047524B1 (en) | Object oriented ADN and method of converting a non-object oriented computer language to an object oriented computer language | |
| US8127272B2 (en) | Automated source code generation | |
| US7831614B2 (en) | System and method for generating SQL using templates | |
| US5787450A (en) | Apparatus and method for constructing a non-linear data object from a common gateway interface | |
| JPH10505440A (ja) | プログラミング言語−具体的データファイルのsqlベースの操作を可能にするコンピュータベースの情報アクセス方法および装置 | |
| JP3205406B2 (ja) | 参照対象変数決定処理方法および翻訳処理システム | |
| JP2006244478A (ja) | 構成可能なクエリを形成するapiおよびクエリ言語 | |
| US20020107867A1 (en) | System and method for mapping structured document to structured data of program language and program for executing its method | |
| US20120117551A1 (en) | Optimization of declarative queries | |
| US20040064788A1 (en) | System and method for generating source code for an XML application | |
| JPH0358249A (ja) | フアイルのアクセス方法 | |
| EP1755050A1 (en) | A data processing system and method of storing a dataset having a hierarchical data structure in a database | |
| CN119201061A (zh) | 基于Excel文件的代码生成方法、装置、电子设备及介质 | |
| CN100527131C (zh) | 一种ims数据库互动式访问方法和工具 | |
| JP2808893B2 (ja) | テキスト変換方法 | |
| CN114942766B (zh) | 基于SQL数据库的Excel函数转换方法及相关装置 | |
| US6564200B1 (en) | Apparatus for cross referencing routines and method therefor | |
| CN115857888B (zh) | 一种数据处理方法、装置、设备以及存储介质 | |
| JPH1185787A (ja) | リンク構造を有する情報の検索方法及び登録方法 | |
| JP3122988B2 (ja) | キー値の問い合わせシステム | |
| US7676477B1 (en) | Utilities for deriving values and information from within an interlocking trees data store | |
| JP2004252536A (ja) | プログラム開発支援装置 | |
| JP3008483B2 (ja) | リンク処理装置 | |
| CN121658522A (zh) | 一种基于图谱归一化与直接寻址索引的数据协同处理方法及系统 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20020709 |