JF 3 5 SG Esp
JF 3 5 SG Esp
JF 3 5 SG Esp
3-5
Selección aleatoria y constructores
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados.
Objetivos
En esta lección se abordan los siguientes objetivos:
• Crear comportamientos asignados de forma aleatoria
• Definir operadores de comparación
• Crear sentencias de control if-else
• Crear una instancia de una clase
• Reconocer y describir la notación de puntos
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 3
Selección aleatoria y constructores
3
Método getRandomNumber()
• El método getRandomNumber() es un método estático
que devuelve un número aleatorio entre cero y un
límite de parámetro.
• Este método se utiliza para eliminar la previsibilidad en
el programa.
• Firma de método:
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 4
Selección aleatoria y constructores
La selección aleatoria nos permite crear juegos que variarán en cada partida y, por lo tanto, son más
divertidos.
Los métodos estáticos son métodos que pertenecen a una clase en lugar de a una instancia. Esta idea no
resultará fácil de entender llegados a este punto, pero ya los ha utilizado en el método isKeyDown. Se
explicará la diferencia más adelante en el curso.
4
Notación de puntos
• Las nuevas subclases que se crean no heredan el
método getRandomNumber().
• Este método debe llamarse desde la clase Greenfoot
mediante la notación de puntos.
• Ejemplo:
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 5
Selección aleatoria y constructores
Para acceder al método getRandomNumber, debemos indicar a java que puede encontrarse en la clase
Greenfoot. Por lo tanto, debemos escribir Greenfoot.getRandomNumber().
5
Formato de la notación de puntos
• El formato para el código de la notación de puntos
incluye:
– Nombre de la clase u objeto al que pertenece el método
– Punto
– Nombre del método al que se llama
– Lista de parámetros
– Punto y coma
className.methodName (parameters);
objectName.methodName (parameters);
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 6
Selección aleatoria y constructores
Al hacer referencia a la clase que estamos codificando, podemos utilizar la palabra opcional "this" para
representar la clase actual. Así pues, cuando anteriormente utilizamos move(2), podríamos haber dicho
this.move(2).
"This" representa el objeto para el que estamos editando el código, pero es opcional y suele omitirse.
6
Ejemplo de notación de puntos
• Método getRandomNumber() que se muestra a
continuación:
– Llama a un número aleatorio entre 0 y hasta 15 (sin incluirlo).
– Devuelve un número aleatorio entre 0 y 14.
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 7
Selección aleatoria y constructores
¿Qué sucedería si deseásemos un número aleatorio entre el 1 y el 10? Podemos usar simplemente
Greenfoot.getRandomNumber(10)+1;
7
API de Greenfoot
• Consulte la interfaz de programadores de la aplicación
Greenfoot (API) para examinar métodos adicionales
para la llamada mediante la notación de puntos.
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 8
Selección aleatoria y constructores
8
Pasos para ver métodos en la clase
Greenfoot
• En el entorno de Greenfoot, seleccione el menú Help.
• Seleccione Greenfoot Class Documentation.
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 9
Selección aleatoria y constructores
9
Interfaz API de Greenfoot
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 10
Selección aleatoria y constructores
10
Operadores de comparación
• Utilice operadores de comparación para comparar un
valor de selección aleatoria con otro valor en una
sentencia de control.
• El siguiente ejemplo determina si el número aleatorio es
inferior a 20.
• Si es así, el objeto gira diez grados.
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 11
Selección aleatoria y constructores
11
Símbolos del operador de comparación
Símbolo Descripción
< Menor que
> Mayor que
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 12
Selección aleatoria y constructores
Un error común al realizar una comparación de iguales consiste en agregar solamente un signo de igual "=".
Este, a continuación, intenta asignar el segundo valor al primero y, en la mayoría de los casos, genera un
error de sintaxis.
12
Problema del juego solucionado con el
comportamiento aleatorio
• Problema:
– Un objeto mosca debe moverse de forma aleatoria, de modo
que sea más difícil para el objeto controlado por el teclado, una
abeja, atraparlo.
• Solución:
– La mosca debe girar un poco mientras se mueve.
– Para codificar esta solución, gire la mosca un número de grados
aleatorio, hasta 20 grados (un 10% del tiempo mientras se
mueve).
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 13
Selección aleatoria y constructores
13
Formato de comportamiento aleatorio
• La siguiente sentencia de programación incluye:
– Sentencia de control IF con el método getRandomNumber().
• Límite de parámetro de 100.
• Operador de comparación <.
• Número 10 para limitar el rango de valores de devolución de 0-9.
– Cuerpo del método con la sentencia para indicar que el objeto
debe girar un máximo de 20 grados si la condición es true.
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 14
Selección aleatoria y constructores
14
Formato de comportamiento aleatorio
• El problema con el ejemplo anterior es que la mosca
siempre gira de forma circular hacia la derecha.
• Podemos cambiarlo modificando el parámetro en el
método de giro, tal y como se indica a continuación.
• De este modo se generará un número aleatorio entre
-45 y +44.
• Recuerde que un valor de giro negativo gira hacia la
izquierda.
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 15
Selección aleatoria y constructores
Puede utilizar unos cuantos números aleatorios de su elección para probar la lógica del movimiento de la
mosca utilizando un papel y un lápiz si no está convencido del rango que se obtendrá.
15
Comportamiento condicional
• Las instancias pueden programarse para realizar
comportamientos específicos si no se cumple una
condición, mediante una sentencia if-else.
• Por ejemplo, si se programa una instancia para que gire
el 6% del tiempo, ¿qué hace el 94% del tiempo
restante?
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 16
Selección aleatoria y constructores
Debemos decidir si necesitamos dos sentencias IF o una sentencia if-else. Si desea que las dos secciones del
código se puedan ejecutar, tenemos dos sentencias IF. Si solo desea que se ejecute una o la otra, se debe
utilizar la sentencia if-else.
16
Ejecución de la sentencia if-else
Evaluar
la
Verdadero condición Falso
Ejecutar la Ejecutar la
sentencia IF sentencia ELSE
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 17
Selección aleatoria y constructores
17
Formato de la sentencia if-else
if (condition)
{
statements;
}
else
{
statements;
}
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 18
Selección aleatoria y constructores
Tenga en cuenta que no aparece el punto y coma después del paréntesis de un comando IF.
18
Ejemplo de sentencia if-else
• Si se selecciona un número aleatorio entre 0-6, se gira
10 grados. De lo contrario, se gira 5 grados.
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 19
Selección aleatoria y constructores
19
Automatizar la creación de instancias
• Con la subclase World, las instancias de actor se pueden
programar para que aparezcan automáticamente en el
mundo cuando se inicializa un escenario.
• En Greenfoot, el comportamiento por defecto para las
instancias es el siguiente:
– La instancia de la subclase World se agrega automáticamente al
entorno tras la compilación o inicialización del escenario.
– El jugador debe agregar manualmente las instancias de la
subclase Actor.
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 20
Selección aleatoria y constructores
Más adelante veremos que existe un método más rápido mediante el comando "Save the World".
20
Automatizar la creación de instancias en un
escenario
• Problema:
– Cuando se inicia un escenario Greenfoot (como hojas y
vombátidos), el jugador debe agregar manualmente las
instancias para jugar la partida.
• Solución:
– Programe las instancias para que se agreguen
automáticamente al mundo cuando se inicializa el escenario.
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 21
Selección aleatoria y constructores
21
Código fuente de la clase World
• El nombre por defecto de la subclase World es
MyWorld.
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 22
Selección aleatoria y constructores
Código fuente de la clase World
• Para entender cómo se debe automatizar la creación de
instancias Actor, es necesario que entienda cómo se estructura el
código fuente de la clase World.
• El constructor World se utiliza para automatizar la creación de las
instancias Actor cuando se inicializa el escenario.
Cabecera de la clase
Comment
Constructor
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 23
Selección aleatoria y constructores
23
Constructores
• Constructores:
– Definen el tamaño y la resolución de la instancia.
– No tienen un tipo de retorno.
– Tienen el mismo nombre que el nombre de la clase. Por
ejemplo, un constructor World tiene el nombre World.
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 24
Selección aleatoria y constructores
Se analizarán los constructores en mayor detalle más adelante, pero proporcionan un mecanismo
excelente para configurar valores por defecto para sus campos de clase en la instancia de objeto.
24
Ejemplo de constructor World
• El constructor del siguiente ejemplo construye la
instancia de la superclase World de la siguiente manera:
– Tamaño: x = 600, y = 400.
– Resolución: 1 píxel por celda.
– La palabra clave super en el cuerpo del constructor llama a la
superclase World para cada instancia de la subclase BeeWorld.
Size Resolución
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 25
Selección aleatoria y constructores
Podemos modificar fácilmente los valores del mundo aquí. Una vez cambiados, el escenario reflejará el
nuevo tamaño tras una compilación.
25
Crear automáticamente instancias Actor
• Este constructor World agrega un nuevo objeto Bee en
coordenadas X e Y especificadas mediante el método
addObject() .
X Y
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 26
Selección aleatoria y constructores
Como el constructor BeeWorld() solo se llama cuando se crea BeeWorld, este código solo se ejecuta una
vez.
26
Método addObject()
• El método addObject() es un método de clase World que agrega
un nuevo objeto al mundo en coordenadas x e y específicas.
• Incluye:
– La palabra clave new para indicar a Greenfoot que cree un nuevo
objeto de una clase específica.
– Parámetros de método:
• Objeto con nombre desde la clase Actor.
• Valor entero de la coordenada X.
• Valor entero de la coordenada Y.
• Definición de método:
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 27
Selección aleatoria y constructores
Al llamar a new <nombre de la clase>(), busca un constructor para esa clase. Si no existe ninguno, usa los
valores de campo de clase por defecto con el tipo por defecto, es decir, los números enteros se convierten
en 0
27
Palabra clave new
• La palabra clave new crea nuevas instancias de clases
existentes.
• Comienza con la palabra clave new, seguida del
constructor al que llamar.
– La lista de parámetros transfiere los argumentos (valores) al
constructor que son necesarios para inicializar las variables
instancia del objeto.
– El constructor por defecto tiene una lista de parámetros vacía y
define las variables de la instancia del objeto en sus valores por
defecto.
new ConstructorName()
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 28
Selección aleatoria y constructores
Si no se define ningún constructor para sus clases, el compilador Java genera uno por defecto. No lo verá
en el código.
28
Sistema de coordenadas World
de Greenfoot
0 X
0
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 29
Selección aleatoria y constructores
La parte superior izquierda es el punto (0,0) y la inferior derecha corresponde a las dimensiones del
mundo.
29
Ejemplo de cómo agregar objetos mediante
el constructor World
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 30
Selección aleatoria y constructores
Podemos ver cómo se crea una nueva instancia de la clase Bee y se posiciona en el punto (150, 100).
30
Save the World
• Greenfoot tiene otra forma de configurar la ubicación
inicial de los actores mediante "Save the World"
• Podemos colocar nuestros actores en el mundo de
forma manual en una posición inicial.
• A continuación, seleccione Tools -> Save the World
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 31
Selección aleatoria y constructores
31
Save the World
• Crea un nuevo método en su mundo denominado
prepare() y crea una llamada a este método dentro del
constructor.
• El método prepare() creará instancias del actor y, a
continuación, las agregará al mundo en la ubicación en
la que las colocó.
• Resulta útil si tiene que colocar muchos objetos.
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 32
Selección aleatoria y constructores
Bee bee = new Bee() crea una nueva instancia Bee a la que se puede acceder a través de la variable de
referencia denominada bee. Recordar que Java es sensible a mayúsculas y minúsculas, por lo que Bee y bee
se tratan de forma diferente. Por lo tanto, en lugar de decir addObject (new Bee(), 100,100), se sustituye
por
Bee bee = new Bee();
addObject(bee, 100,100);
De este modo se nos ofrecen otras opciones que analizaremos más adelante.
32
Terminología
Términos clave que se han utilizado en esta lección:
• Operadores de comparación
• Constructor
• Notación de puntos
• Palabra clave new
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 33
Selección aleatoria y constructores
33
Resumen
En esta lección, debe haber aprendido a:
• Crear comportamientos asignados de forma aleatoria
• Definir operadores de comparación
• Crear sentencias de control if-else
• Crear una instancia de una clase
• Reconocer y describir la notación de puntos
• Función Save the World
JF 3-5
Copyright © 2019, Oracle e/ou suas empresas afiliadas. Todos os direitos reservados. 34
Selección aleatoria y constructores
34
35