10.05.2014 Views

programación i - Universidad ORT Uruguay

programación i - Universidad ORT Uruguay

programación i - Universidad ORT Uruguay

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Programación I 123<br />

System.out.println("El teléfono de Patricia es "+agenda.darTelefonoDe("Patricia"));<br />

if (agenda.estaElNombre("Irene")) {<br />

System.out.println("El teléfono de Irene está en la Agenda");<br />

}<br />

if (agenda.estaElTelefono(3761241)) {<br />

System.out.println("Sí, está el teléfono 3761241");<br />

}<br />

System.out.println("Lista de todos los telefonos "+agenda.darTelefonos());<br />

Iterator tels = agenda.darTelefonos();<br />

Iterator nombres = agenda.darNombres();<br />

while (tels.hasNext() ) {<br />

System.out.println("Nombre "+nombres.next()+ " telefono "+tels.next());<br />

}<br />

System.out.println("Saco telefono de Patricia");<br />

agenda.sacarTelefonoDe("Patricia");<br />

agenda.cambiarTelefonoDe("Suzi",996892);<br />

tels = agenda.darTelefonos();<br />

nombres = agenda.darNombres();<br />

while (tels.hasNext() ) {<br />

System.out.println("Nombre "+nombres.next()+ " telefono "+tels.next());<br />

}<br />

}<br />

}<br />

En esta versión, para simplificar, se considera que la persona es simplemente representada por<br />

un String.<br />

Consideremos ahora cómo sería la implementación de la clase Agenda Telefónica.<br />

Analizaremos de qué formas se podría almacenar los datos de nombre y teléfono. Una<br />

alternativa es llevar 2 arrays "paralelos", uno con las personas y otro con los números de<br />

teléfono. El problema de esta opción es que es necesario mantener manualmente la<br />

correspondencia siempre. Por ejemplo, si se elimina una persona, hay que eliminar el<br />

correspondiente teléfono en la otra lista.<br />

Conviene investigar en Java a ver si existe algún tipo especial de colección aplicable para este<br />

caso. Hay estructuras apropiadas para este tipo de relación. Lo que se necesita es algo que tenga<br />

una lista de claves y de valores asociados. Hay pares clave/valor, con las claves como filas de<br />

una tabla y valores como columnas de la tabla. Esta estructura es el HashMap (que está en<br />

java.util).<br />

Puedo averiguar cuántas "filas" hay ocupadas (size), saber si esta vacío (isEmpty), obtener las<br />

claves (keySet, devuelve una Collection, se puede pedir un Iterator), obtener los valores<br />

(values), obtener el objeto de una clave (get) y poner un objeto en una clave (put). También<br />

puedo sacar una clave (remove). También puedo preguntar si está determinada clave<br />

(containsKey) y también si está determinado valor (containsValue).<br />

package PaqueteAgendaTelefonica;<br />

import java.util.*;<br />

public class AgendaTelefonica {<br />

private HashMap agenda;<br />

public AgendaTelefonica() {<br />

agenda = new HashMap();

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

Saved successfully!

Ooh no, something went wrong!