Documentos de Académico
Documentos de Profesional
Documentos de Cultura
4B Methods PDF
4B Methods PDF
Los mtodos
Nos dicen cmo hemos de usar los objetos de una clase.
Nos permiten cambiar la implementacin de una clase sin tener que
modificar su interfaz (esto es, sin tener que modificar el cdigo que
utiliza objetos de la clase cuya implementacin cambiamos)
Ejemplo:
Utilizar un algoritmo ms eficiente
para resolver un problema concreto
sin tener que tocar el cdigo del resto del programa.
Modularizacin
-4-
Fernando Berzal
Definicin de mtodos
Sintaxis en Java
cuerpo
}
-5-
Fernando Berzal
Ejemplo
El punto de entrada a una aplicacin escrita en Java
CONVENCIN
El texto correspondiente al cdigo que se ejecuta al invocar un mtodo
se sangra con respecto a la posicin de las llaves que delimitan el
cuerpo del mtodo.
Modularizacin
-6-
Fernando Berzal
La cabecera de un mtodo
La cabecera de un mtodo determina su interfaz
Modificadores de acceso (p.ej. public o private)
Determinan desde dnde se puede utilizar el mtodo.
Tipo devuelto (cualquier tipo primitivo, no primitivo o void)
Indica de que tipo es la salida del mtodo, el resultado que se
obtiene tras llamar al mtodo desde el exterior.
NOTA:
void se emplea cuando el mtodo no devuelve ningn valor.
Nombre del mtodo
Identificador vlido en Java
CONVENCIN:
En Java, los nombres de mtodos comienzan con minscula.
Parmetros formales
Entradas que necesita el mtodo para realizar la tarea de la que es
responsable.
MTODOS SIN PARMETROS:
Cuando un mtodo no tiene entradas, hay que poner ()
El cuerpo de un mtodo
El cuerpo de un mtodo define su implementacin:
NB: Como cualquier bloque de cdigo en Java,
el cuerpo de un mtodo ha de estar delimitado por llaves { }
Modularizacin
-7-
Fernando Berzal
La signatura de un mtodo
El nombre de un mtodo, los tipos de sus parmetros y el orden de los
mismos definen la signatura de un mtodo.
Los modificadores y el tipo del valor devuelto por un mtodo no
forman parte de la signatura del mtodo.
Sobrecarga
Lenguajes como Java permiten que existan distintos mtodos con el
mismo nombre siempre y cuando su signatura no sea idntica (algo
que se conoce con el nombre de sobrecarga)
Ejemplo
System.out.prinln();
- System.out.println()
- System.out.println(boolean)
- System.out.println(char)
- System.out.println(char[])
- System.out.println(double)
- System.out.println(float)
- System.out.println(int)
- System.out.println(long)
- System.out.println(Object)
- System.out.println(String)
-8-
Fernando Berzal
Uso de mtodos
Para enviarle un mensaje a un objeto,
invocamos (llamamos a) uno de sus mtodos:
Ejemplo
Cuenta cuenta = new Cuenta();
cuenta.mostrarMovimientos();
-9-
Fernando Berzal
- 10 -
Fernando Berzal
En la definicin de un mtodo,
la lista de parmetros formales de un mtodo establece:
Cuntos parmetros tiene el mtodo
El tipo de los valores que se usarn como parmetros
El orden en el que han de especificarse los parmetros
En la invocacin de un mtodo,
se han de especificar los valores concretos para los parmetros.
Los valores que se utilizan como parmetros
al invocar un mtodo se denominan
parmetros actuales (o argumentos).
Modularizacin
- 11 -
Fernando Berzal
Al llamar a un mtodo,
el mtodo utiliza una copia local de los parmetros
(que contiene los valores con los cuales fue invocado).
OJO!
Modularizacin
- 12 -
Fernando Berzal
// Definicin
// Invocacin
- 13 -
Fernando Berzal
Convenciones
Si varios mtodos utilizan los mismos parmetros,
stos han de ponerse siempre en el mismo orden.
De esta forma, resulta ms fcil de recordar
la forma correcta de usar un mtodo.
No es aconsejable utilizar los parmetros de una rutina como si
fuesen variables locales de la rutina.
En otras palabras, los parmetros no los utilizaremos para
almacenar resultados parciales.
Se han de documentar claramente las suposiciones que se hagan
acerca de los valores permitidos para los distintos parmetros de
un mtodo.
Esta informacin debera figurar en la documentacin del
cdigo realizada con la herramienta javadoc.
Slo se deben incluir los parmetros que realmente necesite el
mtodo para efectuar su labor.
Si un dato no es necesario para realizar un clculo, no tiene
sentido que tengamos que pasrselo al mtodo.
Las dependencias existentes entre distintos mtodos han de
hacerse explcitas mediante el uso de parmetros.
Si evitamos la existencia de variables globales (datos
compartidos entre distintos mdulos), el cdigo resultante
ser ms fcil de entender.
Modularizacin
- 14 -
Fernando Berzal
return
return expresin;
Modularizacin
- 15 -
Fernando Berzal
Ejemplo
Figuras geomtricas
//
//
//
//
//
Title:
Version:
Copyright:
Author:
E-mail:
Geometry
0.0
2004
Fernando Berzal
berzal@acm.org
- 16 -
Fernando Berzal
Ejemplo de uso
public static void main(String[] args)
{
Circle fig
= new Circle( new Point(0,0), 10);
Point dentro = new Point (3,3);
Point fuera = new Point (10,10);
System.out.println(figura);
System.out.println(dentro+"? "+fig.isInside(dentro));
System.out.println(fuera +"? "+fig.isInside(fuera) );
}
Modularizacin
- 17 -
Fernando Berzal
this
NOTA:
La palabra reservada this permite acceder
al objeto sobre el que se ejecuta el mtodo.
Modularizacin
- 18 -
Fernando Berzal
Gracias a la encapsulacin,
podemos crear componentes reutilizables
cuya evolucin no afectar al resto del sistema.
Modularizacin
- 19 -
Fernando Berzal
Ejemplo de uso:
public class ContactoTest
{
public static void main(String[] args)
{
Contacto nico = new Contacto (Nicols);
Contacto juan = new Contacto (Juan,
juan@acm.org);
...
}
}
Constructor de copia
Un constructor que recibe como parmetro
un objeto de la misma clase que la del constructor
Modularizacin
- 20 -
Fernando Berzal
RECORDATORIO: Encapsulacin
Se consigue con los modificadores de acceso public y private.
Las variables de instancia de una clase suelen definirse como
privadas (con la palabra reservada private).
Los mtodos pblicos muestran la interfaz de la clase.
Pueden existir mtodos no pblicos que realicen tareas auxiliares
manteniendo la separacin entre interfaz e implementacin.
Modularizacin
- 21 -
Fernando Berzal
Mtodos estticos
Los mtodos estticos pertenecen a la clase
(no estn asociados a un objeto particular de la clase)
Ya hemos visto algunos ejemplos:
Math.pow(x,y)
public static void main (String[] args)
System.out
Colores predefinidos:
Color.black, Color.red
Modularizacin
- 22 -
Fernando Berzal
Como es lgico,
los mtodos estticos slo pueden acceder a variables estticas.
public class Mensajes
{
private String mensaje = Hola;
// Error!
}
El programa anterior funcionara correctamente
si hubisemos declarado mensaje como una variable esttica:
private static String mensaje = Hola;
- 23 -
Fernando Berzal