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.

106<br />

5. más clases<br />

Tengamos en cuenta que esta recomendación es conveniente<br />

aplicarla en casos donde el constructor acepte varios parámetros o<br />

donde haya varias formas distintas de crear el objeto.<br />

Para la inicialización de las células escribimos los métodos que se<br />

muestran en el siguiente código:<br />

GameOfLife seedLiveCell(final Point seed) {<br />

return seedLiveCells(seed);<br />

}<br />

GameOfLife seedLiveCells(final Point ... seeds) {<br />

for (Point seed : seeds) {<br />

grid().putAt(seed, liveCell());<br />

}<br />

return this;<br />

}<br />

El primer método es para agregar de a una célula por vez, que<br />

también utiliza el segundo, pues se trata de una extensión para<br />

agregar varias simultáneamente. Vemos el uso de argumentos<br />

variables y observemos el que presenta final en los argumentos. Las<br />

células se ubican en una grilla, modelada por la clase Grid. Esta clase<br />

genérica (la veremos este tema más adelante), se va a encargar de<br />

manejar la ubicación de las células por nosotros. Para inicializar la<br />

grilla utilizamos el mismo mecanismo que con GameOfLife, un static<br />

factory method, al que también le indicamos un objeto Default para<br />

la inicialización de cada celda de la grilla. GameOfLife define el valor<br />

inicial de la celda de la grilla como una célula muerta.<br />

Utilizar la máxima abstracción posible<br />

Cuando especificamos el tipo de un parámetro o el tipo de retorno de un método debemos pensar<br />

siempre en la máxima abstracción que nos sirva. Esta abstracción debe ser el requerimiento mínimo de<br />

nuestro método. Utilizaremos en estos casos clases abstractas e interfaces en vez de clases concretas.<br />

www.redusers.com<br />

www.FreeLibros.me

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

Saved successfully!

Ooh no, something went wrong!