Constructores
Con lo que ya sabemos ya estamos preparados para entender y realizar
ejemplos más complejos.
Rectangulo.java
/** Calcula el area de un rectangulo
*/
public class Rectangulo {
private float x1,y1,x2,y2;
public Rectangulo(float ex1, float ey1, float ex2, float ey2) {
x1 = ex1;
x2 = ex2;
y1 = ey1;
y2 = ey2;
}
public float calcularArea() {
return (x2-x1) * (y2-y1);
}
public static void main(String[] args) {
Rectangulo prueba = new Rectangulo(1,4,7,6);
System.out.println(prueba.calcularArea());
}
}
Seguimos incluyendo una sola clase en nuestro programa fuente, que
guardaremos como Rectangulo.java y que
compilaremos y ejecutaremos como vimos hace un par de capítulos. Veremos que
nos responde con 12.0. Observando la clase que hemos creado, vemos que tiene
cuatro propiedades, de tipo float, y tres métodos. Uno es el ya conocido
main, otro parece un método normal y por
último tenemos uno que se llama igual que la clase. Es un constructor.
Un constructor es el método que se llama cuando se crea una instancia
nueva. Se suele utilizar para inicializar valores. Aquí vemos cómo se crea un
objeto de tipo Rectangulo y se asigna a una
referencia llamada prueba:
Rectangulo prueba = new Rectangulo(1,4,7,6);
Como vemos, al crear el objeto colocamos a la derecha de
new una llamada al constructor. Si no
especificamos ningún constructor, los objetos se crean un constructor por
defecto que no admite parámetros y no realiza ninguna tarea de inicialización.
Por ejemplo, si no hubiésemos especificado un constructor en nuestro
ejemplo, podríamos haber creado un objeto rectángulo de este modo:
Rectangulo prueba = new Rectangulo();
En cuyo caso tendría todos sus propiedades en su valor inicial, es decir,
cero. En el ejemplo vemos que recibe como parámetros las cuatro coordenadas
necesarias para definir un rectángulo y las asigna a sus propiedades.
Finalmente, el programa realiza algo útil:
System.out.println(prueba.calcularArea());
Como vimos, esta llamada sirve para escribir en pantalla lo que le
indiquemos. En este caso es una llamada al método de la clase
Rectangulo llamado
calcularArea(). Este método toma las coordenadas
que alberga en las propiedades de la clase y a partir de ellas calcula el
área según la fórmula geométrica debida.
Sin embargo, este método devuelve un valor de tipo
float, es decir, no devuelve una cadena. ¿Cómo
es que nos lo escribe por pantalla? Java lo convierte automáticamente en cadena
cuando necesita una cadena. Esta pequeña violación en el estricto sistema de
tipos de Java sólo se da con cadenas y más que nada por comodidad. En un futuro
veremos de que manera podemos conseguir que nuestros objetos también se
conviertan en cadenas de manera transparente.