Métodos - Braulio J. Solano Rojas

Anuncio
Métodos
CI-1101, Programación I
Prof. Braulio Solano Rojas
¿Para qué?



Será nuestra mejor herramienta para
dividir el problema en subproblemas.
Nos permitirán evitar repetirnos
(redundancia de código).
Mejorarán el mantenimiento que le
podremos dar a nuestros programas.
¿Qué son?




Son bloques de código a los cuales
asignamos un nombre.
Este nombre es significativo con
respecto de la unidad de acción del
bloque de código al cual
representan.
Pueden recibir parámetros (para
configurar los efectos del método).
Pueden devolver valores o
solamente tener un efecto en el
ambiente.
Un ejemplo…


En Java, por ejemplo, existe un
método llamado:
double Math.sqrt(double numero)
Este método recibe un número y
devuelve su raíz cuadrada al código
que lo invoque.
¿Cómo se compone un
método?



El método se compone de un encabezado y un cuerpo.
El encabezado se compone de:

El tipo del valor que retorna, que también puede ser
vacío (“void”)

El nombre del método.

Uno o más parámetros (cada uno compuesto de su tipo
y nombre).
El cuerpo se compone de:

El bloque de instrucciones que se van a ejecutar
cuando se invoca el método.

Dentro del bloque puede existir una instrucción para
retornar el valor resultante (se coloca solamente
cuando el valor de retorno no es vacío).
Métodos en JAVA
class NombreClase
{
public TipoDevuelto NombreMétodo (tipo param1,
tipo param2, más parametros…)
{
// Inicia el código del método
// Pueden definirse instrucciones en este bloque
// ValorDevuelto es el valor que devuelve el
// método si el TipoDevuelto es diferente de void
return ValorDevuelto;
} // Termina de especificar el código del método
} // Termina de especificar la clase
Métodos estáticos



Las variables o métodos estáticos son
definiciones que van a ser compartidas por
todas las instancias de objeto de la misma
clase.
Los métodos estáticos existen siempre,
incluso cuando no se han creado objetos de
la clase.
Para invocar a un método estático solamente
se utiliza el nombre de la clase.
El método main es estático

La razón por la cual el método main
es estático es simplemente que se
requiere poder invocarlo al inicio del
programa cuando aún no se ha
creado ninguna instancia (objetos).
Llamado a un método



Para llamar a un método se utiliza su
nombre seguido de ( ).
Dentro de los paréntesis vamos a
colocar los parámetros que
configuren su ejecución. Estos
valores o parámetros se separan con
coma.
Si el método devuelve algún valor,
dicho valor debe ser evaluado en el
punto donde se invocó al método.
Las clases Byte, Integer, Double,
Float y Character


Las clases Byte, Boolean, Integer, Double,
Float y Character son clases envoltorias que
poseen métodos estáticos para los objetos a
cuyo tipo se refieren.
Por ejemplo, hay un método que toma una
hilera y la convierte al tipo indicado:


int valor = Integer.parseInt(“25”);
double valor = Double.parseDouble(“3.1417”);
Clase Math

La clase Math posee unconjunto de métodos
estáticos para realizar operaciones
matemáticas comunes:

Math.random() genera un número aleatorio en el
rango [0,1[.

Math.sqrt(x) calcula la raíz cuadrada de "x".

Math.pow(x, y) calcula xy.

Math.sin(x) y Math.cos(x) corresponden a las
funciones trigonométricas seno y coseno.
Alcance de las variables dentro de
los métodos



Al nombrar una variable, JAVA primero busca
el nombre entre las variables locales,
parámetros, y por último en las variables del
objeto.
Para evitar conflictos de nombres, se utiliza
this.variable para las variables del objeto
instancia. "this" es el nombre del objeto
dentro de él mismo.
Si un método invoca un segundo método,
este útlimo no puede acceder a las variables
del primero a menos que estas sean pasadas
como parámetro.
Sobrecarga de métodos


La sobrecarga de métodos es un
medio para tener métodos con el
mismo nombre, pero con tipos y / o
número de parámetros distintos.
Con esto se logra tener diferentes
versiones de una misma operación,
que varía según el número o el tipo
de los parámetros.
Sobrecarga de métodos


La distinción entre métodos con el mismo
nombre se hace entonces por medio de sus
parámetros, dado que el verdadero nombre
de un método incluye sus parámetros.
No se aceptan dos métodos donde lo único
que cambia entre ellos es su valor de
retorno. En este caso sus nombres son
iguales y el compilador no sabrá a cual
versión del método invocar.
Métodos públicos, protegidos y
privados




Tal como las variables dentro de una clase
los métodos pueden ser públicos, protegidos
o privados.
Un método público es accesible fuera de la
clase.
Un método privado no es accesible fuera de
la clase.
Los métodos protegidos se comportan como
públicos pero se convierten a privados en las
clases que heredan.
Encadenamiento de
métodos

El encadenamiento de métodos permite
resumir llamados a métodos sobre el mismo
objeto.



Por ejemplo, las instrucciones anteriores se
pueden resumir a:


objeto.metodo1();
objeto.metodo2();
objeto.metodo1().metodo2();
Recomendación:

¡No lo use porque es semánticamente ambiguo!
¿Cómo funciona el encadenamiento
de métodos?

Para encadenar métodos es necesario que el objeto
actual devuelva luego de llevar a cabo su método una
referencia de sí mismo para que el siguiente método lo
pueda utilizar.
Clase &metodo()
{
// Modifica o usa la instancia de Clase
// Luego devuelve una referencia de la
// misma instancia que acaba de ser utilizada
return this;
}
Métodos constructores y
destructores



El constructor es el método que
siempre es llamado
automáticamente al iniciar el objeto.
El destructor es el método que
siempre es llamado
automáticamente al terminar el
objeto.
Los constructores y destructores no
devuelven valores.
Recursividad



La recursividad es una técnica para resolver
problemas que permite plantear la solución
en términos de sí misma.
La recursividad cuando es bien utilizada
permite crear código sucinto y fácilmente
inteligible.
Un ejemplo clásico de problema resuelto con
recursividad es el factorial de un número
entero.
Descargar