[top] [previous] [next]

 

5. 内部データ構造

この章では,内部データ構造について説明する.


5.1 データ構造

この節では,H3-Codeをプログラムで実装するためのクラス構造及びパッケージ構造について説明する.

5.1.1 概要

H3-Codeで必要なデータ構造は,h3codeパッケージにより提供される.
h3codeパッケージは,3章で述べた抽象データ構造をプログラムで実現するためのクラスの集合である.

5.1.2 パッケージ構造

パッケージ h3codeは次のクラス図で定義される.


図 5.1 h3codeパッケージ(UML Class Diagram)

5.1.3 Tableとセル

Tableクラスとセルクラスは図5.1のような関係をもつ.

Tableクラスは,AbstractCellクラスを親クラスに持つサブクラスをいくつか持つ.
AbstractCellクラスを親に持つサブクラス(CellとPerimeterCell)は,Tableクラス内で配列として格納される.

ここで,表について説明する.
図5.2は,あるテーブルを図で表したものである.
テーブルを囲む色のついたセルは周辺セル(Perimeter Cell)である.
表の4角の周辺セルは,予約されており,どのような表においても図のように1から4のIDがふられる.


図5.2 表(左)とセル(右)

 

図 5.3は,ある表と,それに対応するTableクラスのインスタンスが持つセル配列の例である.
配列の添字(index)とセル番号は対応している.
配列の添字1から4は,上で説明したように予約されている.


図 5.3 ある表とそれに対応するTableクラス内のセルを格納する配列

Tableクラスは,予約された1番と4番の周辺セルにアクセスするためのメソッドを持つ.
1番の予約セルに対しては,getHead()メソッドで,4番の予約セルに対しては,getTail()メソッドでアクセスできる.

5.1.4 セルとコンテンツ

CellクラスとContentインタフェースの関係は,図5.1ように定義される.
CellクラスはContentインタフェースを実装したクラスを1つ持つことが出来る(持たなくても良い).

5.1.5 セルとリンク

AbstractCellは,セルの構造を表し,壁の座標のためのフィールドを持つ.
AbstractCellのサブクラスであるCellクラス及びPerimeterCellクラスは,壁の座標のためのフィールドを継承する.
壁の座標フィールドの値を得るためには,AbstractCellクラスのgetWall()メソッドを使用する.

図 5.3はCellクラスのインスタンスcに対する壁の位置とcのフィールドの関係である.


図 5.4 セルと壁の座標

各セルはその周りのセルとポインタで接続している.
周りのセルへのポインタはAbstractLinkedNodeクラスがもっており,
そのサブクラスであるPerimeterCellクラスとCellクラスは,そのフィールドを継承している.
この接続は,各壁の位置と関係しており,同じ位置の壁をもつ一番近いセルとの接続である.
図 5.5は,1つのセルを図で表したものである.
セルの周辺に配置された8個の四角形は,それぞれセルを接続するためのポインタである.




図 5.5 セル(AbstractLinkedNodeクラス)の図表現

図 5.6は,あるテーブルとそれに対応するセルを接続した表構造リストである.


図 5.6 表(左)とそれに対応する表構造リスト(右)[セルの接続]

 

5.1.6 クラスファイル説明

ここでは,h3codeの各クラスについて説明する.

 

AbstractLinkedNode


AbstractCell

 

Cell

 

PerimeterCell

 

Content

 

Table

 

AbstractContentTypeTable

 


5.2 Java言語による実装

h3-codeはJava言語で実装されている.
H3-Code version 2.0対応Jarファイルは下からダウンロードできる.

h3code package : h3code.jar
Copyright © 2003 Tomokazu ARITA. All Rights Reserved.
Licence Rule: GPL and Hichart.org Licence Rule.
Mail: arita@r.dendai.ac.jp

 

[top] [previous] [next]