PDF de programación - Tema 4: Métodos

<<>>
Imágen de pdf Tema 4: Métodos

Tema 4: Métodosgráfica de visualizaciones

Publicado el 20 de Enero del 2019
530 visualizaciones desde el 20 de Enero del 2019
2,8 MB
33 paginas
Programación

Tema 4: Métodos

Programación DIT-UPM

1

Contenidos

! 1. El concepto de método
! 2. Definición: cabecera
! 3. Definición: cuerpo
! 4. Uso de métodos
! 5. Métodos útiles

Programación DIT-UPM

2

Métodos

! Un método es un bloque de código con una

misión:
" Puede utilizar unos argumentos de entrada para

producir un resultado

" Puede manipular atributos de un objeto

(setters/getters)

! Un conjunto de métodos define una abstracción

que nos facilita resolver nuestro problema
usando nuestros propios conceptos

Programación DIT-UPM

3

Definición de métodos

!  Cabecera

acceso tipo nombre (parametros ...) excepciones

!  Cuerpo
"  bloque
"  secuencia de instrucciones
"  declaración de variables automáticas
"  los parámetros se comportan como variables

!  Colocación

"  Dentro de las clases, el orden de los métodos no importa
" NO dentro de otro método ni fuera de una clase

Programación DIT-UPM

4

Acceso

Tipo de
resultado Nombre Parámetros

Excepciones

Anatomía

public double distancia (Punto q) throws Exceptions
{

Variables
locales


}

double dx= this.x – q.getX();
double dy= this.y – q.getY();
return Math.sqrt(dx*dx + dy*dy);

Cabecera

Cuerpo

Resultado

Programación DIT-UPM

5

Signatura
! La signatura de un método está compuesta por

" <clase, nombre, <tiposDeLosParámetros> >
! No forman parte ni el tipo de retorno ni las

excepciones (si hay)

! No puede haber 2 métodos con igual

signatura
" Java no sabría a cual nos referimos
" Si hay varias signaturas, decimos que hay sobrecarga

<Punto, distancia, <Punto> >
<Punto, distancia, <double, double>

Programación DIT-UPM

6

Accesibilidad

! private

" sólo es accesible desde el texto de la propia clase

#  this.metodo ( parametros )
#  metodo ( parametros )

! no se dice nada

" es accesible por cualquier clase del mismo paquete

#  objeto.metodo ( parametros )

! public

" es accesible por cualquiera
#  objeto.metodo ( parametros )

! aplicable a atributos y métodos

Programación DIT-UPM

7

Parámetros

! Parámetro formal: el nombre asignado a los

parámetros al definir el método
"  public void mueve (double nuevox, double nuevoy)
! Parámetro real: valores con los que se llama al

{ ... }

método
"  p.mueve (3.15, Math.sqrt(22.11*x)+9);

! Deben ser compatibles en posición, número y

tipo

Programación DIT-UPM

8

Parámetros

! Se crean variables nuevas internas al método

cada vez que se llama, cuyo valor es una
copia del valor que se pasa como parámetro
" Si son de tipos primitivos: por valor

#  se hace una copia del valor

" Si son de tipos referenciados: por referencia

(nombreDelObjeto)
#  Se hace una copia de la referencia (se comparte el objeto

referenciado, pero no se duplica el objeto)

Programación DIT-UPM

9

Paso del valor

!  tipos primitivos

"  enteros, reales, boolean, caracteres
"  se hace una copia
"  las modificaciones no se notan fuera

void m (int x) {

x*= 2;
}

int n= 5;
System.out.println(n);

n=5

Programación DIT-UPM

10

Paso del valor

"  enteros, reales, boolean, caracteres

!  se hace una copia
!  las modificaciones no se notan fuera
!  void m (int x) {

!  tipos primitivos

x*= 2;
}

x=5

x=10

!  int n= 5;

System.out.println(n);
m(n);

n=5

Programación DIT-UPM

11

Paso del valor

"  enteros, reales, boolean, caracteres

!  se hace una copia
!  las modificaciones no se notan fuera
!  void m (int x) {

!  tipos primitivos

x*= 2;
}

!  int n= 5;

System.out.println(n);
m(n);
System.out.println(n);

n=5

Programación DIT-UPM

12

Paso de la referencia

! Objetos creados por el programador

" tras un new (...)
" y también los array

! Se comparte el objeto
! Si el método llamado modifica el objeto, éste

queda modificado
" efecto colateral

! Es a la vez cómodo...

y peligroso

Programación DIT-UPM

13

Paso la referencia

class Punto {
int x, y;
Punto (int _x, int _y) { x= _x; y= _y; }
void escala (int s) { x*= s; y*= s; }
void print () {
System.out.println(“x= “ + x);
System.out.println(“y= “ + y);
} //fin print
void doble (Punto p) {
2
p.escala(2);
3
} // fin doble
} // fin clase Punto

3 4

1

a

Punto a= new Punto(3, 4);
1
a.print();
doble(a);
2
a.print();
4

2

a

3

a

4

a

p

p

3 4

6 8

6 8

Programación DIT-UPM

14

Bloque

!  Secuencia de instrucciones entre llaves
!  Tamaño ideal inferior a una pantalla / hoja

"  Debe ser íntegro, puede tener tamaño 0 (sin cuerpo)

!  Un método -> un concepto
!  Se pueden declarar variables automáticas
!  Se ejecuta hasta } o hasta encontrar un return

