Java言語では、オブジェクトのクラスとオブジェクトの型の分離のため、インターフェー スを採用した。このインターフェースは、インターフェース自体の継承をサポートしてい る。また、インターフェースは実装を持たないので、多重継承をおこなっても問題を生じ ない。そのため、Javaのインターフェースの継承は、多重継承をサポートする。
多重継承をサポートするインターフェースが直接継承するスーパーインターフェースの 数は、0個以上となり、1つだけとは限らない。そのため、インターフェース継承構造を クラス継承構造と同様に、ツリー表示することはできない。
しかし、本研究では、クラス継承構造ブラウジング方法との整合性を向上し、操作の統 一を図るため、ツリー構造による実装を試みた。以下に対策を示す。
多重継承の有無に関らず、スーパーインターフェースのないインターフェースから ツリー状に継承構造を表示する。
インターフェースをツリーへ表示するとき、そのインターフェースが多重継承して いた場合は、スーパーインターフェース数を同時に表示する。
この対策をとると、多重継承を行っているインターフェースが、インターフェース継承 ツリー中の複数の場所に出現することになる。しかし、この問題は、他の出現場所への参 照を瞬時に行えるような機能を搭載することにより解決できる。
4.4 Party
連鎖のブラウジング
デザインパターンでは、オブジェクトコンポジションが特に重要である。そこで、ブラ ウザの表示は次のようにする。
オブジェクトコンポジションの可能性を表現するため、Party間の「part-of」関係 を中心とした表示とする。
Party間の「is-a」関係については、上記関係の表示へ、補助的に導入する。
また、Party間の「part-of」関係は、あるPartyをルートとしたツリーとして表示でき る。そこで、本研究にでは、指定クラスからの「part-of」関係によるParty連鎖ツリー表 示をサポートすることにする。
さらに、ツリー表示をした個々のPartyの中には、「is-a」関係をもつPartyも存在す る。その場合は、該当ノード形状として、「is-a」関係の存在を明示し、下位のPartyへ の切り替え表示をサポートすることとする。このことによって、サブクラスの形成する
Party連鎖を知ることができる。
インターフェースに関しては、そのインターフェースに関するPartyとして、インター フェースを実装するクラス群を表示する。
図4.1に、Party 連鎖ツリーの概要を示す。また、図4.2に、「is-a」関係の切り替えを 示す。
図4.1: Party連鎖ツリーの概要
なお、Party連鎖のルートとなるPartyを選択する必要がある。これは、ルートとなる
Partyを構成するクラス(もしくはインターフェース)を以下の場所から選択することで
解決する。
パッケージツリー
クラス継承ツリー
インターフェース継承ツリー
他のPartyをルートとするParty連鎖ツリー
図4.2: 「is-a」関係の切り替え
第
5章
クラスブラウザの実装
本章では、クラスブラウザの実装例を紹介する。