31/01/12
1
Introducción a la Programación
Métodos Curso de Programación en Java
Luis Guerra [email protected]
Enero 2012
Introducción
! La mayor parte de los programas que resuelven problemas reales conFenen un alto número de líneas de código ! Cientos de miles de líneas
! La experiencia ha demostrado que la mejor manera para desarrollar y mantener programas de cierta complejidad es el construirlos a parFr de piezas pequeñas o módulos ! Técnica divide y vencerás
Módulos
! En Java hay tres Fpos de módulos: ! Métodos ! Clases ! Paquetes
! El API (ApplicaFon Programming Interface) de Java ofrece varios módulos
Objetos y Métodos ! Un objeto está compuesto de:
! Estado: ! variables de instancia ! variables de clase
! comparFdas (ya se verán)
! Métodos ! de instancia ! de clase
Introducción I
! Los métodos describen los mecanismos para realizar las acciones/tareas de los objetos
! Aísla al usuario (del objeto) de las tareas complejas que realiza
! En otros lenguajes: funciones y procedimientos
Introducción II
! Para promocionar la reusabilidad cada método debería estar limitado a realizar un tarea muy concreta ! El nombre de esa tarea Fene que expresar claramente la acción
del método
! Un método que realiza una única tarea es más sencillo de comprobar y de depurar que uno que realice varias
31/01/12
2
Introducción III
! Permiten modularizar un programa separando sus tareas en unidades auto contenidas
! Ventajas: ! Divide y vencerás ! ReuFlización ! Evitar duplicidad
! Facilita la depuración y el mantenimiento
! En Java todo método Fene que pertenecer a una clase ! El programa principal main es un método de una clase
Introducción IV
! Como ya se vio en el capítulo de introducción, los objetos interactúan por medio de mensajes
! Un objeto le pide a otro que realice una acción (ejecuta el método X)
! El objeto llamado realiza la acción pudiendo devolver un resultado ! puede no devolver nada
! El objeto llamante no conoce los detalles de cómo se lleva a cabo la acción
¿Como funciona un programa orientado a objetos?
Cocina
No hay café
Tienda
Comprar café
Café
Buscar el café
Esquema general
Método(a1, ..., an)
a1 a2 an
...
resultado
Argumentos
Método
Valor de retorno Puede no
devolver un resultado
Declaración
(static) tipo identificador (parámetros ...) {
...
sentencias
...
}
Normalmente, se suelen uFlizar nombres compuestos de varias palabras y se escribe en mayúsculas la primera letra de cada palabra exceptuando la primera Ej: preguntarNombreUsuario
Uso de un método
! Se invoca proporcionando valores a los argumentos de llamada
! El valor de retorno se devuelve por medio de un return
! Se admiten métodos que no devuelvan nada ! Fpo void como Fpo de retorno
! Sólo con este Fpo no es obligatorio usar la sentencia return
31/01/12
3
Ejemplo
!
static int suma(int a, int b) {!
int resultado;!
resultado = a+b;!
return resultado;!
}!
!
static void imprimeHola() {!
System.out.println(“hola”);!
}!
!
// Llamadas!int resultado = suma(2,3);!int d=4, f=5;!suma(d,f);!imprimeHola();!
Paso de parámetros
! Paso por valor: ! La función trabaja con una copia del valor del argumento ! Se considera un parámetro de entrada
! Las operaciones dentro de la función no afectan a las variables de entrada
Ejemplo
static int incremento (int a) {!
a = a + 1;!
return a;!
}!
public static void main(String[] args) {!
int b = 0;!
incremento(b); //Cuánto vale b una vez se ejecute el método!
}!
!
Ejemplo
static int incremento (int a) {!
a = a + 1;!
return a;!
}!
public static void main(String[] args) {!
int a = 0, b=1;!
incremento(a); //Cuánto vale a una vez se ejecute el método!
}!
!
0
0 1
Ejemplo
static int incremento (int a) {!
a = a + 1;!
return a;!
}!
public static void main(String[] args) {!
int a = 0, b=1;!
incremento(a); //Cuánto vale a una vez se ejecute el método!
}!
!
1
0 1
Bloque
! Un conjunto de sentencias contenidas dentro de un par de llaves
! Ya hemos visto varios:
int suma(int a, int b) {! int resultado;! resultado = a+b;! return resultado;!}!
if (condicion) {!...!}!
while(condicion) {!...!}!
for(int i=0; i<10; i++) {!...!}!
31/01/12
4
Variables locales
! Las variables declaradas dentro de un método
! Su ámbito es la región del método que va desde su declaración al final del bloque ! No pueden usarse antes de haber sido declaradas
! Se crean cuando el programa llega a su declaración
! Las variables de Fpos básicos se destruyen al finalizar el bloque
! No se inicializan por defecto ! Si se intentan usar sin haber sido inicializadas -‐> ERROR
Ejemplos
static void imprime(int c) {!
System.out.println(c);!
}!
public static void main(String[] args) {!
imprime(a); !
int a = 0, b=1;!
if (a==0) {!
int c=2;!
imprime(a);!
}!
c=4;!
} !
Arrays como parámetros
! Recordatorio: ! ¿Qué es un array? ! ¿Qué almacena una variable del Fpo array?
! ¿Qué se copiará al pasarlo como parámetro?
! ¿Qué pasa con un array creado en una función y devuelto como valor de retorno?
¿Qué es un array?
10 20 30 40
4
50 60 70 80
4
int[] valores1 = {10,20,30,40};!
int[] valores2 = {50,60,70,80};!
valores1 = valores2;!
Arrays como parámetros II
! Recordatorio: ! ¿Qué es un array? ! ¿Qué almacena una variable del Fpo array?
! ¿Qué se copiará al pasarlo como parámetro?
! ¿Qué pasa con un array creado en una función y devuelto como valor de retorno?
Arrays como parámetros III
! Lo que se copia es la referencia no el objeto
! Permite que se puedan modificar en métodos disFntos a donde hayan sido declarados ! Los objetos no son Fpos básicos y no se destruyen cuando finaliza
su ámbito ! sólo cuando no pueden ser referenciados
! recolector de basura
! El parámetro se declara igual que una variable local ! Fpo[] nombre
31/01/12
5
Ejemplo static void modifica(int[] unarray) {!
unarray[0] = 1;!
}!
public static void main(String[] args) {!
int[] valores1 = {10,20,30,40};!
modifica(valores1);!
}!
10 20 30 40
4
Ejemplo static void modifica(int[] unarray) {!
unarray[0] = 1;!
}!
public static void main(String[] args) {!
int[] valores1 = {10,20,30,40};!
modifica(valores1);!
}!
1 20 30 40
4
Ejemplo static int[] creaArray() {!
int[] unarray = {10,20,30,40};!
return unarray;!
}!
public static void main(String[] args) {!
int[] valores1 = creaArray();!
}!
10 20 30 40
4
Tipos de métodos
! En Java no existen funciones
! Todos son métodos ! Tienen que estar incluidos en una clase
! Dos Fpos de métodos ! De instancia ! De clase
Métodos de instancia
! Tiene que exis4r un objeto para poder llamarlos ! Se uFliza la variable que almacena la referencia de objeto para la
invocación ! Ej:
! scanner.nextInt(); ! System.out.println(2);
! Pueden acceder a las variables de instancia
tipo identificador (parámetros ...) {
...
sentencias
...
}
Ejemplo public class Perro{!
String nombre;!
Perro(String nom) {!
this.nombre = nom;!
}!
void ladrar() {!
System.out.println(“Guau!”);!
}!
}!
public static void main(String[] args) {!
Perro miPerro = new Perro(“Pancho”);!
miPerro.ladrar();!
}!
31/01/12
6
Métodos estáFcos o de clase
! No necesitan que exista un objeto para poder ser llamados
! Pueden acceder a variables de clase ! Variables comunes a todos los objetos
! Clase Coche Toyota Corolla ! Nº ventanas, dimensiones, ...
! Tienen el modificador staFc delante de la declaración del método
! Se invocan o bien dentro de un método de la clase o por medio del idenFficador de la clase ! Ej: MiClase.miMetodo(1,2,3); Math.sqrt();
Ejemplos
class Operaciones {!
static int suma(int a, int b) {!
return a + b;!
}!
public static void main(String[] args) {!
System.out.println(suma(2,3));!
System.out.println(Operaciones.suma(2,3));!
}!
} !
Método Main
! Se denomina función principal (en inglés: main funcFon)
! Es un método de clase
! Sirve de punto de inicio del programa
! Cualquier clase puede tener un método main
! Cuando se lanza java se especifica la clase que Fene el Main que se debe ejecutar
! Si ninguna clase Fene un main, java devuelve un error
Estructura
public static void main( String[] args) {
sentencias
}
Argumentos del Main
! ¿Qué son los args? ! Un Array pero ¿Qué conFene?
! Los argumentos pasado por la línea de mandatos
! Cuando ejecutamos un programa podemos pasarle argumentos ! Ejemplo: opciones del ejecutable, datos, ... java MiPrograma 1 2 3
! En args se encuentran cada uno de los argumentos pasados en formato String
Top Related