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 prueba1
{

    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 a�o mas de vida */
impDatos(p); System.out.println( ); } }


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;
  
    /* constructores */
}

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;	
}

Programa de prueba

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



class prueba2
{
	
    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");
    }	
}
Hosted by www.Geocities.ws

1