ARREGLOS DE OBJETOS Creamos la siguiente clase Persona public class Persona { private String Nombre; private String ApellidoP; private String ApellidoM; //Método constructor public Persona(){ Nombre = ""; ApellidoP = ""; ApellidoM = ""; } //Métodos Set public void setNombre(String n){ Nombre = n.toUpperCase(); } public void setApellidoP(String ap){ ApellidoP = ap.toUpperCase(); } public void setApellidoM(String am){ ApellidoM = am.toUpperCase(); } //Métodos Get public String getNombre(){ return Nombre; } public String getApellidoP(){ return ApellidoP; } Mtro. Omar Zárate http://ozarate.net } public String getApellidoM(){ return ApellidoM; } Creamos la clase contacto que hereda de la clase Persona public class contacto extends Persona{ private String Email; private String Direccion; //Constructor public contacto(){ Email = ""; Direccion = ""; } //Métodos Set public void setEmail(String em){ Email = em.toLowerCase(); } public void setDireccion(String d){ Direccion = d; } //Métodos Get public String getEmail(){ return Email; } public String getDireccion(){ return Direccion; } } Mtro. Omar Zárate http://ozarate.net Creamos la clase Estructura Contactos donde colocamos el arreglo de contactos y los métodos para agregar elementos, ordenar los elementos y buscar los elementos public class estructuraContactos { //Constante con el número de elementos en el arreglo final int N = 10; //Variable que guarda la posición del último elemento agregado //en el arreglo, si la variable contiene un ‐1 significa que el //arreglo está vacío int ultimo = ‐1; //Arreglo de contactos private contacto[] elementos = new contacto[N]; //Método Constructor public estructuraContactos(){ //Ejecutamos los constructores de cada elemento for(int e = 0; e < N; e++){ elementos[e] = new contacto(); } } //Metodo que agrega un nuevo elemento en el arreglo public void setContacto(contacto d){ if(ultimo < (N‐1)) { ultimo++; elementos[ultimo].setNombre(d.getNombre()); elementos[ultimo].setApellidoP(d.getApellidoP()); elementos[ultimo].setApellidoM(d.getApellidoM()); elementos[ultimo].setEmail(d.getEmail()); elementos[ultimo].setDireccion(d.getDireccion()); } else { System.out.println("YA NO HAY ESPACIO EN LA ESTRUCTURA..."); Mtro. Omar Zárate http://ozarate.net } } //Método que muestra todos los datos public void muestra_datos(){ if(ultimo != ‐1){ for(int e = 0; e <= ultimo; e++){ System.out.println("ELemento " + e + ": "); //Mostramos el nombre System.out.print("Nombre: "); System.out.println(elementos[e].getNombre()); //Apellido Paterno System.out.print("Apellido Paterno: "); System.out.println(elementos[e].getApellidoP()); //Apellido Materno System.out.print("Apellido Materno: "); System.out.println(elementos[e].getApellidoM()); //Apellido Direccion System.out.print("Direccion: "); System.out.println(elementos[e].getDireccion()); //Email System.out.print("Email: "); System.out.println(elementos[e].getEmail()); System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"); } } else { System.out.println("ESTRUCTURA VACIA..."); } } //Ordena por burbuja public void ordenaNombres(){ contacto temporal = new contacto(); for( int i = 0; i < ultimo; i++ ){ for(int j = 0; j < ultimo; j ++) { Mtro. Omar Zárate http://ozarate.net if(elementos[j+1].getNombre().compareTo(elementos[j].getNombre( )) < 0){ //Intecambio de datos temporal = elementos[j]; elementos[j] = elementos[j+1]; elementos[j+1] = temporal; } } } } //Método para buscar public void busca(String dato){ dato = dato.toUpperCase(); int encontrado = ‐1; //Busqueda secuencial for(int e = 0; e < ultimo; e++) { if(elementos[e].getNombre().equals(dato)){ encontrado = e; break; } } if(encontrado != ‐1) { System.out.print("DATO ENCONTRADO EN " + encontrado +": \n"); muestra_elemento(encontrado); } else{ System.out.println("DATO "+dato+" NO ENCONTRADO..."); } } //Método que muestra uno de los elementos Mtro. Omar Zárate http://ozarate.net } public void muestra_elemento(int e){ if((e >= 0)&& (e <= ultimo)) { System.out.println("ELemento " + e + ": "); //Mostramos el nombre System.out.print("Nombre: "); System.out.println(elementos[e].getNombre()); //Apellido Paterno System.out.print("Apellido Paterno: "); System.out.println(elementos[e].getApellidoP()); //Apellido Materno System.out.print("Apellido Materno: "); System.out.println(elementos[e].getApellidoM()); //Apellido Direccion System.out.print("Direccion: "); System.out.println(elementos[e].getDireccion()); //Email System.out.print("Email: "); System.out.println(elementos[e].getEmail()); System.out.println("‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐"); } } Creamos una clase con método main para ejecutar un objeto de la clase estructura contacto public class ejecutableContactos { public static void main(String[] args) { estructuraContactos misContactos = new estructuraContactos(); //Objeto contacto para mandar datos a la estructura contacto dato = new contacto(); Mtro. Omar Zárate http://ozarate.net Mtro. Omar Zárate http://ozarate.net //Aasignamos el primer dato dato.setNombre("Omar"); dato.setApellidoP("Zarate"); dato.setApellidoM("Navarro"); dato.setDireccion("Luis J Jimenez, Col. Primero de Mayo"); dato.setEmail("OZARATE@UTJ.EDU.MX"); //Lo guardamos en la estructura misContactos.setContacto(dato); //misContactos.muestra_datos(); //Aasignamos el segundo dato dato.setNombre("Jorge"); dato.setApellidoP("ROdriguez"); dato.setApellidoM("Martines"); dato.setDireccion("Luis J Jimenez, Col. Primero de Mayo"); dato.setEmail("jRodrigUez.EDU.MX"); //Lo guardamos en la estructura misContactos.setContacto(dato); //Aasignamos el tercer dato dato.setNombre("alma"); dato.setApellidoP("villarruel"); dato.setApellidoM("gomez"); dato.setDireccion("Luis J Jimenez, Col. Primero de Mayo"); dato.setEmail("jRodrigUez.EDU.MX"); //Lo guardamos en la estructura misContactos.setContacto(dato); misContactos.muestra_datos(); System.out.print("‐‐‐‐‐‐‐‐‐‐‐‐\n\n\n"); misContactos.ordenaNombres(); misContactos.muestra_datos(); misContactos.busca("alma"); } } Mtro. Omar Zárate http://ozarate.net