package cellsociety.config; public class ConfigLoader { public SimulationConfig loadConfig(File xmlFile) throws ParserConfigurationException, IOException, SAXException } package cellsociety.config; public final class SimulationConfig { public SimulationConfig( public String getSimulationType() public String getTitle() public String getAuthor() public String getDescription() public int getRows() public int getCols() public int [][] getInitialStates() public Map getParameters() } package cellsociety.Controller; public class SimulationController { public SimulationController(SimulationView simView) public void setSimulation(Simulation sim) } package cellsociety; public class Main extends Application { public static final String DATA_FILE_FOLDER public void start (Stage primaryStage) public int calculateNumBlocks(File xmlFile) public double getVersion () } package cellsociety.Model; public class SimulationDriver { public SimulationDriver() public void setSimulation(Simulation simulation) public Simulation getSimulation() public void setOnStepCallback(Runnable onStepCallback) public boolean isRunning() public double getStepsPerSecond() public void start() public void pause() public void setSpeed(double stepsPerSecond) public void step() } package cellsociety.Model.GameRules; public class ConwayGameOfLifeRule extends GameRule { public ConwayGameOfLifeRule() public ConwayGameOfLifeRule(Map parameters) public int getNextState(int currentState, List neighbors) public Map getStateColors() } package cellsociety.Model; public class Simulation { public Simulation(Grid grid, GameRule rule) public void step() public GameRule getRule() public ReadOnlyGrid getGrid() } package cellsociety.Model; public interface ReadOnlyCell { public int getState(); } package cellsociety.Model; public abstract class GameRule { public GameRule(NeighborStrategy neighborStrategy) public GameRule(NeighborStrategy neighborStrategy, Map parameters) public abstract int getNextState(int currentState, List neighbors); public NeighborStrategy getNeighborStrategy() public abstract Map getStateColors(); protected int countNeighborsWithState(List neighbors, int targetState) } package cellsociety.Model; public class Grid implements ReadOnlyGrid{ public Grid(int rows, int cols) public void setCellsState(int[][] state) public int getRows() public int getCols() public int getCellState(int row, int col) public List getCellNeighbors(int row, int col, GameRule rules) public void updateAllCells(GameRule rules) public void commitAllStates() } package cellsociety.Model.Utils; public interface NeighborStrategy{ List getNeighborOffsets(); } package cellsociety.Model.Utils; public class MooreNeighborStrategy implements NeighborStrategy { public List getNeighborOffsets() } package cellsociety.Model; public interface ReadOnlyGrid { int getRows(); int getCols(); int getCellState(int row, int col); } package cellsociety.Model; public class Cell implements ReadOnlyCell { public Cell(int state) public int getState() public void setState(int state) public void updateNextState(GameRule rules, List neighbors) } package cellsociety.Model; public class SimulationFactory { public static Grid createInitialGrid(SimulationConfig config) public static Simulation createSimulation(SimulationConfig config) public static GameRule createGameRule(SimulationConfig config) } package cellsociety.View; public class SimulationView { public SimulationView() public File showOpenConfigDialog() public Parent getRoot() public boolean isRunning() public Button getMyUploadButton() public Button getMyStartButton() public Button getMyPauseButton() public Button getMySpeedUpButton() public Button getMySlowDownButton() public Button getMyStepButton() public Button getMySaveButton() public GridView getMyGridView() public void setGrid(int rows, int cols, double cellSize) } package cellsociety.View; public class GridPaneView implements GridView{ public GridPaneView(int rows, int cols, double cellSize) public Node getNode() public void clear() public void render(ReadOnlyGrid grid, Map stateColors) } package cellsociety.View; public interface GridView { void render(ReadOnlyGrid myGrid, Map stateColors); void clear(); Node getNode(); }