Imprimir
Categoría: Java
Visto: 4023

En PC Resumen vamos a explicar los métodos en Java. Como se ha dicho antes, las clases normalmente están formadas por variables de instancia y métodos. El tema de los métodos es muy extenso porque Java les concede mucha potencia y flexibilidad. Ahora, pero veremos algunas nociones básicas para poder introducir métodos a las clases.

La forma general de un método es:

tipo nombre del método (lista de parámetros) {
    // cuerpo del método
}

Donde tipo especifica el tipo de datos que devuelve el método. Puede tratarse de cualquier tipo válido, incluyendo los tipos de clases que crea el programador. Si el método no devuelve nada, el tipo será void.

Incorporación de un método en la clase Caja

Aunque es perfectamente correcto crear una clase que únicamente contenga datos, normalmente esto no ocurre. La mayoría de las veces los métodos se utilizan para acceder a variables de instancia definidas por la clase. De hecho, los métodos definen la interfaz de la mayoría de las clases, esto permite que la clase oculte la estructura interna de los datos detrás de las abstracciones de un conjunto de métodos. Además también podemos definir métodos para ser internamente utilizados por la clase.

Empezaremos añadiendo un método en la clase Caja. Viendo los programas anteriores parecería más lógico que el cálculo del volumen de la caja el haga la misma clase, ya que depende de sus dimensiones. Para hacerlo introduciremos un nuevo método:

class Caja {
    double anchura; double altura; double profundidad;
    
    // Presenta el volumen de una caja.
    
    void volumen() {
        System.out.print ( "volumen es");
        System.out.println (ancho * altura * profundidad);
    }
}

class CajaDemo3 {
    public static void main(String args[]) {
        Caja cajaMia1 = new Caja();
        Caja cajaMia2 = new Caja();
        cajaMia1.anchura = 10;
        cajaMia1.altura = 20;
        cajaMia1.profundidad = 15;
        cajaMia2.anchura = 3;
        cajaMia2.altura = 6;
        cajaMia2.profundidad = 9;
       
        // Presenta el volumen de las cajas

        cajaMia1.volum();
        cajaMia2.volum();
    }
}

La primera línea se refiere al método volumen() de la primera caja. Es decir llama al método volumen(), utilizando el nombre del objeto seguido del operador punto. Por tanto cajaMia1.volumen(); presenta el volumen de la caja definida por cajaMia1.

Es importante fijarse en que dentro del método, la referencia a las variables de instancia es directa, sin que vayan precedidas por el nombre del objeto o por el operador punto. Cuando un método utiliza una variable de instancia definida por su clase, lo hace directamente, sin una referencia explícita al objeto y sin utilizar el operador punto.

Devolución de un valor

Aunque la implementación del método anterior realiza el cálculo del volumen de una caja, ésta no es la mejor forma de hacerlo. Que pasaría si otra parte del programa quisiera conocer el volumen de la caja pero no mostrar su valor?. La mejor forma es obviamente, calcular el volumen y devolviendo el resultado en la parte del programa que realiza la llamada. Por ejemplo:

class Caja {
    double anchura;
    double altura;
    double profundidad;
 
    // cálculo y devolución del volumen.

    double volumen() {
        return ancho * altura * profundidad;
    }
}

class CajaDemo4 {
    public static void main(String args[]) {
        Caja CajaMia1 = new Caja();
        Caja CajaMia2 = new Caja();
        double volumen;

        // asignan valores a las variables de instancia de caixameva1.

        CajaMia1.anchura= 10;
        CajaMia1.altura = 20;
        CajaMia1.profundidad = 15;

        // asignan valores a las variables de instancia de caixameva2.

        CajaMia2.anchura = 3;
        CajaMia2.altura = 6;
        CajaMia2.profundidad = 9;

        // Se obtiene el volumen de la primera caja.

        volumen = CajaMia1.volumen();
        System.out.println ( "volumen es" + vuelo);

        // Se obtiene el volumen de la segunda caja.

        volumen = CajaMia2.volumen();
        System.out.println ( "volumen es" + vuelo);
    }
}

Métodos con parámetros

Aunque algunos métodos no necesitan parámetros, la mayoría sí. Los parámetros permiten generalizar un método. Un método con parámetros puede operar sobre una gran variedad de datos y utilizarse en un gran número de situaciones diferentes.

Se puede utilizar un método con parámetros para mejorar la clase Caja. En los ejemplos anteriores, las dimensiones de la caja se establecen por separado mediante una sucesión de sentencias.

Este código funciona pero tiene problemas. Por un lado es fácil olvidar una de las dimensiones y de la otra en los programas Java correctamente diseñados, sólo se puede acceder a las variables de instancia por métodos definidos por sus clases. En adelante, se podrá cambiar el comportamiento de un método, pero no el de una variable de instancia accesible desde el exterior de la clase.

Una solución mejor es crear un método que tome las dimensiones de la caja dentro de sus parámetros y establezca las variables de instancia de forma apropiada. Por ejemplo:

class Caja {
    double anchura;
    double altura;
    double profundidad;

    // cálculo y devolución del volumen.

    double volumen() {
        return ancho * altura * profundidad;
    }
 
    // Establece las dimensiones de la caja.

    void setDim(double w, double h, double d) {
        anchura = w;
        altura = h;
        profundidad = d;
    }
}

class CajaDemo5 {
    public static void main(String args[]) {
        Caja cajaMia1 = new Caja();
        Caja cajaMia2 = new Caja();

        // Inicializa cada caja.

        cajaMia1.setDim(10, 20, 15);
        cajaMia2.setDim(3, 6, 9);

        // Calcula el volumen de las cajas.

        System.out.println ( "volumen es: " + cajaMia1.volumen());
        System.out.println ( "volumen es: " + cajaMia2.volumen());
    }
}