(57)【要約】【課題】オブジェクト指向分析設計支援装置において、一つのオブジェクト図をベースとしている複数のオブジェクト図が存在する場合、オブジェクトの同一性からオブジェクト図間のオブジェクトの移動や関係の追加を行うことで、オブジェクト図の選択・合成を支援することを目的とする。【解決手段】上記目的を達成するために、オブジェクト図内のオブジェクトの特性情報と関係を保持する手段と、派生したオブジェクト図内の情報を元オブジェクト図との差分で保持する手段と、派生したオブジェクト図間のオブジェクトの同一性を履歴によって調べるオブジェクト探索手段と、ベースとなるオブジェクト図案を決めて、オブジェクト探索手段を用いて他のオブジェクト図案を合成する手段を有する、オブジェクト図作成支援装置。【選択図】        図１
2004192034.tif 000002
【特許請求の範囲】
【請求項１】
元オブジェクト図のデータとして全てのオブジェクトの特性情報と、オブジェクト間の関連・集約・継承関係を保持する手段を有することを特徴とするオブジェクト図作成支援装置。
【請求項２】
請求項１記載の元オブジェクト図から派生したオブジェクト図案を、元オブジェクト図名、全てのオブジェクトの特性情報、オブジェクト間の関連・集約・継承関係の差分のみで保持する手段を有することを特徴とする請求項１記載のオブジェクト図作成支援装置。
【請求項３】
複数の派生したオブジェクト図案間のオブジェクトの特性情報、オブジェクト間の関連・集約・継承関係の同一性を調べる同一オブジェクト探索手段と、この同一オブジェクト探索手段にもとづいて複数の派生したオブジェクト図案を合成するオブジェクト図合成手段を有することを特徴とする請求項２記載のオブジェクト図作成支援装置。
【請求項４】
同一オブジェクト探索手段は派生したオブジェクト図案から履歴をたどることによって動作することを特徴とする請求項３記載のオブジェクト図作成支援装置。
【請求項５】
オブジェクト図合成手段はベースとなるオブジェクト図案を確定し、他のオブジェクト図案をベースとなるオブジェクト図案に対して合成することを特徴とする請求項３記載のオブジェクト図作成支援装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
オブジェクト指向設計では、システムの設計を行う際に、一つのオブジェクト図を基に、オブジェクトの役割や全体のバランス等を考慮して複数のオブジェクト図案を作成し、最後にそれらの統合や選択を行いオブジェクト図の品質を高める方法が存在するが、本発明は、そのような複数のオブジェクト図を管理し、選択・統合する作業において、複数のオブジェクト図案間でのオブジェクトの同一性、オブジェクト間の関係の同一性を考慮するオブジェクト図作成支援装置に関するものである。
【０００２】
【従来の技術】
オブジェクト指向分析設計手法に用いる図の一つにオブジェクト図がある。オブジェクト図は開発しようとするシステムの静的な側面を表現する図である。オブジェクト指向分析設計においては、通常オブジェクト図の書き換えは頻繁に行われる。また、書き換えの際に一つのオブジェクト図を何通りかの分析設計をした結果として、複数のオブジェクト図が作成される。そしてそれぞれのオブジェクト図の利点や欠点を考慮しながら選択、統合していくのが普通である。しかしその選択や統合の作業を行う際に、従来のオブジェクト指向システム分析設計支援装置では、他のオブジェクト図からオブジェクトを取り込む際には、新たにそのオブジェクトを書き直したり、関連・集約等の関係線を引きなおしたりする必要があった。
【０００３】
オブジェクト図の更新の履歴をバージョンとして管理するオブジェクト指向システム分析設計支援装置に関しては「データ作成支援装置、オブジェクト指向分析設計支援装置及びデータ管理方法（特開平１１−９５９９２号公報）」があるが、この方法はオブジェクトのバージョンを履歴として保存するのみで、バージョン間のオブジェクト図内でのオブジェクトや関係の選択や統合は支援できない。
【０００４】
【発明が解決しようとする課題】
このため一つのオブジェクト図をベースにして作成された複数のオブジェクト図を統合するには同じオブジェクトをまた新たに書き直したり、新たに統合したオブジェクトに対する他のオブジェクトとの関係も書き直すために余計な手間がかかっていた。本発明はこのような状況のもとでなされたもので、一つのオブジェクト図をベースとしている複数のオブジェクト図間でオブジェクトの移動を行う場合に、移動先でそのオブジェクトが他のどのオブジェクトと関係があるか、そのオブジェクト自身は移動先のどのオブジェクトと同一のオブジェクトであるかといった情報をもとに、オブジェクトの置換を行ったり、オブジェクト間の関係を加えることで、オブジェクト図の選択、合成を支援することを目的としている。
【０００５】
【課題を解決するための手段】
前記目的を達成するため、本発明ではオブジェクト図作成支援装置を次の（１）〜（５）の通りに構成する。
【０００６】
（１）元オブジェクト図のデータとして全てのオブジェクトの特性情報と、オブジェクト間の関連・集約・継承関係を保持する手段を有するオブジェクト図作成支援装置。
【０００７】
（２）前記（１）記載の元オブジェクト図から派生したオブジェクト図案を、元オブジェクト図名、全てのオブジェクトの特性情報、オブジェクト間の関連・集約・継承関係の差分のみで保持する手段を有する前記（１）記載のオブジェクト図作成支援装置。
【０００８】
（３）複数の派生したオブジェクト図案間のオブジェクトの特性情報、オブジェクト間の関連・集約・継承関係の同一性を調べる同一オブジェクト探索手段と、この同一オブジェクト探索手段にもとづいて複数の派生したオブジェクト図案を合成するオブジェクト図合成手段を有する前記（２）記載のオブジェクト図作成支援装置。
【０００９】
（４）同一オブジェクト探索手段は派生したオブジェクト図案から履歴をたどることによって動作する前記（３）記載のオブジェクト図作成支援装置。
【００１０】
（５）オブジェクト図合成手段はベースとなるオブジェクト図案を確定し、他のオブジェクト図案をベースとなるオブジェクト図案に対して合成する前記（３）記載のオブジェクト図作成支援装置。
【００１１】
【発明の実施の形態】
以下本発明の実施の形態を、オブジェクト図案の合成手段の実施例により詳しく説明する。実施例ではこの合成手段を実現するＲＯＭ上のプログラムで実現しているが、これに限らずプログラムを格納した、コンピュータで読み取り可能なメモリカード等の記憶媒体の形で実施することができる。
【００１２】
図１は実施例であるオブジェクト図案合成手段の機能構成を示すブロック図である。図１においてＥ１は入出力装置であり、ユーザはこの入出力装置を通じてＥ２、Ｅ３、Ｅ４の手段を実行し、オブジェクト図を作成する。作成したオブジェクト図はＥ５、Ｅ６、Ｅ７、Ｅ８のオブジェクト図記憶手段に格納される。Ｅ２は元となるオブジェクト図を作成する手段である。ユーザがＥ１によってＥ２を実行することによって元オブジェクト図が作成され、Ｅ５に格納される。Ｅ３はＥ５の元オブジェクト図の情報からユーザがＥ１を用いてオブジェクト図案を作成する手段である。Ｅ４はＥ３で作成されＥ６とＥ７に格納されたオブジェクト図案からユーザがＥ１を利用して最終オブジェクト図を作る手段であり、作成された最終オブジェクト図はＥ８に格納される。
【００１３】
図２は図１におけるＥ４のオブジェクト図案合成手段の実行を示すフローチャートである。
【００１４】
Ｓ１からＳ３を行うことで、複数のオブジェクト図案を合成して一つの最終的なオブジェクト図を作成する。Ｓ１では合成を行う２つのオブジェクト図案とその元オブジェクト図の情報を読み取る。Ｓ２ではＳ１で読み取ったオブジェクト図の情報からオブジェクト図案の一つをベースオブジェクト図として設定し、それぞれのオブジェクト図案を元オブジェクト図の情報に基づいて展開する。その詳細のアルゴリズムは図３に記述する。Ｓ３ではＳ２で展開したオブジェクト図案を用いて２つのオブジェクト図案の合成を行う。その詳細のアルゴリズムは図４に記述する。
【００１５】
図３は図２のＳ２の詳細アルゴリズムを示すフローチャートであり、ベースオブジェクト図の設定とオブジェクト図案の展開をしている。
【００１６】
Ｓ２．１でベースオブジェクトの設定をしている。ここでベースオブジェクトとして設定した図案を元に、Ｓ３で残りのオブジェクト図案を合成していく。ここで設定するベースオブジェクト図案は本実施例ではユーザに選択を行わせるが、ベースオブジェクト図は任意のオブジェクト図案をアルゴリズムが自動的に選択してもかまわない。
【００１７】
Ｓ２．２で各オブジェクト図案を元のオブジェクト図の情報から展開する。元オブジェクト図の例を図８に示す。またそのデータ構造の例を図１２に示す。元オブジェクト図を元に作成したオブジェクト図案の例を図９、図１０に示す。またそれぞれのデータ構造の例を図１３、図１４に示す。Ｓ２．２の説明をする前に、これらのデータ構造について少し説明をする。
【００１８】
図１２は図８に示す元オブジェクト図のデータ構造の例である。オブジェクト図のデータ構造にはオブジェクトの定義と、オブジェクト間の関連、集約関係の定義が記述されている。オブジェクトの定義には、そのオブジェクトが持つ属性と操作、また継承の親オブジェクトが記述されている。またこれらのデータのほかにオブジェクト図を絵で表現した場合のオブジェクトの座標情報などが記述されていてもよい。図１３、図１４は図９、図１０に示すオブジェクト図案のデータ構造の例である。オブジェクト図案のデータ構造は以下の要素により成り立っている。
【００１９】
１．どの図面に基づいたオブジェクト図であるか。基のオブジェクト図がある場合にはそれを書く必要がある。図１３の例では図１２のオブジェクト図を元オブジェクト図としているため、オブジェクト図案Ｂはオブジェクト図Ａを元にしていることを示すために“Ｂ  ｂａｓｅｄ  Ａ”と記述されている。
【００２０】
２．オブジェクトを構成する情報を記述する。オブジェクトの属性、操作、親オブジェクトの情報を記述する図１４の例においてオブジェクト１１はメソッドとしてｍｅｔｈｏｄ１１．１、属性としてａｔｔｒｉｂｕｔｅ１１．１、親オブジェクトとしてオブジェクト１ｃをもっていることを示すように、“オブジェクト１１＝ｍｅｔｈｏｄ１１．１＋ａｔｔｒｉｂｕｔｅ１１．１＋ｐａｒｅｎｔオブジェクト１ｃ”と記述されている。
【００２１】
３．関連・集約関係を記述する。記述例（ａｓｓ１＝クラス１→クラス２）
４．オブジェクトが、あるオブジェクト図に基づいたオブジェクト図上のオブジェクトによるものである場合にその情報を記述する。「Ｂ  ｂａｓｅｄ  Ａ」においてオブジェクト図案Ｂのオブジェクト２ｂがオブジェクト図Ａのオブジェクト２、オブジェクト４の合成オブジェクトの時の記述例として”オブジェクト２ｂ＝オブジェクト２＋オブジェクト４を記述できる。
【００２２】
５．元オブジェクト図から削除したオブジェクトの削除情報を記述する。「Ｂｂａｓｅｄ  Ａ」においてＡのオブジェクト１がＢでは必要ない時の記述例として“ｄｅｌオブジェクト１”と記述する。
【００２３】
６．他のオブジェクト図案のクラスとの置換情報を記述する。記述例として、オブジェクト１をオブジェクト１ｃで置換した場合、”オブジェクト１→オブジェクト１ｃ”と記述する。
【００２４】
またオブジェクト図案のデータ構造は元オブジェクト図のデータ構造との差分で記述されており、どのオブジェクトが、元オブジェクト図のどのオブジェクトを変更して作成された図であるかということが明記されている。オブジェクト図案のオブジェクトが、元オブジェクト図の複数のオブジェクトの合成であれば、図１３、図１４のデータ構造の情報に、合成する前の元オブジェクト図でのオブジェクト情報が記述されている。このオブジェクトの差分情報によって他のオブジェクト図案中のどのオブジェクトと同一性があるかという判断を行う。これにより、元オブジェクトから作成された複数のオブジェクト図案において、同じオブジェクトの名前がそれぞれのオブジェクト図案でまったく書き換えられていても同一性を判断することが可能になる。
【００２５】
Ｓ２．２の説明に戻る。Ｓ２．２では図１３、図１４に示すオブジェクト図案のデータに元オブジェクト図の情報を展開させる。図１３、図１４では元オブジェクト図のデータとの差分で記述されていたものを、オブジェクト図案の全てのオブジェクトの情報が記述されているものにする。その展開したオブジェクト図案のデータ構造の例を図１５、図１６に示す。
【００２６】
図４は図２のＳ２の詳細アルゴリズムを示すフローチャートであり、複数のオブジェクト図案のデータから最終オブジェクト図のデータを作成している。実際に図９と図１０のオブジェクト図案に図４のアルゴリズムを適用することによって最終オブジェクト図を作成していくフローを説明する。最終オブジェクト図の例を図１３に示し、そのデータ構造を図２７に示す。
【００２７】
Ｓ３．１ではベースとなるオブジェクト図のデータ構造である図１５からオブジェクトの情報が存在するか確認する。存在する場合Ｓ３．２からＳ３．２２の処理を行う。図１５から全てのオブジェクト情報を取り出した後はＳ３．２３に遷移する。まずは図１５にオブジェクト情報が存在するためＳ３．２に遷移する。
【００２８】
Ｓ３．２では図１５からオブジェクト情報を一つ取り出す。初めに取り出されるのは図１５から“オブジェクト１＝ｍｅｔｈｏｄ１．１＋ａｔｔｒｉｂｕｔｅ１．１”の情報である。このオブジェクト１をオブジェクトｖとする。
【００２９】
Ｓ３．３ではオブジェクトｖを無変換で図１１で利用するかどうか確認する。無変換で利用する場合はＳ３．１に移動し、次のオブジェクトの処理に移る。変換する場合はＳ３．４に遷移する。オブジェクト１は図１０のオブジェクト１ｃで置換するので無変換ではないのでＳ３．４に遷移する。
Ｓ３．４ではオブジェクトｖを削除すかどうか判断する。削除する場合にはＳ３．５に遷移し、オブジェクトｖを削除する。削除しない場合はＳ３．６に遷移する。オブジェクト１は削除しないためＳ３．６に遷移する。
【００３０】
Ｓ３．６はオブジェクトｖと同じオブジェクトとみなせるオブジェクトを元オブジェクトへの履歴をたどりオブジェクト図案Ｃから検索する。その詳細は図５に記述されているため、図５のＳ４．１に遷移する。
【００３１】
Ｓ４．１ではオブジェクト１が元オブジェクト図のオブジェクトを使って再定義されているかを判断する。オブジェクト１は図１２に示す元オブジェクト図Ａで定義されており、図１３のオブジェクト図案Ｂでは再定義されていないためＳ４．３に遷移する。もしオブジェクト１がオブジェクト図案Ｂで再定義されたオブジェクトであればその再定義に利用したオブジェクトをＳ４．２で検索リストに追加する。
【００３２】
Ｓ４．３では検索を行うオブジェクトを検索リストに追加する。今オブジェクトαはオブジェクト１であるため、オブジェクト１を検索リストに追加する。
【００３３】
Ｓ４．４では検索リストからオブジェクトを一つ取り出す。ここで検索リストにオブジェクトがない場合は終了となる。今検索リストにはオブジェクト１が入っているため、オブジェクト１を取り出しオブジェクトｘとして、Ｓ４．５に遷移する。
【００３４】
Ｓ４．５ではオブジェクトｘがオブジェクト図Ｎのオブジェクト定義に使われているかを調べる。今オブジェクトｘはオブジェクト１を示し、オブジェクト図Ｎは図１０のオブジェクト図Ｃを示す。オブジェクト図のＣのデータ構造である図１４のオブジェクト定義にオブジェクト１が使われていないか調べる。オブジェクト１はオブジェクト１ｃの定義に使われているため、Ｓ４．６に遷移する。
【００３５】
Ｓ４．６ではＳ４．５で判断した結果、オブジェクトｘが定義に使われていたオブジェクトを検索結果リストに追加する。今オブジェクトｘはオブジェクト１であるためオブジェクト１が定義に使われていたオブジェクト１ｃを検索結果リストに追加し、Ｓ４．４に遷移する。
【００３６】
Ｓ４．４で検索リストにはもうオブジェクトは入っていないために終了し、Ｓ３．７に遷移する。
【００３７】
Ｓ３．７ではＳ３．６で作成された検索結果リストのオブジェクトとオブジェクトｖを合成するかどうか判断する。今回はオブジェクトｖであるオブジェクト１は合成しないのでＳ３．９に遷移する。
Ｓ３．９ではＳ３．６で作成された検索結果リストを基にオブジェクト１を置換するオブジェクトを選択し書き出す。この処理は今回はユーザに検索結果リストから選択させた。これはこの合成手段が検索結果から自動で選んで置換する方法でも実施することができる。今、検索結果リストにはオブジェクト１の置換候補としてオブジェクト１ｃが入っている。今回ここでユーザは置換オブジェクトであるオブジェクトｗとしてオブジェクト１ｃを選択した。その情報を書き出したデータ構造を図１７に示す。
【００３８】
Ｓ３．１０ではオブジェクト１ｃにオブジェクト図案Ｃで継承関係が存在するかを判断する。その詳細は図６に記述されているため、図６のＳ５．１に遷移する。
【００３９】
Ｓ５．１ではオブジェクト図案Ｃにオブジェクトが存在するか判定する。存在する場合にはＳ５．２に遷移し、存在しない場合には終了する。Ｓ５．２でオブジェクト図案Ｃから一つずつオブジェクトを取り出していき、全て取り出したら終了する。
【００４０】
Ｓ５．２ではオブジェクト図案Ｃからオブジェクトを一つ取り出す。今オブジェクト図案Ｃのデータ構造は図１６であるから、そこから最初に記述されているオブジェクト１ｃを取り出す。
【００４１】
Ｓ５．３では取り出したオブジェクトがオブジェクト１ｃと継承関係にあるか判断する。いま取り出したオブジェクトもオブジェクト１ｃであるため継承関係には無いのでＳ５．１に遷移する。
【００４２】
このようにオブジェクト図案Ｃからすべてのオブジェクトを取り出し、それがオブジェクト１ｃと継承関係にあるか調べた結果を継承リストに追加する。今オブジェクト１ｃと継承関係にあるのはオブジェクト２とオブジェクト４とオブジェクト１１である。そのため図６のフローチャートの実行結果としてはオブジェクト２、オブジェクト４、オブジェクト１１が入った継承リストが作成される。
【００４３】
図４のフローチャートに戻り、Ｓ３．１１では継承リストにオブジェクトがあるかどうか判断する。今３つのオブジェクトが継承リストに存在するためＳ３．１２に遷移する。
【００４４】
Ｓ３．１２では継承リストから一つオブジェクトを取り出す。今継承リストの最初のオブジェクトであるオブジェクト２を取り出す。
【００４５】
Ｓ３．１３ではオブジェクト２と同じオブジェクトとみなせるオブジェクトを元オブジェクトへの履歴をたどりオブジェクト図案Ｂから検索する。その詳細は図５に記述されており、その実行手順はＳ３．６の詳細で記述した実行手順と同様である。そのようにして実行した結果、検索結果リストにはオブジェクト２ｂが入っている。
【００４６】
Ｓ３．１４では検索した結果からオブジェクト２ｂの定義式を書き換える処理をする。しかし、今オブジェクト２ｂの定義式にはすでにオブジェクト１ｃの元となるオブジェクト１が親オブジェクトとして記述されているため、書き換える必要がない。
【００４７】
Ｓ３．１１にもどり、継承リストに存在する残りの２つのオブジェクトについてもオブジェクト２と同様にＳ３．１２からＳ３．１４の処理を行う。オブジェクト４はオブジェクト２と同様にオブジェクト２ｂが同じオブジェクトとみなせるオブジェクトであるため、書き換える必要がない。またオブジェクト１１は図１３のオブジェクト図案Ｂのデータ構造に同じとみなせるオブジェクトが存在しないため、Ｓ３．１３の検索結果リストには何もオブジェクトが存在せずに、定義式の書き換えはない。
【００４８】
Ｓ３．１５でオブジェクト１ｃに対する新たな関連、集約関係を追加するか判断する。今オブジェクト１ｃには新たな関連、集約関係は追加しないのでＳ３．２１に遷移する。
【００４９】
Ｓ３．２１では図１３においてオブジェクト１に対する関連、集約関係を削除するかどうか判断する。今オブジェクト１からオブジェクト７への関連であるａｓｓ４を削除したいのでＳ３．２２に遷移する。
【００５０】
Ｓ３．２２では今オブジェクト１からオブジェクト７への関連であるａｓｓ４を削除する情報を記述する。記述した結果を図１８に記述し、Ｓ３．１に遷移する。
【００５１】
Ｓ３．１で次のオブジェクトがあるか判断する。図１５に示すデータ構造には、まだオブジェクトが存在するためＳ３．２に遷移する。
【００５２】
Ｓ３．２では次のオブジェクトであるオブジェクト２ｂを取り出す。
【００５３】
Ｓ３．３でオブジェクト２ｂは無変換なためＳ３．１に遷移する。
【００５４】
Ｓ３．１で次のオブジェクトがあるか判断する。図１５に示すデータ構造には、まだオブジェクトが存在するためＳ３．２に遷移する。
【００５５】
Ｓ３．２では次のオブジェクトであるインターフェース８を取り出す。
【００５６】
Ｓ３．３でインターフェース８は無変換なためＳ３．１に遷移する。
【００５７】
Ｓ３．１で次のオブジェクトがあるか判断する。図１５に示すデータ構造には、まだオブジェクトが存在するためＳ３．２に遷移する。
【００５８】
Ｓ３．２では次のオブジェクトであるオブジェクト３ｂを取り出す。
【００５９】
Ｓ３．３でオブジェクト３ｂは変換するためＳ３．４に遷移する。
【００６０】
Ｓ３．４ではオブジェクト３ｂを削除するか判断する。オブジェクト３ｂは削除しないためＳ３．６に遷移する。
【００６１】
Ｓ３．６ではオブジェクト１の場合と同様に、オブジェクト３ｂと同じオブジェクトとみなせるオブジェクトを元オブジェクトへの履歴をたどりオブジェクト図案Ｃから検索する。その詳細な実行に関してはオブジェクト１と同様のため省略する。図５のフローチャートを実行した結果、オブジェクト３ｂと同じとみなせるオブジェクトの検索結果リストにはオブジェクト３ｃが入っている。
【００６２】
Ｓ３．７ではＳ３．６で作成された検索結果リストのオブジェクト３ｃとオブジェクト３ｂを合成するかどうか判断する。今回はこの二つのオブジェクトを合成して図１１のオブジェクト３ｄを作成するためＳ３．８に遷移する。
【００６３】
Ｓ３．８ではオブジェクト３ｂとオブジェクト３ｃの合成を行う。オブジェクト３ｄはオブジェクト３ｂとオブジェクト３ｃの合成として定義する。
【００６４】
Ｓ３．９ではＳ３．６で作成された検索結果リストとＳ３．８で合成したオブジェクトを基にオブジェクト３ｂを置換するオブジェクトを選択し書き出す。今回ここでユーザは置換オブジェクトであるオブジェクトｗとしてＳ３．８で合成したオブジェクト３ｄを選択した。その情報を書き出したデータ構造を図１９に示す。
【００６５】
Ｓ３．１０ではオブジェクト図案Ｃで、オブジェクト３ｄの構成要素であるオブジェクト３ｃに継承関係が存在するかを判断する。その詳細は図６に記述されているが、Ｓ３．１０におけるオブジェクト１ｃの処理と同様のため省略する。図６のフローチャートを実行した結果の継承リストにはオブジェクト６とオブジェクト１３が入っている。
【００６６】
Ｓ３．１１では継承リストにオブジェクトがあるかどうか判断する。今２つのオブジェクトが継承リストに存在するためＳ３．１２に遷移する。
【００６７】
Ｓ３．１２では継承リストから一つオブジェクトを取り出す。今継承リストの最初のオブジェクトであるオブジェクト６を取り出す。
【００６８】
Ｓ３．１３ではオブジェクト６と同じオブジェクトとみなせるオブジェクトを元オブジェクトへの履歴をたどりオブジェクト図案Ｂから検索する。その詳細は図５に記述されており、その実行手順はＳ３．６の詳細で記述した実行手順と同様である。そのようにして実行した結果、検索結果リストにはオブジェクト６が入っている。
【００６９】
Ｓ３．１４では検索した結果からオブジェクト６の定義式を書き換える処理をする。しかし、今オブジェクト６の定義式にはすでにオブジェクト３ｄの元となるオブジェクト３ｂが親オブジェクトとして記述されているため、書き換える必要がない。
【００７０】
Ｓ３．１１にもどり、継承リストに存在する残りの１つのオブジェクトについてもオブジェクト６と同様にＳ３．１２からＳ３．１４の処理を行う。オブジェクト１３は図１３のオブジェクト図案Ｂのデータ構造に同じとみなせるオブジェクトが存在しないため、Ｓ３．１３の検索結果リストには何もオブジェクトが存在せずに、定義式の書き換えはない。
【００７１】
Ｓ３．１５でオブジェクト３ｄに対する新たな関連、集約関係を追加するか判断する。今オブジェクト３ｄには新たな関連、集約関係は追加しないのでＳ３．２１に遷移する。
【００７２】
Ｓ３．２１では図１３においてオブジェクト３ｂに対する関連、集約関係を削除するかどうか判断する。削除する関係はないのでＳ３．１に遷移する。
【００７３】
Ｓ３．１で次のオブジェクトがあるか判断する。図１５に示すデータ構造には、まだオブジェクトが存在するためＳ３．２に遷移する。
【００７４】
Ｓ３．２では次のオブジェクトであるオブジェクト５を取り出す。
【００７５】
Ｓ３．３でオブジェクト５は変換するためＳ３．４に遷移する。
【００７６】
Ｓ３．４ではオブジェクト５を削除するか判断する。オブジェクト５は削除するためＳ３．５に遷移する。
【００７７】
Ｓ３．５ではオブジェクト５の削除を行う。削除を行った結果を書き出し、Ｓ３．２２に遷移する。
【００７８】
Ｓ３．２２ではオブジェクト５に対する関連、集約関係を削除する。いまオブジェクト５に対する集約としてａｇｇ２が存在しているので、この集約を削除する情報を書き出す。Ｓ３．５とＳ３．２２で書き出した結果を図２０に示す。
【００７９】
Ｓ３．１で次のオブジェクトがあるか判断する。図１５に示すデータ構造には、まだオブジェクトが存在するためＳ３．２に遷移する。
【００８０】
Ｓ３．２では次のオブジェクトであるオブジェクト６を取り出す。
【００８１】
Ｓ３．３でオブジェクト６は無変換であるためＳ３．１に遷移する。
【００８２】
Ｓ３．１で次のオブジェクトがあるか判断する。図１５に示すデータ構造には、まだオブジェクトが存在するためＳ３．２に遷移する。
【００８３】
Ｓ３．２では次のオブジェクトであるオブジェクト７を取り出す。
【００８４】
Ｓ３．３でオブジェクト７は変換するためＳ３．４に遷移する。
【００８５】
Ｓ３．４ではオブジェクト７を削除するか判断する。オブジェクト７は削除しないためＳ３．６に遷移する。
【００８６】
Ｓ３．６ではオブジェクト１の場合と同様に、オブジェクト７と同じオブジェクトとみなせるオブジェクトを元オブジェクトへの履歴をたどりオブジェクト図案Ｃから検索する。その詳細な実行に関してはオブジェクト１と同様のため省略する。図５のフローチャートを実行した結果、オブジェクト７は図１３で初めて定義されたオブジェクトであるため、同じとみなせるオブジェクトは存在せず、検索結果リストには何も入っていない。
【００８７】
Ｓ３．７ではＳ３．６で作成された検索結果リストのオブジェクトとオブジェクト７を合成するかどうか判断する。今回は検索リストが空のため合成はしないので、Ｓ３．９に遷移する。
【００８８】
Ｓ３．９ではＳ３．６で作成された検索結果リストを基にオブジェクト７を置換するオブジェクトを選択し書き出す。今回、検索リストは空であるため、図１４の任意のオブジェクトをユーザが選択する。ユーザは置換オブジェクトであるオブジェクトｗとしてオブジェクト１０を選択した。その情報を書き出したデータ構造を図２１に示す。
【００８９】
Ｓ３．１０ではオブジェクト図案Ｃで、オブジェクト１０に継承関係が存在するかを判断する。その詳細は図６に記述されているが、Ｓ３．１０におけるオブジェクト１ｃの処理と同様のため省略する。図６のフローチャートを実行した結果、オブジェクト１０には継承関係がないため、継承リストは空である。
【００９０】
Ｓ３．１１では継承リストにオブジェクトがあるかどうか判断する。今継承リストは空であるため、Ｓ３．１５に遷移する。
【００９１】
Ｓ３．１５では新たな関連、集約関係を追加するか判断する。今回はオブジェクト３ｄからオブジェクト１０に新たな関連を追加したいのでＳ３．１６に遷移する。
【００９２】
Ｓ３．１６ではオブジェクト１０にオブジェクト図案Ｃで関連、集約関係が存在するかを判断する。その詳細は図７に記述されているため、図７のＳ６．１に遷移する。
【００９３】
Ｓ６．１ではオブジェクト図案Ｃにオブジェクトが存在するか判定する。存在する場合にはＳ６．２に遷移し、存在しない場合には終了する。Ｓ６．２でオブジェクト図案Ｃから一つずつ関連、集約の定義を取り出していき、全て取り出したら終了する。
【００９４】
Ｓ６．２ではオブジェクト図案Ｃから関連、集約の定義を一つ取り出す。今オブジェクト図案Ｃのデータ構造は図１６であるから、そこから最初に記述されているａｓｓ１を取り出す。
【００９５】
Ｓ６．３では取り出した関連集約関係ａｓｓ１の構成要素にオブジェクト１０が含まれているか判断する。いまａｓｓ１にオブジェクト１０は存在しなのでＳ６．１に遷移する。
【００９６】
このようにオブジェクト図案Ｃからすべての関連集約関係を取り出し、その構成要素にオブジェクト１０があるか調べた結果、オブジェクト１０が構成要素に存在した場合、オブジェクト１０と関連集約関係にあるオブジェクトを関連集約リストに追加する。今オブジェクト１０が構成要素にある関連集約関係はａｓｓ６である。そのため図７のフローチャートの実行結果としてはａｓｓ６でオブジェクト１０と関連関係にあるオブジェクト３ｃが入った関連集約リストが作成される。
【００９７】
図４のフローチャートに戻り、Ｓ３．１７では関連集約リストにオブジェクトがあるかどうか判断する。今オブジェクト３ｃが関連集約リストに存在するためＳ３．１８に遷移する。
【００９８】
Ｓ３．１８では関連集約リストからオブジェクトを一つ取り出す。今関連集約リストにはオブジェクト３ｃが入っているためオブジェクト３ｃを取り出す。
【００９９】
Ｓ３．１９ではオブジェクト３ｃと同じオブジェクトとみなせるオブジェクトを元オブジェクトへの履歴をたどりオブジェクト図案Ｂから検索する。その詳細は図５に記述されており、その実行手順はＳ３．６の詳細で記述した実行手順と同様である。そのようにして実行した結果、検索結果リストにはオブジェクト３ｂが入っている。
【０１００】
Ｓ３．２０ではＳ３．１９で検索した結果から新たな関連関係を追加する。Ｓ３．１９の検索結果から、オブジェクト３ｄからオブジェクト１０への関連関係としてａｓｓ６を新たな関連関係として追加することができる。本実施例ではこのａｓｓ６をユーザに提示し、選択させることで最終オブジェクト図Ｄのデータとして書き出している。またこのａｓｓ６をユーザに提示せず、本手段で自動的にデータ構造に書き出すことで関連関係の追加を自動で行うこともできる。その書き出さしたデータ構造を図２２に示す。
【０１０１】
Ｓ３．２１では図１３においてオブジェクト７に対する関連、集約関係を削除するかどうか判断する。削除する関係はないのでＳ３．１に遷移する。
【０１０２】
Ｓ３．１で次のオブジェクトがあるか判断する。図１５に示すデータ構造には、まだオブジェクトが存在するためＳ３．２に遷移する。
【０１０３】
Ｓ３．２では次のオブジェクトであるオブジェクト９を取り出す。
【０１０４】
Ｓ３．３でオブジェクト９は変換するためＳ３．４に遷移する。
【０１０５】
Ｓ３．４ではオブジェクト９を削除するか判断する。オブジェクト９は削除しないためＳ３．６に遷移する。
【０１０６】
Ｓ３．６ではオブジェクト１の場合と同様に、オブジェクト９と同じオブジェクトとみなせるオブジェクトを元オブジェクトへの履歴をたどりオブジェクト図案Ｃから検索する。その詳細な実行に関してはオブジェクト１と同様のため省略する。図５のフローチャートを実行した結果、オブジェクト９は図１３で初めて定義されたオブジェクトであるため、同じとみなせるオブジェクトは存在せず、検索結果リストには何も入っていない。
【０１０７】
Ｓ３．７ではＳ３．６で作成された検索結果リストのオブジェクトとオブジェクト９を合成するかどうか判断する。今回は検索リストが空のため合成はしないので、Ｓ３．９に遷移する。
【０１０８】
Ｓ３．９ではＳ３．６で作成された検索結果リストを基にオブジェクト９を置換するオブジェクトを選択し書き出す。今回、検索リストは空であるため、図１４の任意のオブジェクトをユーザが選択する。ユーザは置換オブジェクトであるオブジェクトｗとしてオブジェクト１１を選択した。その情報を書き出したデータ構造を図２３に示す。
【０１０９】
Ｓ３．１０ではオブジェクト図案Ｃで、オブジェクト１１に継承関係が存在するかを判断する。その詳細は図６に記述されているが、Ｓ３．１０におけるオブジェクト１ｃの処理と同様のため省略する。図６のフローチャートを実行した結果の継承リストにはオブジェクト１ｃが入っている。
【０１１０】
Ｓ３．１１では継承リストにオブジェクトがあるかどうか判断する。今オブジェクト１ｃが継承リストに存在するためＳ３．１２に遷移する。
【０１１１】
Ｓ３．１２では継承リストから一つオブジェクトを取り出す。今継承リストの最初のオブジェクトであるオブジェクト１ｃを取り出す。
【０１１２】
Ｓ３．１３ではオブジェクト１ｃと同じオブジェクトとみなせるオブジェクトを元オブジェクトへの履歴をたどりオブジェクト図案Ｂから検索する。その詳細は図５に記述されており、その実行手順はＳ３．６の詳細で記述した実行手順と同様である。そのようにして実行した結果、検索結果リストにはオブジェクト１が入っている。
【０１１３】
Ｓ３．１４では検索した結果からオブジェクト１１の定義式を書き換える処理をする。しかし、今オブジェクト１１の定義式にはすでに検索結果のオブジェクト１を書き換えたオブジェクト１ｃが親オブジェクトとして記述されているため、書き換える必要がない。
【０１１４】
Ｓ３．１１にもどり、継承リストが空であることを確認し、Ｓ３．１５に遷移する。
【０１１５】
Ｓ３．１５でオブジェクト１１に対する新たな関連、集約関係を追加するか判断する。今オブジェクト１１には新たな関連、集約関係は追加しないのでＳ３．２１に遷移する。
【０１１６】
Ｓ３．２１では図１３においてオブジェクト９に対する関連、集約関係を削除するかどうか判断する。削除する関係はないのでＳ３．１に遷移する。
【０１１７】
Ｓ３．１で次のオブジェクトがあるか判断する。図１５に示すデータ構造には、もうオブジェクトは存在しないため、Ｓ３．２３に遷移する。
【０１１８】
Ｓ３．２３ではＳ３．２２までの処理で置換に使用されなかった図１６のオブジェクト図案Ｃのオブジェクトが存在するか判断する。存在する場合Ｓ３．２４に遷移し、処理されなかったオブジェクトが存在しない場合に終了する。今Ｓ３．２２までの処理で使用されなかったオブジェクトは図１６のオブジェクトの中でオブジェクト２、オブジェクト４、オブジェクト６、オブジェクト１２、オブジェクト１３である。よってＳ３．２４に遷移する。
【０１１９】
Ｓ３．２４ではＳ３．２３であげたオブジェクトから一つ取り出す。まずオブジェクト２を取り出し、オブジェクトｔとする。
【０１２０】
Ｓ３．２５でオブジェクトｔを図１１のオブジェクト図のオブジェクトとして追加するか判断する。今オブジェクトｔはオブジェクト２である。オブジェクト２は追加をしないのでＳ３．２３に遷移する。
【０１２１】
Ｓ３．２３で、まだ未使用のオブジェクトが４つあるためＳ３．２４に遷移する。
【０１２２】
Ｓ３．２４で次のオブジェクトである、オブジェクト４を取り出し、オブジェクトｔとする。
【０１２３】
Ｓ３．２５でオブジェクト４と追加するか判断する。オブジェクト４もオブジェクト２同様追加しないのでＳ３．２３に遷移する。
【０１２４】
Ｓ３．２３で、まだ未使用のオブジェクトが３つあるためＳ３．２４に遷移する。
【０１２５】
Ｓ３．２４からＳ３．２５で次のオブジェクトである、オブジェクト６について処理を行う。オブジェクト６も追加しないためまたＳ３．２３に遷移する。
【０１２６】
Ｓ３．２３で、まだ未使用オブジェクトが２つあるためＳ３．２４に遷移する。
【０１２７】
Ｓ３．２４で次のオブジェクトである、オブジェクト１２を取り出し、オブジェクトｔとする。
【０１２８】
Ｓ３．２５で、オブジェクト１２は追加するためにＳ３．２６に遷移する。
【０１２９】
Ｓ３．２６でオブジェクト１２の定義を書き出す。書き出したデータ構造を図２４に示す。
【０１３０】
Ｓ３．２７でオブジェクトｔであるオブジェクト１２に対して継承関係を追加するか判断する。オブジェクト１２に対しては継承関係を追加しないのでＳ３．２８に遷移する。
【０１３１】
Ｓ３．２８ではオブジェクト１２が図１６に示すオブジェクト図案Ｃのデータ構造で継承関係を持っているかを判定する。持っている場合は、Ｓ３．３４に遷移し、オブジェクト１２の継承関係の定義を削除する情報を追加する。今オブジェクト１２は継承関係を持っていないためＳ３．３５に遷移する。
【０１３２】
Ｓ３．３５ではオブジェクト１２に対して新たな関連、集約関係を追加するか判断する。今オブジェクト１２からオブジェクト６への関連関係を追加したいのでＳ３．３６に遷移する。
【０１３３】
Ｓ３．３６では図１６のオブジェクト図案Ｃのデータ構造でオブジェクト１２に関連関係が存在するか判断する。その詳細な実行に関しては図７に記述されているが、Ｓ３．１６においてオブジェクト１０がオブジェクト図案Ｃで関連、集約関係が存在するかを判断した時と同様であるため省略する。図７のフローチャートを実行した結果、オブジェクト６が関連集約リストに入っている。
【０１３４】
Ｓ３．３７では関連集約リストにオブジェクトが存在するかどうか判断する。今関連集約リストにはオブジェクト６が入っているためＳ３．３８に遷移する。
【０１３５】
Ｓ３．３８ではオブジェクト６を取り出しオブジェクトｕとする。
【０１３６】
Ｓ３．３９ではオブジェクト６と同じオブジェクトとみなせるオブジェクトを元オブジェクトへの履歴をたどりオブジェクト図案Ｂから検索する。その詳細は図５に記述されており、その実行手順はＳ３．６の詳細で記述した実行手順と同様である。そのようにして実行した結果、検索結果リストにはオブジェクト６が入っている。
【０１３７】
Ｓ３．３７で関連集約リストは空なのでＳ３．４０に遷移する。
【０１３８】
Ｓ３．４０では、Ｓ３．３９の検索結果から、オブジェクト１２からオブジェクト６への関連関係としてａｓｓ７を新たな関連関係として追加することができる。本実施例ではこのａｓｓ７をユーザに提示し、選択させることで最終オブジェクト図Ｄのデータとして書き出している。またこのａｓｓ７をユーザに提示せず、本手段で自動的にデータ構造に書き出すことで関連関係の追加を自動で行うこともできる。その書き出さしたデータ構造を図２５に示す。
【０１３９】
Ｓ３．２３では未使用オブジェクトが一つあるためＳ３．２４に遷移する。
【０１４０】
Ｓ３．２４では最後の未使用オブジェクトであるオブジェクト１３を取り出し、オブジェクトｔとする。
【０１４１】
Ｓ３．２５で、オブジェクト１３は追加するのでＳ３．２６に遷移する。
【０１４２】
Ｓ３．２６でオブジェクト１３の定義を書き出す。書き出したデータ構造を図２６に示す。
【０１４３】
Ｓ３．２７でオブジェクト１３に継承関係を追加、変更するか判断する。オブジェクト１３の継承関係を変更するためにＳ３．２９に遷移する。
【０１４４】
Ｓ３．２９ではオブジェクト図案Ｃで、オブジェクト１３に継承関係が存在するかを判断する。その詳細は図６に記述されているが、Ｓ３．１０におけるオブジェクト１ｃの処理と同様のため省略する。図６のフローチャートを実行した結果の継承リストにはオブジェクト３ｃが入っている。
【０１４５】
Ｓ３．３０で継承リストにオブジェクトが存在するか判断する。今継承リストにはオブジェクト３ｃが入っているため、Ｓ３．３１に遷移する。
【０１４６】
Ｓ３．３１では継承リストから一つオブジェクトを取り出す。今オブジェクト３ｃが継承リストに入っているためオブジェクト３ｃを取り出し、オブジェクトｓとする。
【０１４７】
Ｓ３．３２ではオブジェクト３ｃと同じオブジェクトとみなせるオブジェクトを元オブジェクトへの履歴をたどりオブジェクト図案Ｂから検索する。その詳細は図５に記述されており、その実行手順はＳ３．６の詳細で記述した実行手順と同様である。そのようにして実行した結果、検索結果リストにはオブジェクト３ｂが入っている。
【０１４８】
Ｓ３．３３では検索結果リストにあるオブジェクト３ｂから、オブジェクト１３の継承の定義式を書き換える。オブジェクト３ｂはすでにオブジェクト３ｄによって再定義されているため、オブジェクト１３の親オブジェクトとしてオブジェクト３ｄを新たに定義式に加える。またもとの親オブジェクトであるオブジェクト３ｃを定義から削除する。その結果のデータ構造を図２７に示す。
【０１４９】
Ｓ３．３０で継承リストは空なのでＳ３．３５に遷移する。
【０１５０】
Ｓ３．３５でオブジェクト１３に新たに関連集約関係を追加しないのでＳ３．２３に遷移する。
【０１５１】
Ｓ３．２３で未使用オブジェクトはなくなったので終了し、最終的図１１に示す最終オブジェクト図Ｄのデータ構造として図２７が生成された。
【０１５２】
また最終オブジェクト図は図２７に示すデータの形式だけではなく、図１１に示すような絵として本オブジェクト図作成支援装置が出力することも可能である。その際にはオブジェクトの特性情報として座標情報やオブジェクトのサイズ情報が記載されていてもよい。この座標情報を決める例として、ベースとした図９に示すオブジェクト図案Ｂの座標情報に基づいて、追記されたオブジェクトの座標情報を本オブジェクト図作成支援装置が自動的に決める方法や、オブジェクトのサイズをオブジェクトの特性情報から作成し、それに基づいて座標情報を本オブジェクト図作成支援装置が自動的に作成する方法などがあげられる。
【０１５３】
また本実施例では図１に示すように、２つのオブジェクト図案に対して、ベースとなるオブジェクト図案を決め合成を行っているが、この２つのオブジェクト図案の合成を複数回繰り返すことで、複数のオブジェクト図案の合成も可能である。また次に示す方法で複数のオブジェクト図案を一度に合成することも可能である。複数のオブジェクト図案を一度に合成するために、まず図３のＳ２．１で複数のオブジェクト図案から一つベースとなるオブジェクト図案を決める。そして図４のフローチャートを実行する際に、Ｓ３．６で検索を行う対象となるオブジェクト図を残りの全てのオブジェクト図とする。そして、Ｓ３．９、Ｓ３．１０、Ｓ３．１６におけるオブジェクト図ＮをＳ３．９で置換に利用したオブジェクトが存在するオブジェクト図とする。そしてＳ３．２３において未使用オブジェクトが存在するかどうかを、ベースとなるオブジェクト図案以外の全てのオブジェクト図案から判断をする。このように図３、図４のフローチャートを一部変更することで３つ以上の複数のオブジェクト図案を一度に合成することが可能になる。
【０１５４】
【発明の効果】
以上説明したように、本発明によれば、一つのオブジェクト図をベースとしている複数のオブジェクト図間でオブジェクトの移動を行う場合に、移動先でそのオブジェクトが他のどのオブジェクトと関係があるか、そのオブジェクト自身は移動先のどのオブジェクトと同一のオブジェクトであるかをしめし、オブジェクト図の選択、合成を支援することができる。このことは、例えば、オブジェクト指向分析・設計を行う際に、複数人でそれぞれ設計を行い、それぞれが作成したオブジェクト図を合成、統合する場合に効果がある。
【図面の簡単な説明】
【図１】実施例の機能構成を示すブロック図。
【図２】実施例のオブジェクト図案の合成手段を示すフローチャート。
【図３】ベースオブジェクト図の設定とオブジェクト図の展開を示すフローチャート。
【図４】オブジェクト図案の合成アルゴリズムを示すフローチャート。
【図５】履歴をたどり、オブジェクト図Ｍのオブジェクトαと同じとみなせるオブジェクトをオブジェクト図Ｎから検索するアルゴリズムを示すフローチャート。
【図６】履歴をたどり、オブジェクト図Ｍのオブジェクトβと継承関係にあるオブジェクトをオブジェクト図Ｎから検索するアルゴリズムを示すフローチャート。
【図７】履歴をたどりオブジェクト図Ｍのオブジェクトγと関連集約関係にあるオブジェクトをオブジェクト図Ｎから検索するアルゴリズムを示すフローチャート。
【図８】元オブジェクト図Ａを示す図。
【図９】オブジェクト図案Ｂを示す図。
【図１０】オブジェクト図案Ｃを示す図。
【図１１】合成後の最終オブジェクト図Ｄを示す図。
【図１２】元オブジェクト図Ａを表現するデータ構造を示す図。
【図１３】オブジェクト図案Ｂを表現するデータ構造を示す図。
【図１４】オブジェクト図案Ｃを表現するデータ構造を示す図。
【図１５】履歴からオブジェクト図案Ｂの情報を展開したデータ構造を示す図。
【図１６】履歴からオブジェクト図案Ｃの方法を展開したデータ構造を示す図。
【図１７】最終オブジェクト図のデータ構造にオブジェクト１の再定義を追加したことを示す図。
【図１８】最終オブジェクト図のデータ構造にａｓｓ４の削除を追加したことを示す図。
【図１９】最終オブジェクト図のデータ構造にオブジェクト３ｂの再定義を追加したことを示す図。
【図２０】最終オブジェクト図のデータ構造にオブジェクト５とａｇｇ２の削除を追加したことを示す図。
【図２１】最終オブジェクト図のデータ構造にオブジェクト７の再定義を追加したことを示す図。
【図２２】最終オブジェクト図のデータ構造にａｓｓ６の定義を追加したことを示す図。
【図２３】最終オブジェクト図のデータ構造にオブジェクト９の再定義を追加したことを示す図。
【図２４】最終オブジェクト図のデータ構造にオブジェクト１２の定義を追加したことを示す図。
【図２５】最終オブジェクト図のデータ構造にａｓｓ７の定義を追加したことを示す図。
【図２６】最終オブジェクト図のデータ構造にオブジェクト１３の定義を追加したことを示す図。
【図２７】最終オブジェクト図のデータ構造にオブジェクト１３の継承関係の書き換えをし、最終オブジェクトの最終的なデータ構造を示す図。
【符号の説明】
Ｅ１  入出力装置
Ｅ２  元オブジェクト図作成手段
Ｅ３  元オブジェクト図から複数のオブジェクト図案作成手段
Ｅ４  オブジェクト図案の合成手段
Ｅ５  元オブジェクト図記憶手段
Ｅ６  オブジェクト図案１記憶手段
Ｅ７  オブジェクト図案２記憶手段
Ｅ８  最終オブジェクト図案記憶手段
【図１】
2004192034.tif 000003
【図２】
2004192034.tif 000004
【図３】
2004192034.tif 000005
【図４】
2004192034.tif 000006
【図５】
2004192034.tif 000007
【図６】
2004192034.tif 000008
【図７】
2004192034.tif 000009
【図８】
2004192034.tif 000010
【図９】
2004192034.tif 000011
【図１０】
2004192034.tif 000012
【図１１】
2004192034.tif 000013
【図１２】
2004192034.tif 000014
【図１３】
2004192034.tif 000015
【図１４】
2004192034.tif 000016
【図１５】
2004192034.tif 000017
【図１６】
2004192034.tif 000018
【図１７】
2004192034.tif 000019
【図１８】
2004192034.tif 000020
【図１９】
2004192034.tif 000021
【図２０】
2004192034.tif 000022
【図２１】
2004192034.tif 000023
【図２２】
2004192034.tif 000024
【図２３】
2004192034.tif 000025
【図２４】
2004192034.tif 000026
【図２５】
2004192034.tif 000027
【図２６】
2004192034.tif 000028
【図２７】
2004192034.tif 000029