23.02.2017 Views

Java

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Java</strong> 109<br />

Cell es la clase abstracta para representar a todas las células.<br />

Declaramos que todas las células pueden responder si están vivas<br />

o muertas y, también, que su evolución depende de las células a su<br />

alrededor. Subtipamos las células en vivas o muertas explícitamente en<br />

el diseño al crear clases para ambos tipos.<br />

public class DeadCell extends Cell {<br />

@Override<br />

public boolean isDead() {<br />

return true;<br />

}<br />

}<br />

public class LiveCell extends Cell {<br />

}<br />

Es obvio que la implementación del mensaje isDead para una célula<br />

muerta es simplemente devolver true. LiveCell hereda directamente el<br />

comportamiento de Cell en este caso.<br />

Ahora pensemos en cómo modelar la interacción entre el vecindario<br />

y las células. En principio hay que contar cuántos vecinos vivos<br />

conforman el vecindario. Según las reglas nos interesa contar si hay<br />

cero, uno, dos, tres y más de tres vecinos. Modelemos exactamente<br />

esto, empezamos con un vecindario vacío. Si agrego una célula viva,<br />

paso a tener un vecindario de uno, etcétera.<br />

abstract class Neighborhood {<br />

abstract public Neighborhood receiveLiveCell();<br />

}<br />

class ZeroNeighborsAlive extends Neighborhood {<br />

@Override<br />

public Neighborhood receiveLiveCell() {<br />

return new OneNeighborAlive();<br />

}<br />

}<br />

class OneNeighborAlive extends Neighborhood {<br />

@Override<br />

www.FreeLibros.me<br />

www.redusers.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!