programación i - Universidad ORT Uruguay
programación i - Universidad ORT Uruguay
programación i - Universidad ORT Uruguay
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();