Você está na página 1de 7

Funciones:

Las funciones son un conjunto de lneas de cdigo (instrucciones),


encapsulados en un bloque, usualmente reciben parmetros, cuyos
valores utilizan para efectuar operaciones y adicionalmente retornan un
valor. En otras palabras una funcin puede recibir parmetros o
argumentos (algunas no reciben nada), hace uso de dichos valores
recibidos como sea necesario y retorna un valor usando la instruccin
return, si no retorna algo, entonces no es una funcin. En java las
funciones usan el modificador static.

La sintaxis para declarar una funcin es muy simple, veamos:

[acceso] [modificador] tipo nombreFuncion([tipo nombreArgumento,


[tipo nombreArgumento]...])
{
/*
* Bloque de instrucciones
*/

return valor;
}

EL primer componente corresponde al modificador de acceso, que puede


ser public o private, ste es opcional, si no ponemos nada, se asume el
modificador de acceso por defecto, el segundo componente es
el modificadorque puede ser final o static (o ambas), tambin es
opcional. Recordemos que un mtodo o funcin siempre retorna algo,
por lo tanto es obligatorio declararle un tipo (el tercer componente de la
sintaxis anterior), puede ser entero (int), booleano (boolean), o
cualquiera que consideremos, inclusive tipos complejos, luego debemos
darle un nombre a dicha funcin, para poder identificarla y llamarla
(invocarla) durante la ejecucin, despus al interior de parntesis,
podemos poner los argumentos o parmetros. Luego de la definicin de
la "firma" del mtodo, se define su funcionamiento entre llaves; todo lo
que est dentro de las llaves es parte del cuerpo del mtodo y ste se
ejecuta hasta llegar a una instruccin return.

Acerca de los argumentos o parmetros

Hay algunos detalles respecto a los argumentos de un mtodo, veamos:

o Una funcin, un mtodo o un procedimiento pueden tener una


cantidad cualquier de parmetros, es decir pueden tener cero, uno,
tres, diez, cien o ms parmetros. Aunque habitualmente no suelen
tener ms de 4 o 5.

o Si una funcin tiene ms de un parmetro cada uno de ellos debe


ir separado por una coma.

o Los argumentos de una funcin tambin tienen un tipo y un


nombre que los identifica. El tipo del argumento puede ser cualquiera y
no tiene relacin con el tipo del mtodo.

o Al recibir un argumento nada nos obliga a hacer uso de ste al


interior del mtodo, sin embargo para qu recibirlo si no lo vamos a
usar.

o En Java los parmetros que podemos recibir pueden ser por valor
por referencia, esto implica que si modificamos los valores recibidos al
interior del mtodo, estos pueden mantener sus cambios o no despus
de ejecutada el mtodo (esto lo explico con ms detalla enseguida).

return

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


o Cualquier instruccin que se encuentre despus de la ejecucin de
return NO ser ejecutada. Es comn encontrar funciones con mltiples
sentencias return al interior de condicionales, pero una vez que el
cdigo ejecuta una sentencia return lo que haya de all hacia abajo no
se ejecutar.

o El tipo del valor que se retorna en una funcin debe coincidir con
el del tipo declarado a la funcin, es decir si se declara int, el valor
retornado debe ser un nmero entero.

o En el caso de los procedimientos (void) podemos usar la


sentencia return pero sin ningn tupo de valor, slo la usaramos como
una manera de terminar la ejecucin del procedimiento.

Una funcin (o mtodo) es un trozo de cdigo que puede ser llamado o


invocado por el programa principal o por otro mtodo para realizar
alguna tarea especfica. El mtodo es llamado por su nombre seguido
por una secuencia de parmetros (datos usados por el propio mtodo
para sus clculos) entre parntesis. Cuando el mtodo finaliza sus
operaciones, devuelve habitualmente un valor simple al programa que
lo llama, que utiliza dicho valor de la forma que le convenga.

Un ejemplo :

public class PruebaCubo

public static void main (String [] args)

{ System.out.println ("El cubo de 6 es: " + cubo(6)); // Llamada

} //Declaracin del mtodo cubo public static double cubo (double x)


{ return x*x*x; } }

