1

私はこのJavaミューテーターsetBoardを持っています。

public void setBoard(Cell[] board){
        for(int i=0; i < board.length; i++)
            this.board[i] = new Cell(0, "E");   
        makeChutes(numChutes);
        makeLadders(numLadders);
}

makeChutes と makeLadders は setBoard と同じクラスのメソッドです。彼らはボード全体のランダムな場所にシュートとはしごを配置します。numChutes と numLadders は、このクラスのコンストラクターから取得されます。

私の理解では、最初に空白のボードを設定し、次にいくつかのシュートとはしごを配置するミューテーターを作成しました。しかし、私の教授は、setBoard メソッドはボードを初期化するべきではなく、代わりにパラメーターに渡されるものを設定するべきだと言っています。これが何を意味するのか正確にはわかりません。

セルは次のオブジェクトです。

public class Cell{

private String type;
private int space;

public Cell(){
}

public Cell(int m, String r){
    this.space = m;
    this.type = r;
}
public void setType(String r){
    this.type = r;
}
public void setSpace(int m){
    this.space = m;
}
public boolean isChute(){
    return type.equals("C");
}
public boolean isLadder(){
    return type.equals("L");
}
public boolean isEmpty(){
    return !type.equals("C") && !type.equals("L");
}
public String toString(){
    return this.type + Math.abs(this.space);

}
}
4

1 に答える 1

1

このコンテキストでの初期化とは、クラスの内部状態をいくつかのデフォルト値に設定することを指します。通常、初期化は内部ロジックです。

  1. パブリックで呼び出し可能なメソッドとして公開されていない
  2. 達成するためにデータを提供する必要はありません

これらは一般的な規則です。一方、ミューテーターは通常、クラスの内部状態を現在の状態以外に設定する呼び出し可能なメソッドです。設定するデータは、メソッドに引数として渡されます。Java のミューテーターは、単一の引数を受け入れるメソッドであり、命名パターンsetXXXに従います。ここで、XXX は、クラスで変更されるプロパティの名前です。メソッドへの単一の引数は、変更されるプロパティと同じ型を持つ必要があります。あなたの例では:

public void setBoard(Cell[] board){
    // ...
}

setBoardboardタイプのプロパティのミューテータですCell[]board実装は、 の現在の値を渡されたものに単純に置き換えることができます。たとえば、次のようになります。

public void setBoard(Cell[] board) {
    this.board = board;
}
于 2013-03-24T21:21:47.257 に答える