Therefore we add a getHeuristic method to the State interface: State.java.
For PuzzleState we implement heuristics like this:
public int getHeuristic(State goal) {
return tilesOutOfPlace(goal);
}
private int tilesOutOfPlace(State goal) {
...
}