Los parametros de una funcin son los valores que esta recibe por parte
del cdigo que la llama. Pueden ser tipos simples u objetos.

En la declaracin de la funcin se escriben despus del nombre entre


parntesis indicndose el tipo de cada uno y su nombre. Veamos esto a
modo de ejemplo:

int dividir(int dividendo, int divisor) {


...
}

Est funcin recibe dos parmetros, ambos de tipo entero, uno el divisor
y otro el dividendo.

A la hora de llamar a la funcin, los parametros se escriben tambin a


continuacin del nombre entre parentesis; pero en este caso no se
indica el tipo de estos. Veamoslo en un ejemplo:

int resultado = dividir(8,4);

En esta linea, se asigna a la variable entera resultado el retorno de la


funcin dividir pasandole como parametros 8 y 4. dividir ser una
funcin de la clase a la cual pertenece nuestro objeto. Si queremos
llamar a una funcin pblica de un objeto externo utilizaramos un
cdigo similar a:

MyClaseMatematica objInstancia = new MyClaseMatematica();


int resultado = objInstancia.dividir(8,4);
Es importante recordar que en java, los parametros de los tipos
primitivos (int, long, etc.) SIEMPRE se pasan por valor. Los objetos y
arrays se pasan por referencia.

Si no queremos que la funcin devuelva ningn parmetro debemos


utilizar el tipo void. P.ej:
void print(String mensajeAImprimir) {
....
}

Funciones estaticas

Supongamos que tenemos una clase de funciones matemticas llamada


Calculadora. La misma puede contener mtodos para el clculo de
logartmos, cosenos, etc... Es un poco molesto tener que instanciar un
objeto de dicha clase para poder utilizar la misma tal y como se muestra
en el siguiente ejemplo:

Calculadora objetoCalculadora = new Calculadora();


float resultado = objetoCalculadora.logaritmo(33.4);

Para solucionar esto podemos crear funciones estticas. Estas funciones


pueden ser invocadas utilizando directamente la clase, no un objeto
instancia de la misma. Para ello basta aadir el atributo static a la
funcin. En el caso anterior:

class Calculadora {
...
float logaritmo(float entrada){
float resultado;
...
return resultado;
}
}

Entonces el ejemplo anterior se simplifica y queda simplemente como:


float resultado = Calculadora.logaritmo(33.4);

No se debe abusar de las funciones estticas ya que entonces perdemos


la orientacin a objetos de Java. Debe ser el sentido comn quien nos
indique cuando realmente merece la pena utilizar las mismas. Un
ejemplo donde suele ser conveniente crear funciones estticas es en las
"fbricas" de objetos. Las fbricas de objetos crean y retornan un nuevo
objeto de forma similar al constructor de una clase, pero teniendo en
cuenta el contexto de la aplicacin. Las fbricas de objetos al tener
informacin sobre el contexto/estado de la aplicacin pueden realizar
tareas que un constructor no es capaz. P.ej, la conexin por red suele
estar asociada a un objeto. Las creacin de una nueva conexin por red
es un proceso lento (en comparacin a la velocidad de proceso de una
CPU moderna) y es mejor reutilizar conexiones de red creadas
anteriormente antes de crear una nueva. En tal caso creamos una
fbrica de conexiones con una funcin esttica getNuevaConexion:

class FabricaDeConexiones {
static java.util.ArrayList listaDeConexiones = new
java.util.ArrayList();
static void Conexion getNuevaConexion(){
for (int indice=0; indice<listaDeConexiones.size(); indice++){
if listaDeConexiones.get(indice).estaLibre = true {
return listaDeConexiones.get(indice);
}
}
Conexion nuevaConexion = new Conexion(....);
listaDeConexiones.add(nuevaConexion);
}
}

En el ejemplo anterior FabricaDeConexiones.getNuevaConexion()


consulta un listado de conexiones. Antes de crear una nueva conexin
recorre el listado de conexiones ya existentes y si hay alguna conexin
libre devuelve la misma antes de crear una nueva.

As en vez de utilizar el cdigo:


Conexion miConexion = new Conexion();

lo reemplazamos con:

Conexion miConexion = FabricaDeConexiones.getNuevaConexion();

que ser mucho ms rpido y fiable.

Você também pode gostar