( PARTE III DE IV )
Abstracción Funcional en Java.
Fundamentos de los subprogramas.
En Java no existen distinciones entre funciones y procedimientos formalmente. En este lenguaje solo se tienen métodos, y según la situación, se comportarán como una función o como un procedimiento.
La lista puede estar vacía pero los paréntesis son obligados:
public void suficiente() // Correcto
public void pocaCosa // Error de sintaxis.
Es obligatorio indicar el tipo de cada parámetro:
double potencia (double x, double y) // Correcto
double potencia (double x, y) // Error de sintaxis
Parámetros formales y parámetros reales.
- Parámetros formales: Los que se definen en la cabecera de la función.
- Parámetros reales: Los que aparecen en la llamada a la función. Deben corresponderse con los parámetros formales definidos en la cabecera.
public static void main(String [] args)
{
int k = 3;
boolean flag = true;
// Llamadas correctas:
f(7, false);
f(0, flag);
f(k, flag);
// Llamadas inCorrectas:
// No concordancia entre parámetros reales y formales
f(true, d, flag);
f(false, 7);
}
El tipo retorno de un método puede ser cualquier tipo válido en el lenguaje, incluso los creados por el programador.
Procedimientos y funciones.
Se suele distinguir entre funciones y procedimientos:
Las funciones se corresponden con la noción matemática de función: producen un resultado que es función de los datos de entrada:
• y = f(x1, x2,...xn)
• Una función bien definida no modifica los parámetros de entrada.
• Se utilizan en expresiones.
Los procedimientos agrupan sentencias que realizan una tarea bien definida, pero no tienen por qué devolver un resultado.
• Se corresponden con el concepto de instrucción.
• Los procedimientos actúan sobre el entorno y pueden modificar los parámetros de entrada (efectos colaterales)
Los procedimientos pueden verse como una forma de extender las sentencias del lenguaje, mientras que las funciones pueden verse como una extensión de los operadores:
• Cuando se invoca una función se obtiene un valor a través de un valor de retorno.
• Cuando se invoca un procedimiento el efecto es una modificación del entorno del llamante, de la cual éste es advertido a través de los valores de los parámetros de salida.
Los parámetros de los métodos se pueden pasar por valor o por referencia.
En Java, los tipos primitivos siempre se pasan por valor y los objetos siempre por referencia.
Esto también ocurre para las variables de la sentencia return.
Ejemplo de paso por valor en Java:
void intercambio(int x, int y)
{
int auxiliar;
auxiliar = y;
y = x;
x = auxiliar;
}
Paso de arrays como parámetros en Java.
Los arrays son objetos y por tanto se pasan por referencia.
• La referencia se pasa por valor
• Para pasar un array como parámetro escribimos el nombre del array en la lista de parámetros (sin corchetes)
int temperaturasHorarias[] = new int[24];
modificarArray(temperaturasHorarias);
• El nombre del array es en realidad una referencia a un objeto que contiene los elementos del array.
class Paso_Arrays_1
{
static int a[] = {0, 1, 2, 3, 4};
public static void modificarArray(int b[])
{ // Por referencia
for (int j = 0; j<>
}
public static void modificarElemento(int e)
{ // Por valor
e *= 2;
}
public static void main(String [] args)
{
modificarArray(a); // después de llamada a = {0, 2, 4, 6}
modificarElemento(a[3]); // después de llamada a[3] = 6;
}
}
Sobrecarga de métodos en Java.
Sobrecarga de métodos: Java permite definir métodos con el mismo nombre siempre que difieran en los argumentos de entrada. Es una manera de aportar polimorfismo
- Un método se distingue del resto por su firma.
- Firma del método: nombre + argumentos de entrada.
- Puesto que los métodos sobrecargados tienen el mismo nombre, los métodos sobrecargados se diferencian por el número, tipo y orden de los argumentos en su lista de parámetros.
Ejemplo:
public class utilidadesMatematicas
{
int square(int x) { return x*x; }
double square(double x) { return x*x; }
}
- El prototipo de un método es la firma más el tipo devuelto.
Los métodos sobrecargados no se distinguen por el prototipo sino por la firma.
0 Comentarios:
Publicar un comentario
<< Home