2013-03-24 4 views
1

,자바 뮤 테이터 : 나는이 자바 뮤 테이터 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는이 클래스의 생성자에서 가져옵니다.

처음으로 빈 보드를 설정 한 mutator를 만든 다음 몇 개의 낙하산과 사다리를 배치했습니다. 그러나 제 교수는 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); 

} 
} 

답변

1

초기화는 일부 기본값으로 클래스의 일부 내부 상태를 설정하는 의미, 다음과 같은 객체입니다. 일반적으로 초기화 이들은 일반 규칙입니다

을 수행 할

  • 순서대로 제공되는 데이터를 필요로하지 않습니다

    1. 공개로 노출되지 않는 내부 로직, 호출 방법이다. 한편, 뮤 테이터는 일반적으로 클래스의 내부 상태를 현재 상태가 아닌 다른 것으로 설정하는 호출 가능 메소드입니다. 설정 될 데이터는 메소드의 인수로 전달됩니다. Java의 Mutators는 단일 인수를 허용하는 메서드이며 setXXX이라는 명명 패턴을 따릅니다. 여기서 XXX는 클래스에서 변형 된 속성의 이름입니다. 메서드에 대한 단일 인수는 변형 될 속성과 동일한 유형이어야합니다. 귀하의 예제에서 그래서 :

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

      setBoard 유형 Cell[]의 속성 board를위한 뮤 테이터입니다.

      public void setBoard(Cell[] board) { 
          this.board = board; 
      } 
      
  • +0

    내가 이런 짓을하면 어떻게 보드를 초기화하는 것입니다 : 구현은 아주 잘 간단하게 예를 들어, 전달 된 것과 board의 현재 값을 대체 할 수 있을까? 즉, 생성자에서 낙하산과 사다리 배치 – myacobucci

    +0

    초기 보드 값, 낙하산과 사다리를 설정하는 로직을 사용하여 클래스에서'protected void initialize()'메소드를 정의하고 생성자에서이 메소드를 호출 할 수 있습니다. 또는 논리를 생성자에 직접 넣을 수도 있습니다. – Perception

    관련 문제