Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Conceptos fundamentales de Java
3-6
Definición de métodos
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Objetivos
En esta lección se abordan los siguientes objetivos:
• Describir la colocación adecuada de métodos en una
superclase o subclase
• Simplificar la programación creando y llamando a métodos
definidos
• Manejar las colisiones
JF 3-6
Definición de métodos
3
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Inserción eficaz de los métodos
• A veces, muchas de las líneas de código son necesarias para
programar un comportamiento.
• Por ejemplo, puede que desee programar una instancia para
que coma otros objetos, o que gire cuando llegue al borde del
mundo.
• Defina nuevos métodos para ahorrar tiempo y líneas de
código.
– Defina un nuevo método para una acción bajo el método act.
– Llame al nuevo método en el método act o dentro de otro método.
– Defina el método en la superclase si desea que sus subclases hereden
automáticamente el método.
JF 3-6
Definición de métodos
4
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Métodos definidos
• Los métodos definidos son nuevos métodos que crea el
programador.
• Estos métodos:
– Se pueden ejecutar inmediatamente, o bien guardarse y llamarse más
adelante.
– No cambie el comportamiento de la clase cuando esté guardada.
– Separe el código en métodos más cortos de modo que se facilite su
lectura.
Los métodos definidos crean un nuevo método que una clase no
poseía aún. Estos métodos se escriben en el código fuente de la clase
bajo la clase act.
JF 3-6
Definición de métodos
5
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Pasos para definir un nuevo método
• Seleccionar un nombre para el método.
• Abrir el editor de códigos para la clase que va a utilizar el
método.
• Agregar el código para la definición del método bajo el
método act.
• Llamar a este nuevo método desde el método act o guardarlo
para utilizarlo más adelante.
JF 3-6
Definición de métodos
6
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Pasos para definir un nuevo método
• Podríamos, por ejemplo, agregar nuestro código de
movimiento en act() a un nuevo método.
• Esto ayuda a mantener el código en act al mínimo y hace que
sus acciones sean más claras.
JF 3-6
Definición de métodos
7
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Giro al borde del mundo
• Problema:
– Las instancias se detienen y no pueden moverse cuando alcanzan el
borde del mundo.
– Las instancias deben girar y moverse cuando alcanzan el borde del
mundo.
• Solución:
– Cree una subclase de Actor que defina un método que pueda detectar
si el objeto se encuentra al borde del mundo y si gira de forma
adecuada.
– Llame a los nuevos métodos en las subclases que deben poder girar y
moverse al borde del mundo.
JF 3-6
Definición de métodos
8
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Probar si se encuentra al borde del mundo
• Greenfoot tiene un método en la clase Actor denominado
isAtEdge().
• Este devuelve la condición true si el actor se encuentra en
uno de los bordes.
• Podríamos utilizarlo para detectar y girar a los actores en el
mundo en lugar de que queden suspendidos en uno de los
bordes.
• Si nuestro programa necesitase saber en qué borde se
encontraba un actor, deberíamos definir un método para
recuperar el lado que estamos tocando, o 4 métodos
separados, uno por cada lado.
JF 3-6
Definición de métodos
9
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Probar la posición de un objeto en
el mundo
• Para probar si un objeto se encuentra cerca del borde del
mundo, necesita:
– Expresiones booleanas para expresar si una condición es true o false.
– Ejemplo: podríamos girar una instancia 180 grados si se encuentra al
borde del mundo.
JF 3-6
Definición de métodos
10
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Operadores lógicos
Operador
lógico
Significado Definición
Signo de
exclamación (!)
NO
Invierte el valor de una expresión booleana
(si b es true, !b es false. Si b es false, !b es
true).
Doble ampersand
(&&)
Y
Combina dos valores booleanos y devuelve
un valor booleano que es true solo si ambos
de sus operandos son true.
Dos líneas (II) O
Combina dos variables o expresiones
booleanas y devuelve un resultado que es
true si uno o ambos de sus operandos son
true.
Los operadores lógicos se pueden utilizar para combinar varias
expresiones booleanas en una expresión booleana.
JF 3-6
Definición de métodos
11
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Crear la superclase Bug
• Antes de crear los métodos definidos, cree una nueva
subclase de la clase Actor denominada Bug.
• Esta clase no tiene ninguna imagen y no tendrá instancias que
actúen en el escenario, pero contendrá algunos métodos
definidos que otras subclases van a heredar.
JF 3-6
Definición de métodos
12
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Crear las subclases Bug
• Podríamos recrear la araña y la mosca haciendo clic con el botón
derecho en Bug y seleccionando la nueva subclase.
• Pero, puesto que ya las hemos creado anteriormente, podemos
modificar el código fuente de la araña y de la mosca para que se
extiendan desde Bug en lugar de hacerlo desde Actor.
• Al hacer clic en Compile, Greenfoot actualizará la estructura de
clases.
JF 3-6
Definición de métodos
13
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Definir el método turnAtEdge en
Superclass
• Abra el editor de códigos para la clase Bug.
• Escriba el código para el método turnAtEdge, bajo el método
act.
• Compile el código y, a continuación, cierre el editor de
códigos.
JF 3-6
Definición de métodos
14
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Llamar al método turnAtEdge en Subclass
• Abra el editor de códigos para la subclase Fly.
• Agregue una llamada al método turnAtEdge dentro del
método Act.
JF 3-6
Definición de métodos
15
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Definir el método atRightEdge en la
clase Bee
• Abra el editor de códigos para la clase Bee.
• Escriba el código para el método atRightEdge, bajo el método
act.
• Compile el código y, a continuación, cierre el editor de
códigos.
JF 3-6
Definición de métodos
16
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Definir el método atBottomEdge en la
clase Bee
• Abra el editor de códigos para la clase Bee.
• Escriba el código para el método atBottomEdge, bajo el
método act.
• Compile el código y, a continuación, cierre el editor de
códigos.
JF 3-6
Definición de métodos
17
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Métodos en atRightEdge y atBottomEdge
• Los métodos utilizados en atRightEdge y atBottomEdge
incluyen:
– getX: Método de un actor que devuelve la coordenada x de la ubicación
actual del actor.
– getY: Método de un actor que devuelve la coordenada y de la ubicación
actual del actor.
– getWorld: Método de un actor que devuelve el mundo en el que vive
este actor.
– getHeight: Método de una clase GreenfootImage que devuelve la
altura de la imagen.
– getWidth: Método de una clase GreenfootImage que devuelve el ancho
de la imagen.
JF 3-6
Definición de métodos
18
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Llamar al método en Class
• Abra el editor de códigos para la clase Bee.
• Cree una sentencia IF que llame al método atRightEdge y
atLeftEdge como una condición en act.
• Si la abeja se encuentra a la izquierda, volverá a aparecer a la
derecha y viceversa.
JF 3-6
Definición de métodos
19
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Llamar al método en Class
• Compile el código y ejecute el escenario para probarlo.
• Complete la sentencia IF para atTopEdge y atBottomEdge.
JF 3-6
Definición de métodos
20
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Documentación de la clase
• La documentación de la clase Bug muestra el nuevo método
una vez definido.
• Todas las subclases de la superclase Bug heredan este
método.
JF 3-6
Definición de métodos
21
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Colisiones
• Por lo general, la mayoría de los proyectos detectarán si dos
actores entran en contacto, lo que se suele conocer como
colisión.
• En GreenFoot existen varias formas de detectarlo.
• Algunas de estas son:
– isTouching()
– getOneIntersectingObject(Class)
– getOneObjectAtOffset(Class)
– getIntersectingObjects(Class)
– getNeighbours(distance,diagonal)
– getObjectsAtOffset(dx,dy,Class)
JF 3-6
Definición de métodos
22
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Colisiones
Método ¿Cuándo utilizarlo?
isTouching Si simplemente desea detectar una colisión con
un objeto
getOneIntersectingObject Si desea devolver una referencia al objeto con el
que ha colisionado. Normalmente se utiliza si
desea realizar una acción en el objeto que ha
colisionado.
getOneObjectAtOffset Igual que getOneIntersectingObject excepto que
se puede cambiar el lugar en el que se detectará
la colisión con respecto al objeto actual. Por lo
tanto, se podría detectar la colisión antes de que
ocurriese, por ejemplo, evitar que el actor se
dirija al muro.
JF 3-6
Definición de métodos
23
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Método definido para eliminar objetos
• Se puede escribir código en el juego de modo que un objeto
predator pueda comer objetos prey.
• Cree un método definido en el método act de la superclase
Bee denominado catchFly para permitirnos eliminar las
moscas que atrapemos.
• Para crear este método definido, vamos a utilizar el método
de detección de colisión más sencillo: isTouching.
JF 3-6
Definición de métodos
24
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Definir el método catchFly
• Defina el método catchFly en la clase Bee.
• Este método detecta una colisión con una mosca y, a
continuación, la elimina.
JF 3-6
Definición de métodos
25
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Definir el método catchFly (alternativo)
• También podríamos haber utilizado getOneIntersectingObject
y haber accedido a una referencia al actor antes de
eliminarlo.
JF 3-6
Definición de métodos
26
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Llamar a catchFly en el método Act
• Llame al nuevo método catchFly en el método Act de la abeja.
• Ejecute el escenario para probar el código.
JF 3-6
Definición de métodos
27
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Terminología
Términos clave que se han utilizado en esta lección:
• Métodos definidos
• Colisiones
JF 3-6
Definición de métodos
28
Copyright © 2015, Oracle y/o sus filiales. Todos los derechos reservados.
Resumen
En esta lección, debe haber aprendido a:
• Describir la colocación adecuada de métodos en una
superclase o subclase
• Simplificar la programación creando y llamando a métodos
definidos
JF 3-6
Definición de métodos
29
Greenfoot 6

