18 de septiembre de 2018

Parámetros / Argumentos - Visibilidad y ámbito (scope)

Vamos a utilizar la declaración de parámetros y el paso de argumentos para personalizar el método que hicimos en la entrada anterior y poder decir el número de líneas nuevas que queremos añadir. También veremos los conceptos de visibilidad y ámbito (scope).

Con los parámetros podemos personalizar la ejecución de un método


En el ejemplo del libro se crea un nuevo método "tresLineas" que repite la invocación del método "nuevaLinea" tres veces. Ahora podemos cambiar el código para hacer una sola llamada a este nuevo método, pero ¿Y si queremos añadir dos, cuatro o diez líneas en vez de tres? ¿Hacemos otro método para cada caso? No, vamos a ver cómo personalizar las invocaciones usando argumentos.

Diferencia entre parámetros y argumentos

Antes que nada y para no seguir pensando que cada vez uso una palabra distinta hay que tener en cuenta estas definiciones:
  • Parámetros: Son cada una de las variables locales al método que se declaran en su firma entre paréntesis.
  • Argumentos: Son cada uno de los valores que corresponden a cada parámetro en la invocación de un método.
Después del siguiente ejemplo se ve claramente cuáles son los parámetros y cuáles los argumentos.

Modificamos nuestro código para que acepte un entero que indique el número de líneas que queremos añadir.

NOTA: He añadido un bucle (bloque for) para poder hacer el código. Este concepto y su uso se verá en otra sesión más adelante. Por ahora simplemente copiamos el código y ya aprenderemos a leerlo y escribirlo.
    public static void main(String[] args) {
        System.out.println("Hola Mundo");
        nuevaLinea(2);
        System.out.println("Adios Mundo");
    }
    
    public static void nuevaLinea(int numeroLineas) {
        for (int i = 0; i < numeroLineas; i++) {
            System.out.println("|--------------------|");
        }
    }
Pero alguno podrá pensar que la cadena que he dejado para rellenar la nueva línea es un "magic number". Vamos a añadir otro parámetro para que podamos decirle el texto que debe aparecer en cada nueva línea. El código queda así:
    public static void main(String[] args) {
        System.out.println("Hola Mundo");
        nuevaLinea(2, "|--------------------|");
        System.out.println("Adios Mundo");
    }
    
    public static void nuevaLinea(int numeroLineas) {
        nuevaLinea(numeroLineas, "");
    }
    
    public static void nuevaLinea(int numeroLineas, String texto) {
        for (int i = 0; i < numeroLineas; i++) {
            System.out.println(texto);
        }
    }
En el vídeo se puede ver cómo modifico el código sobre la marcha y se entiende mejor que encontrar el código final completo.


Después de la demostración podemos ver claramente la diferencia entre parámetro y argumento (los números de línea se refieren al último fragmento de código en esta página):
  1. Parámetros:
    1. línea 7: (int numeroLineas)
    2. línea 11: (int numeroLineas, String texto)
  2. Argumentos:
    1. línea 3: los valores 2 y "|--------------------|"
    2. línea 8: los valores numeroLineas y ""
    3. tambien líneas 2 y 4: "Hola Mundo" y "Adios Mundo"
Resumiendo: los parámetros se declaran parecido a las variables mientras que los argumentos son los valores que se asignan a esos parámetros al invocar el método.

Los parámetros se declaran pero los argumentos se asignan a esos parámetros al invocar el método


Visibilidad y ámbito (scope)

Ahora que ya tenemos distintos bloques de código podemos ver qué es una variable local y dónde está permitido su uso. En el vídeo hago la demostración. Simplemente debe quedarnos claro que una variable se puede usar sólo dentro del bloque de código, toda vez que se ha declarado, y se usará normalmente hasta que otra con un ámbito (scope) más cercano la "ensombrezca" (shadowing). Este último concepto de shadowing lo veremos cuando hablemos de constructores en las Clases.

Una variable se puede usar sólo dentro del bloque de código y si ya se ha declarado

No hay comentarios:

Publicar un comentario

Compárteme

Entradas populares