Free Web Site - Free Web Space and Site Hosting - Web Hosting - Internet Store and Ecommerce Solution Provider - High Speed Internet
Search the Web

Declaración y uso básico de un objeto


Se crea una clase Persona con tres atributos públicos básicos : nombre, edad y estatura.

class Persona
{
    public String nombre;
    public int edad;
    public double estatura;
}

En el programa de prueba se creará en memoria un objeto de tipo Persona con la instrucción :

Persona p = new Persona( );

En memoria se ha reservado el espacio necesario para almacenar el objeto.
Cada objeto en Java se almacena en una dirección de memoria determinada. Supongamos que la variable creada se guarda en la dirección 1200.

Por lo tanto p almacena solamente la dirección 1200. Al accesar los campos a través de p se está llendo a la dirección señalada y rescatando los atributos según dónde estén.

En consecuencia si temenos una variable temp de tipo Persona que almacena la misma dirección , se puede tener acceso a los campos de p a través de temp.

Ej :

/* temp en este momento, almacena null ya que todavía
   no se ha creado objeto alguno */
     
Persona temp;
          
/* se crea un nuevo objeto en la dirección 3900 , por lo tanto 
   p almacena 3900 */
     
Persona p = new Persona( );  
          
/* se asigna al objeto p una de edad de 5 */
     
p.edad = 5;
          
/* se asigna a temp, la dirección de p (3900) */
     
temp = p;
          
/* se va a la dirección 3900 y se accede al atributo edad  */
     
temp.edad = 12;

/* lo anterior es lo mismo que haber hecho p.edad = 12 , por lo tanto 
   la siguiente instrucción imprime 12 */
   
System.out.println("edad : " + p.edad);

Programa de prueba

Se creará un objeto de tipo Persona , para inicializar sus campos con los siguientes datos :

nombre : Thomas J. Watson
edad : 65
estatura : 1.78

La idea es aumentar la edad en un año, a través de otra variable que apunte o haga referencia al objeto original.


Código fuente

class Persona
{
    public String nombre;
    public int edad;
    public double estatura;


    public static void impDatos(Persona aux)
    {
        System.out.println("\n\n Datos personales");
        System.out.println(" ----------------\n");
        System.out.println(" nombre : " + aux.nombre); 
        System.out.println(" edad : " + aux.edad); 
        System.out.println(" estatura : " + aux.estatura); 
    }

    public static void main(String arg[ ])
    {
        
        Persona p = new Persona( );
    
        p.nombre = "Thomas J. Watson";
        p.edad = 65;
        p.estatura = 1.78;
    
        impDatos(p);
                
        /* temp es una referencia al objeto  p */
        
        Persona temp = p;
               
        /* como temp apunta a p , la siguiente instrucción es
           similar a : p.edad++; */
        
        temp.edad++;
                
        /* Ahora James tiene un agno mas de vida */
        
        impDatos(p);
        System.out.println( );
    }
}
Bajar archivo



Constructores y referencia this

Un constructor, básicamente inicilializa los atributos de nuestro objeto.
Cuando no se declara explícitamente un constructor , los atributos se inicializan por defecto.

En la clase siguiente se crearán tres constructores diferentes, según qué atributos nos interesa inicializar con un valor específico.

class Libro
{
    public String titulo;
    public String autor;

    public int paginas;
    public int precio;
      
}

El primer constructor recibe como parámetro el título del libro.

public Libro(String aux_titulo)
{
    titulo = aux_titulo;    
}

El segundo constructor, recibe como parámetros el título y el autor del libro. Cuando los parámetros se llaman igual que los atributos del objeto, se usa la referencia this que hace referencia sobre el objeto actual, no permitiendo la confusión de nombres.

public Libro(String titulo , String autor)
{
    this.titulo = titulo;
    this.autor = autor;     
}

Por último, el tercer constructor permite inicializar todos los atributos. Para ahorrar código, se hace una llamada al segundo constructor mediante la referencia this , para inicilizar los atributos título y autor.

public Libro(String titulo , String autor, int paginas , int precio)
{
    this(titulo , autor);
    this.paginas = paginas;
    this.precio = precio;    
}

Implementación

Se crearán tres objetos de tipo Libro usando los tres constructores , y se va a imprimir los atributos de los tres objetos.



class Libro
{
    public String titulo;
    public String autor;
    public int paginas;
    public int precio;

    /* -- constructores -- */

    public Libro(String aux_titulo)
    {
        titulo = aux_titulo;    
    }

    public Libro(String titulo , String autor)
    {
        this.titulo = titulo;
        this.autor = autor;     
    }

    public Libro(String titulo , String autor, int paginas , int precio)
    {
        this(titulo , autor);
        this.paginas = paginas;
        this.precio = precio;    
    }

    /* -- metodo que muestra la informacion en forma tabulada -- */

    public static void impLibro(Libro aux)
    {
        System.out.print("\n  " + aux.titulo);
        System.out.print("\t\t");
        if (aux.autor != null)
            System.out.print(aux.autor);
        
        System.out.print("\t\t");
        if (aux.paginas != 0)
            System.out.print(aux.paginas);        
        
        System.out.print("\t\t");
        if (aux.precio != 0)
            System.out.print(aux.precio);
    }
    
    
    
    public static void main(String arg[ ])
    {
        
        Libro a = new Libro("Los miserables");
        
        Libro b = new Libro("El contrato social","Rousseau");
        
        Libro c = new Libro("La divina comedia","Dante",320,8900);    
        
        System.out.println("\n\n  Titulo\t\t\tAutor\t\tPaginas\t\tPrecio");
        System.out.println("  ------\t\t\t-----\t\t-------\t\t------");
        
        impLibro(a);
        impLibro(b);
        impLibro(c);
        
        System.out.println("\n");
    }    
}

Bajar archivo