(57)【要約】【課題】  客体指向プログラムが記録された貯蔵媒体を提供する。【解決手段】  任意のデータを貯蔵する客体変数及び前記客体変数を通じて前記データに対して行われる複数の関数を含む客体で構成される客体指向プログラムが記録された貯蔵媒体において、客体変数の名称を選択的に貯蔵できる変数識別子と、前記客体変数に貯蔵されるデータの変数タイプを選択的に貯蔵できる変数タイプ情報と、前記データが貯蔵されているメモリアドレスを指示するアドレス情報とを含むマスタクラスを備え、前記マスタクラスは、前記変数識別子、変数タイプ及びデータ値が入力され前記客体変数に前記データが貯蔵されるようにするデータ貯蔵関数を含むことを特徴とする。【選択図】  図４
2004252973.tif 000002
【特許請求の範囲】
【請求項１】
任意のデータを貯蔵する客体変数及び前記客体変数を通じて前記データに対して行われる複数の関数を含む客体で構成される客体指向プログラムが記録された貯蔵媒体において、
客体変数の名称を選択的に貯蔵できる変数識別子と、前記客体変数に貯蔵されるデータの変数タイプを選択的に貯蔵できる変数タイプ情報と、前記データが貯蔵されているメモリアドレスを指示するアドレス情報とを含むマスタクラスを備え、
前記マスタクラスは、前記変数識別子、変数タイプ及びデータ値が入力され前記客体変数に前記データが貯蔵されるようにするデータ貯蔵関数を含むことを特徴とする客体指向プログラムが記録された貯蔵媒体。
【請求項２】
前記変数の名称は文字列として表現されることを特徴とする請求項１に記載の客体指向プログラムが記録された貯蔵媒体。
【請求項３】
前記変数タイプ情報は文字列として表現され、該当客体変数が少なくとも一つのデータを貯蔵できる他の客体変数を指示するようにマスタクラスを含むことを特徴とする請求項２に記載の客体指向プログラムが記録された貯蔵媒体。
【請求項４】
前記アドレス情報は一つ以上のデータを貯蔵できるようにポインターのリストで構成されることを特徴とする請求項３に記載の客体指向プログラムが記録された貯蔵媒体。
【請求項５】
前記データ貯蔵関数から入力される前記変数識別子は、客体内の客体変数が他の客体変数を指示することにより形成される客体間の連結関係である所定のデータ構造上の位置情報を備えており、前記データ貯蔵関数は前記位置情報に該当する位置の客体変数に前記データを貯蔵することを特徴とする請求項４に記載の客体指向プログラムが記録された貯蔵媒体。
【請求項６】
前記データの構造は客体変数間の連結に応じてレイヤが増加する構造であり、前記位置情報はデータを貯蔵しようとする客体変数に階層的に連結された上位レイヤに位置する他の客体変数の変数識別子と、前記客体変数の変数識別子をそれぞれ区分する区分子とを含むことを特徴とする請求項５に記載の客体指向プログラムが記録された貯蔵媒体。
【請求項７】
前記データ貯蔵関数は前記データの構造上の位置情報に該当する位置に客体変数が存在する場合、変数タイプを整数配列及び文字列配列のようなアレイ形式の変数タイプに設定し、前記客体変数に前記データを追加貯蔵することを特徴とする請求項６に記載の客体指向プログラムが記録された貯蔵媒体。
【請求項８】
前記データ貯蔵関数は前記位置情報のうち、各レイヤに位置する他の客体変数が前記データの構造上に存在しない場合、変数識別子として前記各レイヤに存在しない客体変数の名称を、変数タイプとしてマスタクラスを有する客体を生成することを特徴とする請求項７に記載の客体指向プログラムが記録された貯蔵媒体。
【請求項９】
前記マスタクラスは客体内のデータを文字列に変換する文字列変換関数をさらに備え、前記文字列変換関数は該当客体変数を変数識別子、変数タイプ、データの個数及びデータの内容を含む文字列に変換することを特徴とする請求項１乃至請求項８のうち、いずれか１項に記載の客体指向プログラムが記録された貯蔵媒体。
【請求項１０】
前記文字列変換関数は該当客体変数の変数タイプを確認してマスタクラスである場合、データの個数だけ再帰的に反復実行されることを特徴とする請求項９に記載の客体指向プログラムが記録された貯蔵媒体。
【請求項１１】
前記変換された文字列は各客体変数に対して変換された文字列の間に客体変数区分子をさらに含むことを特徴とする請求項９に記載の客体指向プログラムが記録された貯蔵媒体。
【請求項１２】
前記マスタクラスは客体内のデータを含む文字列から本来の客体に復元する客体復元関数をさらに備え、前記客体復元関数は前記変換された文字列から分離された各客体変数に対する情報に前記データ貯蔵関数を適用して復元することを特徴とする請求項９に記載の客体指向プログラムが記録された貯蔵媒体。
【請求項１３】
前記客体復元関数は前記変換された文字列から分離された各客体変数に対する情報のうち、データの個数に応じてメモリを割当てられ、各データを前記メモリに順次に貯蔵することを特徴とする請求項１２に記載の客体指向プログラムが記録された貯蔵媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は任意のデータを貯蔵する客体変数及び前記客体変数を通じて前記データに対して行われる複数の関数を含む客体で構成される客体指向プログラムが記録された貯蔵媒体に係り、より詳しくは、一つのクラスから各種の客体を動的に生成することにより、クラスの設計時間、プログラムの開発時間及びコストの節減が可能な客体指向プログラムが記録された貯蔵媒体を提供することにある。
【背景技術】
【０００２】
既存の手続き指向プログラム(Procedural-Oriented Program)はデータの構造とそのデータを変化させるアルゴリズムで構成される。このような手続き指向プログラムはデータと関数の連関関係を良好に表現できないため、アルゴリズムの変更による補修維持及びソースコードの再使用には限界がある。
【０００３】
したがって、補修維持及び再使用が容易なプログラムの製作のために客体指向プログラム(Object-Oriented Program)との概念が創案されたが、これは客体固有のデータとそのデータを処理する関数で構成される客体がメッセージを通じて相互通信を行うことにより所望の結果を得るように構成される。
【０００４】
ここで、客体とは効率的な情報管理のために意味を付与し、分類する概念的な単位であって、特定のデータと関連された関数を持つプログラムモジュールをいう。データはその客体の属性貯蔵に使用され、関数はその客体の実行可能な機能を定義する。各客体は属性を貯蔵するために少なくとも一つ以上の変数を備えているべきである。Ｃ++、Java（登録商標）及びPythonなどの客体指向プログラミング言語において、客体は前記客体の共通特性及び動作を包含/実行するようにフレームを提供する客体クラスから生成される。
【０００５】
ここで、各客体は所定の変数タイプを有する固定個数の変数に貯蔵されたデータを持つことが一般的である。したがって、変数タイプ又は変数個数が違う場合は各々のクラスを定義して使用するべきである。
【０００６】
これにより、各種の客体を一つのクラスから生成することにより、客体指向プログラミング言語の本来の目的である補修維持及び再使用を最大限達成せしめる技術に対する提案が必要である。
【０００７】
一方、客体直列化とは客体の内容をファイル又はネットヨークを通じてバイトストリームで送受信するために客体をストリーム化することをいう。さらに、直列化されたデータから本来の客体に復元することを脱直列化という。このような客体の直列化により得られる長所は客体自体の内容を入/出力の形式にかかわらず、客体をファイルに貯蔵することにより持続性(persistency)を提供することができ、客体自体をネットワークを通じて手軽に交換できるということにある。
【０００８】
Ｃ++はかかる機能を行えるようにオブジェクトクラス内に直列化メソッド(serialization method)を備えて各種の基本型と客体に対する直列化を行うように支援している。したがって、客体直列化のためには各クラスに直列化メソッドをオーバーライド(override)して各クラスの特性に合わせてカスタマイジング(customizing)する作業が行われるべき不便がある。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
したがって、本発明の目的は、多様な種類の客体を生成するように変数タイプや変数個数に限定されない新たな一つのクラスを提供することにより、クラスの設計時間、プログラムの開発時間及びコストを節減できる客体指向プログラムが記録された貯蔵媒体を提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明は、任意のデータを貯蔵する客体変数及び前記客体変数を通じて前記データに対して行われる複数の関数を含む客体で構成される客体指向プログラムが記録された貯蔵媒体において、客体変数の名称を選択的に貯蔵できる変数識別子と、前記客体変数に貯蔵されるデータの変数タイプを選択的に貯蔵できる変数タイプ情報と、前記データが貯蔵されているメモリアドレスを指示するアドレス情報とを含むマスタクラスを備え、前記マスタクラスは、前記変数識別子、変数タイプ及びデータ値が入力され前記客体変数に前記データが貯蔵されるようにするデータ貯蔵関数を含むことを特徴とする。
【００１１】
ここで、前記変数の名称は文字列として表現されることが好ましい。
【００１２】
また、前記変数タイプ情報は文字列として表現され、該当客体変数が少なくとも一つのデータを貯蔵できる他の客体変数を指示するようにマスタクラスを含むことが好ましい。
さらに、前記アドレス情報は一つ以上のデータを貯蔵できるようにポインターのリストで構成されることが好ましい。
【００１３】
前記データ貯蔵関数から入力される前記変数識別子は、客体内の客体変数が他の客体変数を指示することにより形成される客体間の連結関係である所定のデータ構造上の位置情報を備えており、前記データ貯蔵関数は前記位置情報に該当する位置の客体変数に前記データを貯蔵することが好ましい。
【００１４】
ここで、前記データの構造は客体変数間の連結に応じてレイヤが増加する構造であり、前記位置情報はデータを貯蔵しようとする客体変数に階層的に連結された上位レイヤに位置する他の客体変数の変数識別子と、前記客体変数の変数識別子をそれぞれ区分する区分子とを含むことができる。
【００１５】
また、前記データ貯蔵関数は前記データの構造上の位置情報に該当する位置に客体変数が存在する場合、変数タイプを整数配列及び文字列配列のようなアレイ形式の変数タイプに設定し、前記客体変数に前記データを追加貯蔵することが好ましい。
【００１６】
さらに、前記データ貯蔵関数は前記位置情報のうち、各レイヤに位置する他の客体変数が前記データの構造上に存在しない場合、変数識別子として前記各レイヤに存在しない客体変数の名称を、変数タイプとしてマスタクラスを有する客体を生成することが好ましい。
【００１７】
一方、本発明によるマスタクラスは客体内のデータを文字列に変換する文字列変換関数をさらに備え、前記文字列変換関数は該当客体変数を変数識別子、変数タイプ、データの個数及びデータの内容を含む文字列に変換することが好ましい。
【００１８】
また、前記文字列変換関数は該当客体変数の変数タイプを確認してマスタクラスである場合、データの個数だけ再帰的に反復実行されることが効果的である。
【００１９】
ここで、前記変換された文字列は各客体変数に対して変換された文字列の間に客体変数区分子をさらに含むことが好ましい。
【００２０】
一方、本発明による前記マスタクラスは客体内のデータを含む文字列から本来の客体に復元する客体復元関数をさらに備え、前記客体復元関数は前記変換された文字列から分離された各客体変数に対する情報に前記データ貯蔵関数を適用して復元することが好ましい。
【００２１】
ここで、前記客体復元関数は前記変換された文字列から分離された各客体変数に対する情報のうち、データの個数に応じてメモリを割当てられ、各データを前記メモリに順次に貯蔵することが好ましい。
【発明の効果】
【００２２】
本発明によれば、いずれの種類の客体でも生成が可能なマスタクラスを提供することにより、具現内容の変更によるプログラムインターフェース環境を変更せずに手軽に機能を追加するか変更及び削除することができる。
【００２３】
さらに、相異なる二つ以上のプログラムが連動運営される場合でも、内部的に構成されたメッセージ客体を文字列に変換し、これを伝送復元して本来と同じメッセージ客体を再構成することにより、すべてのプログラムで標準化された同じインターフェースを有するプログラムとして構成することができる。したがって、クラスの設計時間、プログラムの開発時間及びコストの節減が可能になる。
【発明を実施するための最良の形態】
【００２４】
以下、添付図面を参照して本発明について詳細に説明する。
図１は本発明の好ましい実施例によるマスタクラスの構成図である。示したように、本発明によるマスタクラスは変数識別子（item discriminator）であるメッセージの名称、変数(item)タイプ情報である変数タイプ及びアドレス情報であるメモリアドレスに該当する属性を有する。
【００２５】
メッセージの名称は文字列形式の変数タイプとして宣言され、客体変数の変数名を貯蔵できる変数識別子を指示する。
【００２６】
変数タイプは文字列形式の変数タイプとして宣言され、変数名として指示されるデータの変数タイプ情報を示す。
【００２７】
ここで、変数タイプは整数、実数、文字列、整数配列、実数配列及び文字列配列などのように既存の変数タイプのみならず、本発明で定義しているマスタクラス型、すなわち、メッセージ客体(object)クラスの変数タイプも含むことができる。
【００２８】
既存のクラス構成では、客体変数と該当客体変数の変数タイプは予めクラスの設計時に決定されて固定されるため、客体内の関数を用いて各客体変数に貯蔵されているデータに接近しようとすると、関数は客体変数に該当する変数タイプを有する因子を媒介とするべきである。
【００２９】
しかし、本発明のメッセージ客体クラスは、関数の因子として客体変数を指定する変数識別子と、その変数タイプとを受けるため、客体変数の変数タイプが予め決定されず、データを該当客体変数に貯蔵するときに動的に決定される。
【００３０】
アドレス情報は変数識別子として指定される一つ又は複数の同じ変数タイプのデータを指示するポインターのリストで構成される。従って、客体変数は単一変数型又はアレイ形式の変数タイプを含むことができ、リンクドリスト(linked list)構造によるサイズの制限もない。
【００３１】
リンクドリストはＣで容易に具現できる有用なデータ貯蔵方法であって、データ間の結合がデータ自体内に含まれている情報によりポインターの形式で定義される特性を持つ。ここで、ポインターは次のデータの記憶場所に対する情報を提供してデータ間の連結方法を提供する。
【００３２】
前記アドレス情報はポインターのリストのみで構成されるため、実際に指定可能な変数タイプには制限がない。
【００３３】
さらに、該当客体変数が少なくとも一つのデータを貯蔵する他の客体変数を指示するようにマスタクラス客体のポインターをアドレス情報に貯蔵される客体変数の変数タイプとして使用することにより、前記客体変数に連結された少なくとも一つのマスタクラス客体でサブリストを構成できるようにする。
【００３４】
前記過程によりマスタクラスから生成された一つの客体は客体内の客体変数が他の客体変数を指示することにより形成される客体間の連結関係である複雑なツリー構造を持つデータ構造を構成することができる。
【００３５】
但し、マスタクラス客体は異種の客体変数を受容するように１番目の階層に位置する変数タイプがマスタクラス変数タイプとして選定されるべきである。これにより、マスタクラス客体から生成される一つの客体の１番目の階層に属する変数識別子は１番目の階層の変数名称を示すことでなく、生成される客体自体の名称を示すように活用できるようになる。
【００３６】
ここで、階層とは客体内の客体変数が他の客体変数を指示することにより形成される客体間の連結関係である所定のデータ構造において、連結関係による客体が位置する位置情報を含むようになる。
【００３７】
すなわち、本発明では一つの客体変数と連結される他の客体変数は相異なる階層に属し、連結関係の回数に応じて階層を表現するレイヤは増加すると定義される。
【００３８】
例えば、生成された一つの客体はレイヤ０にあると見なし、該当客体に連結されている客体変数はレイヤ１に、前記レイヤ１に位置する客体変数と連結されている客体変数はレイヤ２に位置すると指定されうる。
【００３９】
図２は本発明の好ましい実施例によるデータの位置情報を含む変数識別子を示した図である。これはデータの生成又は照会のために区分子を用いてデータの位置情報を含むことを示す。
【００４０】
レイヤ０のメッセージ名称は、上述したように、メッセージ客体自体を示す変数識別子に該当する。
【００４１】
さらに、レイヤ１のメッセージ名称はレイヤ０のアドレス情報が指示しているメッセージ客体の変数識別子に該当する。同様に、レイヤ２のメッセージ名称はレイヤ１のアドレス情報が指示しているメッセージ客体の変数識別子である。
【００４２】
また、各レイヤのメッセージ名称、すなわち、変数識別子は区分子により分離されている。本実施例では区分子として“．”を使用しているが、これに限定られず、“/”、“＠”のようにメッセージ名称として使用されない文字ならいずれもよい。
【００４３】
ここで、次のレイヤが存在する該当レイヤの変数タイプはマスタクラス型のものが好ましく、このような構成により各レイヤが指示しているデータは階層的に連結される。
【００４４】
図３Ａは本発明のデータ貯蔵関数を適用して形成されたデータ構造の例を示した図である。
【００４５】
示したように、レイヤ０には本発明により生成された客体自体を示す変数識別子である“メッセージ例”と、次のレイヤであるレイヤ１に貯蔵されているメッセージ客体変数タイプである“サンプル１”及び“サンプル２”の変数タイプと、“サンプル１”及び“サンプル２”の各々を指示するアドレス情報であるポインターが貯蔵されているメッセージ客体とが位置している。
【００４６】
レイヤ１には変数識別子“サンプル１”と、データである“サンプル文字列１”及び“サンプル文字列２”の変数タイプである文字列と、“サンプル文字列１”及び“サンプル文字列２”の各々を指示するアドレス情報であるポインターが貯蔵されているメッセージ客体とが位置している。
【００４７】
さらに、レイヤ１には変数識別子“サンプル２”と、次のレイヤであるレイヤ２に貯蔵されているメッセージ客体変数タイプである“サンプル３”及び“サンプル４”の変数タイプと、“サンプル３”及び“サンプル４”の各々を指示するアドレス情報であるポインターが貯蔵されているメッセージ客体とが位置している。
【００４８】
レイヤ２には変数識別子“サンプル３”と、データである“サンプルサブ文字列１”及び“サンプルサブ文字列２”の変数タイプである文字列と、“サンプルサブ文字列１”及び“サンプルサブ文字列２”の各々を指示するアドレス情報であるポインターが貯蔵されているメッセージ客体とが位置している。
【００４９】
さらに、レイヤ２には変数識別子“サンプル４”と、データである１００００、２００００の変数タイプである整数と、１００００及び２００００の各々を指示するアドレス情報であるポインターが貯蔵されているメッセージ客体とが位置している。
【００５０】
図３Ｂは図３Ａに示した客体変数が貯蔵しているデータ構成例を図式的に示した図である。同図において、矢印はポインターを示し、円状のボックス処理表示部はデータを示す。
【００５１】
一方、図１に示したように、マスタクラスには属性を貯蔵するための客体変数と、このような客体変数に接近してデータに所望の作業を行う複数の関数とが定義されている。
【００５２】
本発明による実施例では、データ貯蔵関数(data storing function)、データ照会関数(data retrieving function)、文字列変換関数(string conversion function)及び客体復元関数(object restoring function)が表現されているが、これに限定されず、選択的にこれらを含むこともできる。
図４は本発明によるデータ貯蔵関数の作動を示した流れ図である。
【００５３】
本発明によるデータ貯蔵関数は変数識別子、変数タイプ及びデータ値をその因子として有する。
【００５４】
まず、前記メッセージ客体クラスを定義する（Ｓ１）。
【００５５】
すなわち、客体変数の変数名称を選択的に貯蔵できる変数識別子と、前記客体変数に貯蔵されるデータの変数タイプを選択的に貯蔵できる変数タイプ情報と、前記データが貯蔵されているメモリアドレスを指示するアドレス情報とを含むマスタクラスを定義する。
【００５６】
生成しようとする位置にデータを生成するために、生成しようとするデータのデータ構造上の位置情報を含めて変数識別子を入力する(Ｓ３)。位置情報を含む変数識別子を識別子情報として称する。
【００５７】
データ構造上の位置情報は、上述したように、データが位置できるデータ構造上の階層を示すレイヤを区分する区分子を含むことが好ましい。
【００５８】
入力された識別子情報を用いて生成しようとする位置にデータを生成する。所望の生成位置にデータを生成する過程は次の通りである。
【００５９】
まず、前記識別子情報のうち、現在のレイヤ、例えば、レイヤｋのメッセージ名称に該当する情報を分離する(Ｓ５)。
【００６０】
さらに、前記識別子情報に次のレイヤ、例えば、レイヤｋ＋１に該当する情報があるかを確認する(Ｓ７)。本発明の好ましい実施例によれば、各レイヤは区分子により分離されるため、前記識別子情報に区分子がある場合は次のレイヤに該当する情報があると判断される。
【００６１】
次のレイヤに対する情報がないと判断される場合、前記識別子情報のうち、現在のレイヤｋのメッセージ名称と同じ変数識別子を有する客体変数が既にデータの構造内に存在するか否かを確認する(Ｓ９)。
【００６２】
前記識別子情報のうち、現在のレイヤｋのメッセージ名称と同じ変数識別子を有するメッセージ客体がデータの構造内に存在しない場合、生成しようとするメッセージ名称を有するメッセージ客体を生成する(Ｓ１１)。
【００６３】
前記メッセージ客体の生成は、新たなメッセージ客体の貯蔵空間を割当てられて前記現在のレイヤｋのメッセージ名称を変数識別子に貯蔵し、貯蔵しようとするデータのアドレス情報を前記割当てられたメッセージ客体のアドレス情報に貯蔵することを含む。
【００６４】
一方、前記識別子情報のうち、現在のレイヤｋのメッセージ名称と同じメッセージ客体がデータの構造内に存在する場合、貯蔵しようとするデータのアドレス情報を前記メッセージ客体のアドレス情報に追加する(Ｓ１３)。
【００６５】
前記メッセージ客体のアドレス情報に貯蔵しようとするデータのアドレス情報を追加することは前記メッセージ客体の変数タイプに応じて変化する。
【００６６】
前記メッセージ客体の変数タイプがアレイ型の変数でない場合は、前記メッセージ客体の変数タイプをアレイ型の変数に変換することが好ましい。
【００６７】
前記識別子情報に次のレイヤ、例えば、レイヤｋ＋１に該当する情報があるか確認した結果(Ｓ７)、次のレイヤに対する情報があると判断される場合、前記識別子情報のうち、現在のレイヤｋのメッセージ名称と同じメッセージ客体が既にデータの構造内に存在する否かを確認する(Ｓ１５)。
【００６８】
前記識別子情報のうち、現在のレイヤｋのメッセージ名称と同じメッセージ客体がデータの構造内に存在する場合、次のレイヤｋ＋１に移動して(Ｓ１７)、前記Ｓ５から過程を反復実行する。
【００６９】
一方、前記識別子情報のうち、現在のレイヤｋのメッセージ名称と同じメッセージ客体がデータの構造内に存在しない場合、前記識別子情報のうち、現在のレイヤｋのメッセージ名称を変数識別子とするメッセージ客体を登録する(Ｓ１９)。
【００７０】
ここで、メッセージ客体を登録することは、前記識別子情報のうち、現在のレイヤｋのメッセージ名称を変数識別子とするメッセージ客体の割当てを含む。
【００７１】
メッセージ客体を登録した後、次のレイヤｋ＋１に移動して(Ｓ１７)、前記Ｓ５から過程を反復実行する。
【００７２】
データをデータ構造上の所望の位置に生成させる前記データ貯蔵関数と、所望の位置のデータ値を読み出すデータ照会関数とは、データへの接近側面ではその流れが類似している。各メッセージ客体のアドレス情報を用いて所望の位置まで接近した後、生成の場合はデータをその位置に貯蔵し、照会の場合は該当データ値を抽出することが違う。
【００７３】
上述した方法により生成されたデータの構造において、データ値を照会する方法は図５を参照して説明する。
【００７４】
本発明のデータ照会関数はデータ値を抽出しようとするデータ値に該当する変数識別子をその因子として有する。
【００７５】
照会しようとするデータのデータ構造上の位置情報を含めて変数識別子を入力する(Ｓ２１)。
【００７６】
前記識別子情報のうち、現在のレイヤ、例えば、レイヤｋのメッセージ名称に該当する情報を分離する(Ｓ２３)。
【００７７】
さらに、前記識別子情報に次のレイヤ、例えば、レイヤｋ＋１に該当する情報があるかを確認する(Ｓ２５)。本発明の好ましい実施例によれば、各レイヤは区分子により分離されるため、前記識別子情報に区分子がある場合、次のレイヤに該当する情報があると判断される。
【００７８】
次のレイヤに対する情報がないと判断される場合、前記識別子情報のうち、現在のレイヤｋのメッセージ名称と同じ変数識別子を有するメッセージ客体が既にデータの構造内に存在するか否かを確認する(Ｓ２７)。
【００７９】
前記識別子情報のうち、現在のレイヤｋのメッセージ名称と同じ変数識別子を有するメッセージ客体がデータの構造内に存在しない場合、照会は失敗する(Ｓ２９)。
【００８０】
一方、前記識別子情報のうち、現在のレイヤｋのメッセージ名称と同じ変数識別子を有するメッセージ客体がデータの構造内に存在する場合、前記メッセージ客体のアドレス情報を用いて前記メッセージ客体のデータを抽出する(Ｓ３１)。
【００８１】
前記識別子情報に次のレイヤ、例えば、レイヤｋ＋１に該当する情報があるかを確認した結果(Ｓ２５)、次のレイヤに対する情報があると判断される場合、前記識別子情報のうち、現在のレイヤｋのメッセージ名称と同じ変数識別子を有するメッセージ客体が既にデータの構造内に存在するかを確認する(Ｓ３３)。
【００８２】
前記識別子情報のうち、現在のレイヤｋのメッセージ名称と同じ変数識別子を有するメッセージ客体がデータの構造内に存在する場合、次のレイヤｋ＋１に移動して(Ｓ３５)、前記Ｓ２３から過程を反復実行する。
【００８３】
一方、前記識別子情報のうち、現在のレイヤｋのメッセージ名称と同じ変数識別子を有するメッセージ客体がデータの構造内に存在しない場合、照会は失敗する(Ｓ２９)。
【００８４】
上述した方法により生成されたデータの構造を持つメッセージ客体のデータを一つの文字列に変換する関数は図６を参照して説明する。
【００８５】
一つの客体内のすべての客体変数に貯蔵されているデータ、すなわち、データ構造上の最上位のメッセージ客体と階層的に連結された複数のデータを一つの文字列に変換し、このように変換された文字列を再び階層的構造に復元することはデータの伝送に有用である。
【００８６】
本発明の文字列変換関数は文字列に変換しようとするメッセージ客体の名称である識別子をその因子として有する。
【００８７】
まず、文字列に変換しようとするメッセージ客体を指定する(Ｓ４１)。
【００８８】
次に、各レイヤ別に順次に指定されたメッセージ客体の識別子から現在のレイヤに該当する変数識別子のみを抽出して該当メッセージ客体のメッセージ名称、データの変数タイプ、データの個数及びデータの内容を抽出する(Ｓ４３)。前記メッセージ名称、データの変数タイプ及びデータの内容は該当情報から読み出されることができ、前記データの個数はアドレス情報の個数を調べることにより抽出が可能である。前記データの内容はこれを指示するアドレス情報を読んで順次に読み出すことができる。
【００８９】
このように抽出された情報を用いて該当メッセージ客体のメッセージ名称を作成し、前記データの変数タイプ、データの個数及びデータの内容を一つの文字列に変換して既存の文字列に付加する(Ｓ４５)。
【００９０】
該当メッセージ客体のデータを一つの文字列に変換して既存の文字列に付加するまえに、メッセージ客体の識別を可能にする区分子を添加することが好ましい。
【００９１】
前記Ｓ４３及びＳ４５を行うことにより、データの構造内に貯蔵されているデータは本来のデータ構造への復元に必要な情報を含むことができる。
【００９２】
該当メッセージ客体の変数タイプがメッセージ客体である場合、データの個数だけ再帰的に過程を反復実行することが好ましく、これは次のような過程により具体化される。
【００９３】
該当メッセージ客体の変数タイプがメッセージ客体であるかを確認して(Ｓ４７）、メッセージ客体である場合はメッセージ客体が指示しているデータの個数だけ貯蔵されたデータに対して順次に前記Ｓ４３及びＳ４５を反復実行する。
【００９４】
これは、前記メッセージ客体が指示しているデータの個数が１個であるかを確認して(Ｓ５１)、一つである場合は該当メッセージ客体が指示している次のメッセージ客体に移動し(Ｓ５３)、一つ以上である場合は残りアドレス情報をスタックに貯蔵して（Ｓ５５）、最初のアドレス情報が指示するメッセージ客体に移動する(Ｓ５３)。
【００９５】
ここで、スタックは最後に貯蔵された情報が最善として処理されるようにする情報貯蔵方式に該当するため、現在のメッセージ客体の変数タイプがメッセージ客体であり、複数のアドレス情報を有している場合、前記Ｓ４３以下の過程を再帰的に反復実行する効果を提供する。
【００９６】
すなわち、前記Ｓ４３乃至Ｓ４７は一つの客体に対して文字列に変換する過程を示すため、文字列に変換すべきデータが依然として存在する場合(Ｓ４９)は前記Ｓ４３以下を再帰的に反復実行することができる。
【００９７】
Ｓ４１乃至Ｓ５５を行うことにより、客体内のデータに関する情報は一つの文字列を形成する。
【００９８】
客体内のデータを一つの文字列に変換することは、二つ以上の相異なるプログラムが運用されるとき、データを他のプログラムに伝送するためである。
【００９９】
文字列に変換されたデータを受信したプログラムは上述した客体内のデータ貯蔵方法を用いてこれを本来のデータ構造を持つ客体に復元することができる。本来のデータ構造を持つ客体に復元する関数は、前記変換された文字列から分離された各客体変数に対する情報に前記データ貯蔵関数を適用して復元できる。
【０１００】
すなわち、客体復元関数は、前記変換された文字列から分離された各客体変数に対する情報のうち、データの個数に応じてメモリを割当てられ、各データを順次に貯蔵するようになる。
【０１０１】
本発明の文字列変換関数により変換された文字列から一つの客体変数に対する情報を分離すると、これは該当客体変数の変数識別子、変数タイプ、データの個数及びデータの内容を含む。
【０１０２】
すなわち、前記変数識別子をメッセージの名称に貯蔵し、変数タイプを変数タイプ情報に貯蔵するとともに、データの個数を読み出してデータの貯蔵空間を割当てられてデータの内容を前記割当てられた貯蔵空間に順次に貯蔵し、これに該当するメモリアドレスを貯蔵することにより、一つの客体変数に対する復元は完了される。
【０１０３】
各客体変数に対する前記復元過程を繰り返して一つの客体を本来のデータ構造を持つ客体に復元することができる。
【０１０４】
このような構成により、各種の客体を生成するように変数タイプや変数個数に限定されない新たな一つのクラスを提供することにより、クラスの設計時間、プログラムの開発時間及びコストを節減することができる。
【図面の簡単な説明】
【０１０５】
【図１】本発明の好ましい実施例によるマスタクラスの構成図である。
【図２】本発明の好ましい実施例による位置情報を含む変数識別子を示した図である。
【図３Ａ】本発明のデータ貯蔵関数を適用して形成された任意のデータ構造例を示した図である。
【図３Ｂ】本発明のデータ貯蔵関数を適用して形成された任意のデータ構造例を示した図である。
【図４】本発明によるデータ貯蔵関数の作動を示した流れ図である。
【図５】本発明によるデータ照会関数の作動を示した流れ図である。
【図６】本発明による文字列変換関数の作動を示した流れ図である。
【図１】
2004252973.tif 000003
【図２】
2004252973.tif 000004
【図３Ａ】
2004252973.tif 000005
【図３Ｂ】
2004252973.tif 000006
【図４】
2004252973.tif 000007
【図５】
2004252973.tif 000008
【図６】
2004252973.tif 000009