Ver Mensaje Individual
  #6 (permalink)  
Antiguo 24/07/2013, 15:36
Avatar de rottenp4nx
rottenp4nx
 
Fecha de Ingreso: octubre-2012
Ubicación: Santiago
Mensajes: 417
Antigüedad: 11 años, 6 meses
Puntos: 36
Respuesta: Tengo un Problema con ArrayList

No me acuerdo muy bien de la teoría, pero siempre se deben instanciar los Objetos en la POO, el constructor sirve para instanciar(inicializar) un objeto, el constructor debe tener el mismo nombre de la clase y pueden haber varios constructores, en que se diferencian? En los argumentos del constructor. Un Ejemplo:
Código Java:
Ver original
  1. public class Libro{
  2.  
  3.    //Atributos o Propiedades del objeto
  4.    private String codigo;
  5.    private String nombre;
  6.    private boolean estado;
  7.  
  8.    //Constructor Vacío, por lo general lo crea el IDE automáticamente, estado escrito
  9.    //o no, pero es recomendable escribirlo
  10.  
  11.   public Libro(){
  12.   }
  13.  
  14.   //Constructor con argumentos, instancia el objeto con los argumentos pasados
  15.  
  16.   public Libro(String codigo, String nombre, boolean estado){
  17.       this.codigo = codigo;
  18.       this.nombre = nombre;
  19.       this.estado = estado;
  20.   }
  21.  
  22.   public String getNombre(){
  23.         return this.nombre;
  24.   }
  25.  
  26.   public void setNombre(String nombre){
  27.          this.nombre=nombre;
  28.   }
  29.  
  30.  
  31.   public String getCodigo(){
  32.         return this.codigo;
  33.   }
  34.  
  35.   public void setCodigo(String codigo){
  36.          this.codigo=codigo;
  37.   }
  38.  
  39.  
  40.   public boolean isEstado(){
  41.         return this.estado;
  42.   }
  43.  
  44.   public void setEstado(boolean estado){
  45.          this.estado=estado;
  46.   }
  47. }

Veamos, instanciado con constructor vacío.
Código Java:
Ver original
  1. Libro l = new Libro();
  2. System.out.println(l.getNombre());
  3. //no se mostrará nada

Si vemos, el objeto está instanciado, pero no se le han pasado datos a los atributos. Agreguemos datos:

Código Java:
Ver original
  1. Libro l = new Libro();
  2. System.out.println(l.getNombre());
  3. l.setNombre("El Túnel");
  4. System.out.println(l.getNombre());
  5. //Mostrará "El Túnel"

Ahí le asignamos datos al atributo nombre del objeto libro.
Ahora veamos un constructor con argumentos.
Código Java:
Ver original
  1. Libro l = new Libro("abc123","Niebla",true);
  2. System.out.println(l.getNombre());
  3. //Mostrará "Niebla"


//Veamos un objeto sin instanciar
Código Java:
Ver original
  1. Libro l;
  2. System.out.println(l.getNombre());

Vemos que da un error, por no estar instanciado el objeto. El famoso NullPointerException
------------------------------------------

Ahora ArrayList
Código Java:
Ver original
  1. public class Libros{
  2.  
  3.   //Creamos el arraylist
  4.   private ArrayList<Libro> mislibros;
  5.  
  6.   //Constructor de la clase
  7.    public Libros(){
  8.      mislibros = new ArrayList<Libro>();
  9.    }
  10.  
  11.   public Libro buscarLibroporNombre(String nombre){
  12.        for(Libro l : mislibros){
  13.             if(l.getNombre().equals(nombre)){
  14.                   return l;
  15.             }
  16.        }
  17.        return null;
  18.    }
  19.  
  20.    public void agregarLibro(Libro l){
  21.         mislibros.add(l);
  22.    }
  23.  
  24.    public void mostrarLibros(){
  25.         for(Libro l: mislibros){
  26.              System.out.println(l.getNombre());
  27.         }
  28.    }
  29.  
  30. }

Ahora en la clase Main o principal, ponemos a prueba lo Anterior

Código Java:
Ver original
  1. Libros libros = new Libros();
  2.   Libro l = new Libro("abc123","El tunel", true);
  3.   libros.agregarLibro(l);
  4.   Libro l2 = new Libro("zxc343","Niebla",false);
  5.   libros.agregarLibro(l2);
  6.   Libros l3 = new Libro();
  7.   l3.setCodigo("qwerty");
  8.   l3.setNombre("Elegi vivir");
  9.   l3.setEstado(true);
  10.   libros.agregarLibro(l3);
  11.  
  12.   libros.mostrarLibros();
  13.   l = libros.buscarLibro("El tunel");
  14.   System.out.println(l.getCodigo());
  15.   System.out.println(l.getNombre());
  16.   System.out.println(l.isEstado());


Solo te queda practicar, Saludos