"  Puede haber return donde haga falta

!  Los parámetros formales

" Se cargan con los valores de los reales
" Se comportan como variables
" Se eliminan al acabar el bloque

Programación DIT-UPM

15

return

!  Los métodos pueden devolver valores

"  void: No devuelve nada

#  efectos tendrán que ser colaterales

public static void main (String[] args) { ... }

double s= Math.sqrt(2.0);

"  Un valor de un tipo primitivo
"  Un objeto de una clase definida
!  sintaxis: return expresion;
!  el compilador de Java comprueba que:

Punto q= p.desplaza(3, 4);

"  el tipo de la expresión coincide con el declarado en el método
"  en métodos que no devuelven nada (void) se puede usar sin

expresión (return ;)
#  útil si no hay nada que ejecutar antes de llegar al final del método

Programación DIT-UPM

16

Ámbitos

! Ámbito estático: accesibilidad
" determina dónde puede referirse

#  a un componente de un objeto (atributo o método)
#  a una variable de un método (formal o automática)

! Ámbito dinámico: vida

" determina cuándo nace y muere un atributo o una

variable

" cuando un contenedor muere, se pierde su valor y

habrá que volver a inicializarlo

Programación DIT-UPM

17

Atributos de una clase

! Nacen con la construcción del objeto

" Objeto x= new Objeto(...);

! Viven hasta que el objeto es inaccesible
" se queda sin referencias, referencia -> null

! Regla:

" Todos los atributos deben ser private

#  Para controlar todos los accesos mediante métodos
#  Si un día queremos cambiar el valor de los atributos

bastará con ajustar los métodos

#  Un método puede acceder a TODOS los campos de un
objeto (atributos u otros métodos) porque está DENTRO,
incluido los private

Programación DIT-UPM

18

Métodos de una clase

! Nacen al invocar un método
" Objeto.metodo(parametros);

! Viven hasta un return o }

Programación DIT-UPM

19

Variables automáticas

! El cuerpo de un método es un bloque

" se pueden declarar variables (automáticas)

! Las variables del bloque class

" pueden usarse aunque textualmente aparezcan

después

" “Viven” mientras “viva” el objeto

! Las variables del bloque método

" pueden usarse sólo después de definirse

#  textualmente debe aparecer primero la definición y luego

el uso

" Viven sólo dentro del bloque de instrucciones

Programación DIT-UPM

20


y

e

x

e
d
o
t
i



f
f
i
d
x

e
d
o
t
i

f
f
i
d
y

e
d
o
t
i



p

e
d
o
t
i



b
m
Á

b
m
Á

b
m
Á

b
m
Á

Ámbito de variables

class Punto {

public double dameDistancia (Punto p) {

double xdiff = this.x - p.x;

double ydiff = this.y - p.y;

return Math.sqrt (xdiff*xdiff + ydiff*ydiff);

}

private double x;
private double y;
}

Programación DIT-UPM

21

Ámbito dinámico

! Al llamar a un método, se crea un ámbito

dinámico
" se generan todas las variables-parámetros
" se generan las variables automáticas

! Al salir del método

" desaparecen dichas variables

! El ámbito dinámico existe (está activo) mientras

estemos ejecutando el método
" incluso si se llaman nuevos métodos desde este

Programación DIT-UPM

22

¿Cómo se usa un método?

!  Llamada a un método

1.  en el punto del programa en el que se llama

se calculan los valores de los parámetros reales

2.  se salta al comienzo del método
3.  se cargan los parám. formales con los parám. reales
4.  se ejecuta el bloque hasta que se alcanza return o }
5.  se sustituye la llamada por el valor que devuelve el método
6.  se continúa la ejecución a continuación del punto en el que

se llamó el método

!  Método especial main

"  el intérprete de Java lo llama cuando ejecutamos un

programa

Programación DIT-UPM

23

Perímetro de un método

! Llamada:

" objeto.metodo (parametros)
" clase.metodo (parametros)
" dentro de la misma clase basta poner el nombre

#  metodo (parametros)

! Retorno:

" Pueden devolver un valor de cualquier tipo o clase

#  se antepone el nombre del tipo o clase a devolver

" o no devolver nada

#  se antepone la palabra void

Programación DIT-UPM

24

class EjemploPunto {

... main (String[] args) {

Punto p= new Punto(),
Punto q= new Punto();
double x;
.
.
.
x= p.distancia(q);

}
}

Ejemplo (V)

Aparece args

Son distintos p!

Aparece p
Aparece q
Aparece x
Aparece p
Aparece xdiff
Aparece ydiff
Desaparecen p,
xdiff, ydiff
Desaparecen args, p, q, x

Programación DIT-UPM

25

¿Cuándo definir un método?

! Método = concepto distinto y detallado

" debe hacer una sola cosa
! Aumento de la legibilidad

" su nombre debe indicar lo que hace (verbo)
" añadir comentarios

! No debe ser muy largo

" que quepa en una pantalla

! No debe tener muchos parámetros

Programación DIT-UPM

26

¿Cómo definir un método?

! Escribir su cabecera completa

" Darle nombre informativo
" Indicar el tipo de retorno
" Indicar los parámetros (los menos posibles)

! Escribir el cuerpo

" Primeras s
  • Links de descarga
http://lwp-l.com/pdf14920

Comentarios de: Tema 4: Métodos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad