Formación informática

Java | Joomla | MySQL

Curso de Java – Tema 12.2: métodos

Código Java

¿Qué es un método?

En Java es un conjunto de instrucciones definidas dentro de una clase, que realizan una determinada tarea y a las que podemos invocar o instanciar mediante un nombre. Son funciones de una clase.

Se dividen en métodos privados que son aquellos que se usan internamente en la clase; métodos públicos que son usados por la clase y sus derivadas; y los protegidos.

Cuando se llama a un método, la ejecución del programa pasa al método y cuando éste acaba, la ejecución continúa a partir del punto donde se produjo la llamada.

Utilizando métodos:

  • Podemos construir programas modulares.
  • Se consigue la reutilización de código. En lugar de escribir el mismo código repetido cuando se necesite, por ejemplo para validar una fecha, se hace una llamada al método que lo realiza.

En Java un método siempre pertenece a una clase.

Declaración de un método

La estructura general de un método en Java es la siguiente, siendo opcionales los elementos que aparecen entre corchetes:

[modificador_de_acceso] modificador_instancia tipoDevuelto nombreMetodo([lista parámetros]) [throws listaExcepciones]
{
    	// instrucciones
   	[return valor;]
}

Al conjunto formado por el nombre del método y los parámetros se le llama firma del método.

Un método tiene un único punto de inicio, representado por la llave de inicio {. La ejecución de un método termina cuando se llega a la llave final } o cuando se ejecuta la instrucción return.

La instrucción return puede aparecer en cualquier lugar dentro del método, no tiene que estar necesariamente al final. Aunque por razones de convención suele escribirse al final.

Modificadores de acceso

Es opcional. Determinan el tipo de acceso al método. Son los ya vistos.

Modificadores de instancia

Son los ya vistos.

Tipo de dato devuelto

Indica el tipo de dato u objeto que devuelve el método. En Java es imprescindible que en la declaración de un método, se indique el tipo de dato que va a devolver. El dato se devuelve mediante la instrucción return. Si el método no devuelve ningún valor este tipo será de tipo void.

Un método puede devolver un tipo primitivo, un array, un String o un objeto.

nombreMetodo

Es el nombre que se le da al método. Para crearlo hay que seguir las mismas normas que para crear nombres de variables.

Lista de parámetros

Es opcional. Después del nombre del método y siempre entre paréntesis puede aparecer una lista de parámetros (también llamados argumentos) separados por comas. Estos parámetros son los datos de entrada que recibe el método para operar con ellos. Los paréntesis son obligatorios aunque estén vacíos, es decir, que el método no necesita parámetros para funcionar.

Al acceder a variables de instancia de una clase, la palabra clave this hace referencia a los miembros de la propia clase en el objeto actual; es decir, this se refiere al objeto actual sobre el que está actuando un método determinado y se utiliza siempre que se quiera hace referencia al objeto actual de la clase.

Hay algunos detalles respecto a los argumentos de un método:

  • Una función, un método o un procedimiento pueden tener una cantidad cualquier de parámetros, es decir pueden tener cero, uno, tres, diez, cien o más parámetros. Aunque habitualmente no suelen tener más de 4 o 5.
  • Si una función tiene más de un parámetro cada uno de ellos debe ir separado por una coma.
  • Los argumentos de una función también tienen un tipo y un nombre que los identifica. El tipo del argumento puede ser cualquiera y no tiene relación con el tipo del método.
  • Al recibir un argumento nada nos obliga a hacer uso de éste al interior del método, sin embargo para qué recibirlo si no lo vamos a usar.
  • En Java los parámetros que podemos recibir pueden ser por valor por referencia, esto implica que si modificamos los valores recibidos al interior del método, estos pueden mantener sus cambios o no después de ejecutada el método (esto lo explico con más detalla enseguida).

throws listaExcepciones

“Opcional”. Indica las excepciones que puede generar y manipular el método. Está puesto entrecomillado lo de opcional puesto que el tratamiento de las excepciones es un proceso fundamental en la escritura del código para evitar fallos durante el funcionamiento del programa que puedan dejarlo fuera de servicio. Se verá más adelante detalladamente.

Return

Se utiliza para devolver un valor. La palabra clave return va seguida de una expresión que será evaluada para saber el valor de retorno. Esta expresión puede ser compleja o puede ser simplemente el nombre de un objeto, una variable de tipo primitivo o una constante.

El tipo del valor de retorno debe coincidir con el tipoDevuelto que se ha indicado en la declaración del método. En caso contrario, la aplicación no se podrá ejecutar.

Si el método no devuelve nada (tipoDevuelto = void) la instrucción return es opcional.

Debes tener en cuenta algunas cosas importantes con la sentencia return:

  • Cualquier instrucción que se encuentre después de la ejecución de return NO será ejecutada. Es común encontrar funciones con múltiples sentencias return al interior de condicionales, pero una vez que el código ejecuta una sentencia return lo que haya de allí hacia abajo no se ejecutará.
  • El tipo del valor que se retorna en una función debe coincidir con el del tipo declarado a la función; es decir si se declara int, el valor retornado debe ser un número entero.
  • En el caso de los procedimientos (void) podemos usar la sentencia return pero sin ningún tipo de valor. La usaríamos como una manera de terminar la ejecución del procedimiento.

Tipos de métodos

En Java existen una serie de métodos predefinidos con unos nombres y unas funcionas determinadas que se usan habitualmente.

Se dividen en métodos de instancia que son invocados en objetos, es decir los objetos son instancias de una clase; y los métodos de clase que son invocados en una clase.

Método principal

