lunes, 3 de julio de 2017

Métodos y constructores en java

Atributos
La información de un objeto se almacena en atributos. Los atributos pueden ser de tipos primitivos de Java o de tipo objeto. Por ejemplo, para el catálogo de vehículos de una empresa de alquiler, es necesario conocer la matrícula del coche, su marca, modelo, color, la tarifa del alquiler y su disponibilidad.

public class Vehiculo {
String matricula;
String marca;
String modelo;
String color;
double tarifa;
boolean disponible;
}

En este ejemplo, los atributos matricula, marca, modelo y color son cadenas de caracteres, tarifa es un número real y disponible es un valor lógico.

Métodos y constructores
Además de definir los atributos de un objeto, es necesario definir los métodos que determinan su comportamiento. Toda clase debe definir un método especial denominado constructor para instanciar los objetos de la clase. Este método tiene el mismo nombre de la clase. Por ejemplo, para la clase Vehiculo, el identificador del método constructor es Vehiculo. El método constructor se ejecuta cada vez que se instancia un objeto de la clase. Este método se utiliza para inicializar los atributos del objeto que se instancia.

Para diferenciar entre los atributos del objeto y los identificadores de los parámetros del método constructor, se utiliza la palabra this. De esta forma, los parámetros del método pueden tener el mismo nombre que los atributos de la clase. Esto permite hacer una asignación como la que se muestra a continuación, donde this.marca se refiere al atributo del objeto y marca al parámetro del método.

this.marca = marca;

En el siguiente ejemplo el método constructor inicializa los atributos matricula, marca, modelo, color y tarifa.

public class Vehiculo {
String matricula;
String marca;
String modelo;
String color;
double tarifa;
boolean disponible;
// el método constructor de la clase Vehiculo
public Vehiculo(String matricula,
String marca,
String modelo,
String color,
double tarifa) {
this,matricula = matricula;
this.marca = marca;
this.modelo = modelo;
this.color = color;
this.tarifa = tarifa;
this.disponible = false;
}
}

La instanciación de un objeto se realiza ejecutando el método constructor
de la clase.

Vehiculo vehiculo1 = new Vehiculo("4050 ABJ",
"VW", "GTI",
"Blanco",
100.0);

En este ejemplo se instancia el objeto vehiculo1. El método constructor crea el objeto vehiculo1 con la matrícula “4050 ABJ”, marca “VW”, modelo “GTI”, color “Blanco” y tarifa 100.0 dolares.

Vehiculo vehiculo2 = new Vehiculo("2345 JVM",
"SEAT",
"León",
"Negro",
80.0);

En este ejemplo se instancia el objeto vehiculo2. El método constructor crea el objeto vehiculo2 con la matrícula “2345 JVM”, marca “SEAT”, modelo “León”, color “Negro” y tarifa 80.0 dolares.

La instanciación de un objeto consiste en asignar un espacio de memoria al que se hace referencia con el nombre del objeto. Los identificadores de los objetos permiten acceder a los valores almacenados en cada objeto. En estos ejemplos, los objetos vehiculo1 y vehiculo2 almacenan valores diferentes y ocupan espacios de memoria distintos.

Para acceder a los atributos de los objetos de la clase Vehiculo se definen los métodos ‘get’ y ‘set’. Los métodos ‘get’ se utilizan para consultar el estado de un objeto y los métodos ‘set’ para modificar su estado. En la clase Vehiculo es necesario definir un método ‘get’ para cada uno de sus atributos: getMatricula(), getMarca(), getModelo(), getColor(), getTarifa() y getDisponible(). Los métodos ‘set’ solo se definen para los atributos que pueden ser modificados después de que se ha creado el objeto. En este caso es necesario definir setTarifa(double tarifa) y setDisponible(boolean disponible) para modificar la tarifa del alquiler del vehículo y su disponibilidad, respectivamente.

public class Vehiculo {
String matricula;
String marca;
String modelo;
String color;
double tarifa;
boolean disponible;
// los métodos ‘get’ y ‘set’ de la clase Vehiculo
public String getMatricula() {
return this.matricula;
}
public String getMarca() {
return this.marca;
}
public String getModelo() {
return this.modelo;
}
public String getColor() {
return this.color;
}
public double getTarifa() {
return this.tarifa;
}
public boolean getDisponible() {
return this.disponible;
}
public void setTarifa(double tarifa) {
this.tarifa = tarifa;
}
public void setDisponible(boolean disponible) {
this.disponible = disponible;
}

}