Greenfoot 6

  • 2.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Conceptos fundamentales de Java 3-6 Definición de métodos
  • 3.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Objetivos En esta lección se abordan los siguientes objetivos: • Describir la colocación adecuada de métodos en una superclase o subclase • Simplificar la programación creando y llamando a métodos definidos • Manejar las colisiones JF 3-6 Definición de métodos 3
  • 4.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Inserción eficaz de los métodos • A veces, muchas de las líneas de código son necesarias para programar un comportamiento. • Por ejemplo, puede que desee programar una instancia para que coma otros objetos, o que gire cuando llegue al borde del mundo. • Defina nuevos métodos para ahorrar tiempo y líneas de código. – Defina un nuevo método para una acción bajo el método act. – Llame al nuevo método en el método act o dentro de otro método. – Defina el método en la superclase si desea que sus subclases hereden automáticamente el método. JF 3-6 Definición de métodos 4
  • 5.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Métodos definidos • Los métodos definidos son nuevos métodos que crea el programador. • Estos métodos: – Se pueden ejecutar inmediatamente, o bien guardarse y llamarse más adelante. – No cambie el comportamiento de la clase cuando esté guardada. – Separe el código en métodos más cortos de modo que se facilite su lectura. Los métodos definidos crean un nuevo método que una clase no poseía aún. Estos métodos se escriben en el código fuente de la clase bajo la clase act. JF 3-6 Definición de métodos 5
  • 6.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Pasos para definir un nuevo método • Seleccionar un nombre para el método. • Abrir el editor de códigos para la clase que va a utilizar el método. • Agregar el código para la definición del método bajo el método act. • Llamar a este nuevo método desde el método act o guardarlo para utilizarlo más adelante. JF 3-6 Definición de métodos 6
  • 7.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Pasos para definir un nuevo método • Podríamos, por ejemplo, agregar nuestro código de movimiento en act() a un nuevo método. • Esto ayuda a mantener el código en act al mínimo y hace que sus acciones sean más claras. JF 3-6 Definición de métodos 7
  • 8.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Giro al borde del mundo • Problema: – Las instancias se detienen y no pueden moverse cuando alcanzan el borde del mundo. – Las instancias deben girar y moverse cuando alcanzan el borde del mundo. • Solución: – Cree una subclase de Actor que defina un método que pueda detectar si el objeto se encuentra al borde del mundo y si gira de forma adecuada. – Llame a los nuevos métodos en las subclases que deben poder girar y moverse al borde del mundo. JF 3-6 Definición de métodos 8
  • 9.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Probar si se encuentra al borde del mundo • Greenfoot tiene un método en la clase Actor denominado isAtEdge(). • Este devuelve la condición true si el actor se encuentra en uno de los bordes. • Podríamos utilizarlo para detectar y girar a los actores en el mundo en lugar de que queden suspendidos en uno de los bordes. • Si nuestro programa necesitase saber en qué borde se encontraba un actor, deberíamos definir un método para recuperar el lado que estamos tocando, o 4 métodos separados, uno por cada lado. JF 3-6 Definición de métodos 9
  • 10.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Probar la posición de un objeto en el mundo • Para probar si un objeto se encuentra cerca del borde del mundo, necesita: – Expresiones booleanas para expresar si una condición es true o false. – Ejemplo: podríamos girar una instancia 180 grados si se encuentra al borde del mundo. JF 3-6 Definición de métodos 10
  • 11.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Operadores lógicos Operador lógico Significado Definición Signo de exclamación (!) NO Invierte el valor de una expresión booleana (si b es true, !b es false. Si b es false, !b es true). Doble ampersand (&&) Y Combina dos valores booleanos y devuelve un valor booleano que es true solo si ambos de sus operandos son true. Dos líneas (II) O Combina dos variables o expresiones booleanas y devuelve un resultado que es true si uno o ambos de sus operandos son true. Los operadores lógicos se pueden utilizar para combinar varias expresiones booleanas en una expresión booleana. JF 3-6 Definición de métodos 11
  • 12.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Crear la superclase Bug • Antes de crear los métodos definidos, cree una nueva subclase de la clase Actor denominada Bug. • Esta clase no tiene ninguna imagen y no tendrá instancias que actúen en el escenario, pero contendrá algunos métodos definidos que otras subclases van a heredar. JF 3-6 Definición de métodos 12
  • 13.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Crear las subclases Bug • Podríamos recrear la araña y la mosca haciendo clic con el botón derecho en Bug y seleccionando la nueva subclase. • Pero, puesto que ya las hemos creado anteriormente, podemos modificar el código fuente de la araña y de la mosca para que se extiendan desde Bug en lugar de hacerlo desde Actor. • Al hacer clic en Compile, Greenfoot actualizará la estructura de clases. JF 3-6 Definición de métodos 13
  • 14.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Definir el método turnAtEdge en Superclass • Abra el editor de códigos para la clase Bug. • Escriba el código para el método turnAtEdge, bajo el método act. • Compile el código y, a continuación, cierre el editor de códigos. JF 3-6 Definición de métodos 14
  • 15.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Llamar al método turnAtEdge en Subclass • Abra el editor de códigos para la subclase Fly. • Agregue una llamada al método turnAtEdge dentro del método Act. JF 3-6 Definición de métodos 15
  • 16.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Definir el método atRightEdge en la clase Bee • Abra el editor de códigos para la clase Bee. • Escriba el código para el método atRightEdge, bajo el método act. • Compile el código y, a continuación, cierre el editor de códigos. JF 3-6 Definición de métodos 16
  • 17.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Definir el método atBottomEdge en la clase Bee • Abra el editor de códigos para la clase Bee. • Escriba el código para el método atBottomEdge, bajo el método act. • Compile el código y, a continuación, cierre el editor de códigos. JF 3-6 Definición de métodos 17
  • 18.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Métodos en atRightEdge y atBottomEdge • Los métodos utilizados en atRightEdge y atBottomEdge incluyen: – getX: Método de un actor que devuelve la coordenada x de la ubicación actual del actor. – getY: Método de un actor que devuelve la coordenada y de la ubicación actual del actor. – getWorld: Método de un actor que devuelve el mundo en el que vive este actor. – getHeight: Método de una clase GreenfootImage que devuelve la altura de la imagen. – getWidth: Método de una clase GreenfootImage que devuelve el ancho de la imagen. JF 3-6 Definición de métodos 18
  • 19.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Llamar al método en Class • Abra el editor de códigos para la clase Bee. • Cree una sentencia IF que llame al método atRightEdge y atLeftEdge como una condición en act. • Si la abeja se encuentra a la izquierda, volverá a aparecer a la derecha y viceversa. JF 3-6 Definición de métodos 19
  • 20.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Llamar al método en Class • Compile el código y ejecute el escenario para probarlo. • Complete la sentencia IF para atTopEdge y atBottomEdge. JF 3-6 Definición de métodos 20
  • 21.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Documentación de la clase • La documentación de la clase Bug muestra el nuevo método una vez definido. • Todas las subclases de la superclase Bug heredan este método. JF 3-6 Definición de métodos 21
  • 22.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Colisiones • Por lo general, la mayoría de los proyectos detectarán si dos actores entran en contacto, lo que se suele conocer como colisión. • En GreenFoot existen varias formas de detectarlo. • Algunas de estas son: – isTouching() – getOneIntersectingObject(Class) – getOneObjectAtOffset(Class) – getIntersectingObjects(Class) – getNeighbours(distance,diagonal) – getObjectsAtOffset(dx,dy,Class) JF 3-6 Definición de métodos 22
  • 23.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Colisiones Método ¿Cuándo utilizarlo? isTouching Si simplemente desea detectar una colisión con un objeto getOneIntersectingObject Si desea devolver una referencia al objeto con el que ha colisionado. Normalmente se utiliza si desea realizar una acción en el objeto que ha colisionado. getOneObjectAtOffset Igual que getOneIntersectingObject excepto que se puede cambiar el lugar en el que se detectará la colisión con respecto al objeto actual. Por lo tanto, se podría detectar la colisión antes de que ocurriese, por ejemplo, evitar que el actor se dirija al muro. JF 3-6 Definición de métodos 23
  • 24.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Método definido para eliminar objetos • Se puede escribir código en el juego de modo que un objeto predator pueda comer objetos prey. • Cree un método definido en el método act de la superclase Bee denominado catchFly para permitirnos eliminar las moscas que atrapemos. • Para crear este método definido, vamos a utilizar el método de detección de colisión más sencillo: isTouching. JF 3-6 Definición de métodos 24
  • 25.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Definir el método catchFly • Defina el método catchFly en la clase Bee. • Este método detecta una colisión con una mosca y, a continuación, la elimina. JF 3-6 Definición de métodos 25
  • 26.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Definir el método catchFly (alternativo) • También podríamos haber utilizado getOneIntersectingObject y haber accedido a una referencia al actor antes de eliminarlo. JF 3-6 Definición de métodos 26
  • 27.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Llamar a catchFly en el método Act • Llame al nuevo método catchFly en el método Act de la abeja. • Ejecute el escenario para probar el código. JF 3-6 Definición de métodos 27
  • 28.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Terminología Términos clave que se han utilizado en esta lección: • Métodos definidos • Colisiones JF 3-6 Definición de métodos 28
  • 29.
    Copyright © 2015,Oracle y/o sus filiales. Todos los derechos reservados. Resumen En esta lección, debe haber aprendido a: • Describir la colocación adecuada de métodos en una superclase o subclase • Simplificar la programación creando y llamando a métodos definidos JF 3-6 Definición de métodos 29