Es el primer método que aparece en la clase Main siendo el encargado de lanzar toda la aplicación. Es un método público, estático que no devuelve datos y que tiene como atributo un array de String en el cuál se cargan los argumentos. Su sintaxis es:

public static void main (String [] args){
} 

Método constructor

Método constructor

Una vez establecidas las propiedades de la clase creamos un constructor. El constructor es un método con el mismo nombre de la clase donde se establecen los parámetros y/o acciones a ejecutar cuando sea que se cree o instancie un nuevo objeto de la clase, en nuestro ejemplo de la persona. Cuando se construye un objeto es necesario inicializar sus variables con valores coherentes. Tiene las siguientes características:

  • Se llama igual que la clase.
  • No devuelve nada, ni siquiera void.
  • Pueden existir varios, pero siguiendo las reglas de la sobrecarga de funciones.
  • De entre los que existan, tan sólo uno se ejecutará al crear un objeto de la clase de acuerdo a los parámetros introducidos.

Por lo tanto, un método constructor:

  • Pide recursos al sistema para construir el objeto.
  • Genera los atributos del objeto.
  • Inicializa los atributos a su valor por defecto en función del tipo de dato.

    Las posibles razones para implementar un método constructor son:

    • Se necesitan parámetros para el estado inicial.
    • La construcción del objeto es costosa y es necesario código adicional.
    • Las instrucciones deben crearse correctamente o no crearse en absoluta.
    • Se requiere que el constructor no sea público para limitar la instanciación de objetos.

    La sintaxis genérica es

    public nombre_clase (tipo_dato propiedad, tipo_dato propiedad…){
    propiedad = this.propiedad;
    propiedad = this.propiedad;
    
    instrucciones;
    }
    

    El constructor de nuestra clase persona quedaría escrito así:

    public persona(String nombre, String apellido, String fecha, int edad, String genero) {
            name = nombre;
            lastName = apellido;
            birthDate = fecha;
            age = edad;
            gender = genero;
        }
    

    Métodos setters o definidor

    Método definidor

    Al crearse la instancia, la primera tarea que llevará a cabo la clase será asignarle los parámetros del constructor a las propiedades de la clase. Estas propiedades, como ya mencionamos, tienen un acceso privado dentro de la clase y no pueden ser modificadas desde el exterior.

    Sin embargo, podemos otorgarle acceso restringido desde las clases externas a las propiedades de nuestra clase persona usando un método set o definidor mediante el que definimos los datos. La sintaxis genérica es:

    public void setNombre (String nombre) {
            name = nombre;
        }
    

    Existe la convención de usar como identificador de este método la siguiente plantilla:

    setNombre_de_la_propiedad
    

    Aunque puede utilizarse cualquier otro nombre, tal como dime_nombre_de_la_propiedad. Al invocar el método definidor cuyo identificador es setNombre estamos cambiando la propiedad nombre por el parámetro que le introduzcamos. Este método es del tipo void, puesto que no devuelve ningún valor. Simplemente cambia la propiedad nombre y nada más.

    Métodos getters o captador

    Método get

    Cuando queremos acceder al valor almacenado en una propiedad declarada como privada tenemos que crear un método captador que nos devuelva la información contenida en él.

    La sintaxis genérica es:

    public tipoDevuelto NombreDelMétodo (tipo_dato propiedad) {
    this.variable = variable;
    }
    

    Existe la convención de usar como identificador de este método la siguiente plantilla:

    getNombre_de_la_propiedad
    

    Un ejemplo sería el setter y el getter para la propiedad Nombre:

    public String getNombre() {
            return nombre;    }
    
    

    Al invocar el método captador getNombre () vamos a llamar a la propiedad name para obtener su valor. El método es tipo String, o sea que devuelve una cadena de caracteres con el valor que tenga la propiedad nombre, de ahí que se use el comando return nombre.

    Nuestra clase persona quedaría así, con todos los métodos constructores, definidores y captadores:

    public class persona {
     
        //Propiedades
        private String nombre;
        private String apellidos;
        private String fechaNacimiento;
        private int edad;
        private String genero;
     
        //Constructor
        public persona(String nombre, String apellido, String fechaNacimiento, int edad, String genero) {
            this.nombre = nombre;
            this.apellidos = apellidos;
            this.fechaNacimiento = fechaNacimiento;
            this.edad = edad;
            this.genero = genero;
        }
        
        //Métodos captadores y definidores
     
        public void setNombre(String nombre) {
            this.nombre = nombre;
        }
     
        public String getNombre() {
            return nombre;
        }
     
        public void setApellidos(String apellidos) {
            this.apellidos = apellidos;
        }
     
        public String getApellidos() {
            return apellidos;
        }
     
        public void setFechaNacimiento(String fechaNacimiento) {
            this.fechaNacimiento = fechaNacimiento;
        }
     
        public String getFechaNacimiento() {
            return fechaNacimiento;
        }
     
        public void setEdad(int edad) {
            this.edad = edad;
        }
     
        public int getEdad() {
            return edad;
        }
     
        public void setGenero(String genero) {
            this.genero = genero;
        }
     
        public String getGenero() {
            return genero;
        }
     
    }
    
    Curso de Java – Tema 12.1: clase en Java <- | -> Curso de Java – Tema 12.3: Objetos
    Curso de Java - Índice ejercicios nivel básico

Escribir un comentario

Aunque los comentarios no expresan la opinión del administrador del sitio web, éste si que tiene una responsabilidad legal sobre lo que aparece. Por lo tanto, habrá una labor de moderación de los mensajes. No se permitirán mensajes ofensivos ni publicidad


Código de seguridad
Refescar

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-Ley 13/2012, de 30 de marzo. Si continúa navegando consideramos que acepta el uso de cookies. . Más información