domingo, 17 de marzo de 2013

Lista de Objetos usando Java.


Saludos a todos.

En ésta oportunidad escribiré acerca de una aplicación muy básica pero con conceptos que nos pueden ser de mucha en el aprendizaje de la programación en Java.

La idea básica de la aplicación es construir una clase llamada Persona, que contendrá propiedades y métodos propios de una persona del mundo real, con dicha clase construiremos objetos de personas y las iremos almacenando en una lista; además realizaremos dos operaciones con la lista, agregar y eliminar.

La apariencia final de la aplicación es ésta:


Para iniciar la clase Persona tendrá las siguientes propiedades:

    private String id;
    private String primerNombre;
    private String segundoNombre;
    private String primerApellido;
    private String segundoApellido;
    private String direccion;
    private String telefono;

Además por cada propiedad tendrá dos métodos que iniciaran con las palabra inglesa 'get' o 'set' respectivamente (no es obligatorio usar éstas palabras, pero es sugerido), para el caso de la propiedad 'id' quedaría así:

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

El método getId retorna el valor de la propiedad 'id' y setId permite asignarle un valor a la propiedad 'id'; a la práctica antes descrita se le conoce como encapsulamiento y lo que persigue es que no se puedan acceder a las propiedades de la clase directamente, sino haciendo uso de métodos.

Ubiquémonos en el cuerpo del método setId y encontramos la siguiente linea:
this.id = id;





Si observamos, podemos notar que dicho método recibe por parámetro una variable de tipo String llamada 'id', pero también tenemos una propiedad en la clase Persona con el mismo nombre; en caso de ser necesario podemos anteponer la palabra reservada this para dejar claro que hacemos referencia a la propiedad propia de la clase.

Una vez tengamos creada la clase Persona, ya podemos crear objetos de la misma, agrego que una clase no es lo mismo que un objeto; la clase en términos menos técnicos es como una plantilla que nos sirve de guía para construir objetos cada vez que los necesitemos; los objetos o también llamados instancias son una representación de los objetos del mundo real.

Para la construcción de objetos de la clase Persona usamos la palabra reservada new de la siguiente forma:

Persona persona1 = new Persona();
Persona persona2 = new Persona();
Persona persona3 = new Persona();
Persona persona4 = new Persona();

Ahora solo nos falta una lista para ir almacenando nuestras instancias, en java podemos hacerlo de muchas formas como por ejemplo:

Persona persona = new Persona();//creamos el objeto persona
ArrayList<Persona> arrayList = new ArrayList<Persona>();//creamos el objeto lista
arrayList.add(persona);//almacenamos la persona en la lista

Ademas tambien podemos usar arreglos, nos quedaría algo así:

Persona persona1 = new Persona();//creamos el objeto persona1
Persona persona2 = new Persona();//creamos el objeto persona2
Persona[] ListaPersonas = new Persona[100];//Creamos una arreglo para 100 personas
ListaPersonas[0] = persona1;//almacenamos la persona1 en la posicion 0
ListaPersonas[1] = persona2;//almacenamos la persona2 en la posicion 1





Pero no he usado ninguna de las anteriores formas para almacenas a los objetos 'persona', he preferido usar una lista del tipo DefaultListModel; la razón es que ésta lista es un modelo de otro objeto llamado Jlist que una vez los 'asociamos'  me permitirá visualizar informacion de cada persona en la lista, cada vez que agregue o elimine una persona de la lista automaticamente se verá el cambio en el Jlist, para el codigo nos quedará algo asi:

JList jListPersonas = new Jlist();//Creamos el objeto que nos visualizará las personas
DefaultListModel modelo = new DefaultListModel();//creamos la lista modelo
jListPersonas.setModel(modelo);//Asociamos la lista modelo a el objeto que nos visualizará las personas

Persona persona = new Persona();//creamos el objeto persona

persona.setId(“78076126”);//Llenamos datos con los métodos que inician con set
persona.setPrimerNombre(“rey”);
persona.setSegundoNombre(“fernando”);
persona.setPrimerApellido(“salcedo”);
persona.setSegundoApellido(“padilla”);
persona.setDireccion(“Kra 33A - #22a 17”);
persona.setTelefono(“77300000”);
        
modelo.addElement(persona);//Agregamos la persona a la lista

Reitero que los objetos de tipo persona que se agregue a la lista modelo seran visualizados automaticamente en la Gui del programa.

Algo que es de notar es el siguiente metodo de la clase Gui, donde hago uso de los métodos de la clase Persona que inician con 'get' que sirve para acceder a los valores de las propiedades de los objetos persona y que posteriormente mostraré en un JTextField.

private void llenarListaConPersona(Persona persona) {
        jTextFieldId.setText(persona.getId());
        jTextFieldPNombre.setText(persona.getPrimerNombre());
        jTextFieldSNombre.setText(persona.getSegundoNombre());
        jTextFieldPApellido.setText(persona.getPrimerApellido());
        jTextFieldSApellido.setText(persona.getSegundoApellido());
        jTextFieldDireccion.setText(persona.getDireccion());
        jTextFieldTelefono.setText(persona.getTelefono());





Sugerencias

- En la clase Persona sobreescribimos un método llamada toString que pertenece a la clase padre Object que retorna la propiedad 'id', cambie ésto de tal forma que éste método retorne el primer nombre de la persona y vea lo que pasa cuando usar el programa, investigue que pasó.

- En la clase Persona borre método toString ó meta dentro de comentario y vea lo que pasa cuando usar el programa, investigue que pasó.

- Modifique o agregue, para que el programa no permita campos vacíos.

- Modifique o agregue, para que el programa no permita id repetidas.

- Agregue un nuevo botón en la parte inferior derecha que permita eliminar a todas las personas de la lista.

Comente como resolvió las sugerencias, así podrá compartir su punto de vista y podrá observar como hicieron los demás.

Nota final; este ejemplo es solo una manera didáctica, pero al manejar grandes volúmenes de información por experiencia no sugiero ésta práctica, ya que consume muchos recursos y tendrá una aplicación lenta.





Como siempre esperando serles de utilidad.

Entrada destacada

Matriz de adyacencia para un grafo

"La matriz de adyacencia es una matriz cuadrada que se utiliza como una forma de representar relaciones binarias."; aunque pa...