Java オブジェクト指向プログラミング ステップ3(interface補足)

前のページ で作成したbinSearchメソッドとそれに対するObjComparableインターフェースの利用です。

その前に少し補足します。ObjComparableインターフェイスは次のように作っていました。

package any;

public interface ObjComparable 
{
	public int compareTo(ObjComparable o);
}

クラスとインターフェイスの違いで説明すます。

汎用化する処理を作る場合、このようなインターフェイスを作って、それを利用して メソッドを作ります。よく使うアルゴリズムなどでは、それを利用する作り方で作るわけです。
次は前のページで作成したRec23BinSearchクラスの一部で、 上記インターフェイスを利用した部分です。
(本来は、Record2と関係ないクラスなので、これを連想させる名前でないクラス名にすべきでしょう。 また、汎用的に使うクラスなのでmainを作らないクラスにすべきでしょう。)

package rec;
import rec.Record2;
import any.ObjComparable;
public class Rec23BinSearch //←Record2を連想させない名前の方がよい
{
	・・・・省略・・・・
	
	//バイナリーサーチ2分探索(binary search )
	public static int binSearch(ObjComparable[] a, ObjComparable key, int iStart, int iEnd){
		int iL = iStart;	//現在の探索範囲で、先頭の添え字(左)
		int iR = iEnd - 1;	//現在の探索範囲で、末尾の添え字(右)
		while (iL <= iR){
			int iC = (iL + iR) / 2;	//現在の探索範囲で、中央の添え字(中心)
			ObjComparable rec = a[iC];
			int val = rec.compareTo(key);//インターフェイスのメソッドで比較
			if (val == 0){
				return iC;//見つかった
			} else if (val < 0) {//keyが大きい
				iL = iC + 1;
			} else {/* keyが小さい */
				iR = iC - 1;
			}
		}
		return -1; //見つからない
	}
}

以下で、上記のbinSearchの使う新しい例を示します。(Record2と関係ないクラスの例です)
x,y,zのメンバを持つMyPointクラスで確認します。
このクラスで、MyPointの配列を作り、その中で、xのフィールドの値が一致するものを探す例です。
このクラス図を参考に示します。このようにインターフェイスの図では、○の記号以外に破線△矢印を用いることがあります。

■■■■の部分を正しく直しましょう。

←正しく修正してからクリックください。

←わからない場合は、クリック