PARADIGMA ORIENTADO A OBJETOSbiblioteca.esucomex.cl/MED/Paradigma orientado a objetos.pdfPARADIGMA...

106
www.iplacex.cl PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº I OBJETOS EN EL MUNDO

Transcript of PARADIGMA ORIENTADO A OBJETOSbiblioteca.esucomex.cl/MED/Paradigma orientado a objetos.pdfPARADIGMA...

  • www.iplacex.cl

    PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº I

    OBJETOS EN EL MUNDO

  • www.iplacex.cl 2

    Desarrollo

    Introducción

    Antes de empezar este curso, es necesario que tengas una pequeña introducción a la

    programación.

    Programación:

    Es un lenguaje para que te entiendas con la máquina, imagínate que vas a otro

    país que habla otro idioma, sería necesario que supieras algunas reglas del idioma

    para poder comunicarte y se genere algún entendimiento común.

    El proceso comienza por el programador, quien se encarga de crear un código

    fuente. Este código es revisado por un Compilador y cuando es correcto, se produce

    un Programa o Software.

    Formas de Programar

    Existen 3 grandes formas que un programador utiliza para crear un código.

    1. Programación Estructurada:

    Es un paradigma de programación orientado a mejorar la claridad,

    calidad y tiempo de desarrollo de un programa de computadora, utilizando

    únicamente subrutinas y 3 estructuras: secuencia, selección e iteración.

    2. Programación Funcional:

    Es un paradigma de programación declarativo basado en el uso de

    funciones matemáticas.

    3. Programación Orientada a Objetos:

    Es un paradigma que busca representar objetos observables

    tangibles o intangibles mediante su comportamiento y estados.

    SEMANA 1

  • www.iplacex.cl 3

    Paradigma Orientado a Objetos

    En esta asignatura nos dedicaremos a representar la programación mediante el

    enfoque de los paradigmas orientado a objetos.

    Observar los objetos:

    La observación de objetos se basa en identificar que representa y darle un

    nombre, por ejemplo, Perro y tiene características tales como color, tipo de pelaje, a

    este conjunto cuando cambia de valor en el tiempo se le llama estado, por ejemplo, el

    color del perro cambia cuando está limpio.

    Representar los comportamientos:

    Los objetos tienen formas de actuar, por lo que asociar un verbo a partir de lo

    que hace, crea la representación de su comportamiento.

    Programar plantillas de objetos (Clases):

    Cuando uno quiere representar esto en un programa, esto se hace mediante

    archivos que declaran todo lo observado del objeto, a este archivo de le llama “Clase”.

    Greenfoot

    Greenfoot es un ambiente interactivo de desarrollo Java para propósitos educacionales.

    Permite la creación de aplicaciones gráficas en dos dimensiones, como simulaciones y

    juegos.

    Lo primero que debes hacer, es instalar Greenfoot en tu computador. Podrás

    descargarlo en el siguiente link

    https://www.greenfoot.org/download

    Puedes hacer click en el ícono de Windows para descargarlo y seguir las instrucciones

    de instalación.

    https://www.greenfoot.org/download

  • www.iplacex.cl 4

    Interfaz de usuario de Greenfoot

    Para comenzar a usar el programa, debes hacer doble click en el ícono de

    Greenfoot que apareció en tu escritorio.

    También puedes ir a Windows y escribir Greenfoot para buscar el programa y

    abrirlo. Esta es la interfaz de Greenfoot que verás una que el programa este abierto.

  • www.iplacex.cl 5

    Lo primero que debes hacer es crear un nuevo escenario. Para eso, debes hacer

    click en la parte superior izquierda, en la pestaña Scenario

    .

    Se desplegará la pestaña y podrás hacer click en donde dice new Java Scenario.

  • www.iplacex.cl 6

    Aparecerá esta ventana, en donde debes escribir el nombre de tu archivo, y

    presionar el botón create.

    Se abrirá tu nuevo proyecto y podrás ver lo siguiente:

  • www.iplacex.cl 7

    Veamos una descripción de algunas de las partes de la interfaz de Greenfoot:

    Clases: En este espacio se encuentran las clases de tu juego. En

    ellas podrás crear a tus personajes y sus comportamientos, así como

    cambiar el tamaño, apariencia y características del fondo.

    Mundo: Este espacio en blanco que aparece al centro de

    la interfaz se llama mundo, y es el lienzo en el que podrás

    colocar las piezas de tu videojuego y verlo funcionar.

    Botón Act: Este botón te permitirá ver un paso a paso de lo que está

    ocurriendo en tu juego, y comprobar cómo está funcionando.

    Botón Run: El botón Run hace que corra el juego, es decir, lo inicia

    para que puedas jugarlo y ver su funcionamiento. A diferencia del

    botón Act, no se verá el paso a paso.

    Botón Reset: Este botón hará que el juego regrese a su estado inicial.

    Speed: Con este control deslizante podrás

    aumentar o disminuir la velocidad a la que corre tu

    juego.

  • www.iplacex.cl 8

    ¿Qué es paradigma orientado a objetos?

    Es una forma de codificación que se popularizó a mediados de los 80´.

    Es una representación del mundo real a través de objetos prediseñados.

    Estos objetos ofrecen funcionalidades particulares para resolver un problema.

    ¿Qué es un objeto?

    Un objeto es una entidad, que tiene sus propias características y comportamientos.

    Aquí tenemos algunos ejemplo:

    ¿Qué es una clase?

    Es una serie de atributos y métodos que definen comportamientos en los objetos.

    Es decir, es un diseño, un molde, que puede producir uno o muchos objetos.

    ¿Qué es un método?

    Es un comportamiento que tiene un objeto.

    Una clase puede tener muchos métodos.

    Se pueden activar en el momento y orden deseado para controlar el comportamiento

    del objeto.

  • www.iplacex.cl 9

    Pensemos en un ejemplo:

    Imagina que tenemos la clase Vehículo. Sus características (atributos) podrían

    ser que tiene ruedas y pedales. Sus comportamientos (métodos) pueden ser acelerar o

    frenar.

    A partir de esta descripción, podrías crear varios vehículos diferentes, que

    compartan estas características. Por ejemplo, un auto, una camioneta o un furgón.

    Crear clases en Greenfoot

    Ahora que ya sabes lo que son los Objetos, Clases y Métodos, vamos a crearlos y ver

    cómo funcionan en Greenfoot para comenzar a hacer tu propio videojuego.

    Para crear una nueva clase en Grennfoot, debes hacer click derecho en la clase Actor

    que ya viene por defecto al crear tu proyecto. Al desplegarse un ventana, debes elegir

    la opción New subclass. Al elegir esta opción, crearás una subclase de la clase Actor.

    Esto significa, que tu nueva clase será una extensión de Actor y heredará sus métodos.

  • www.iplacex.cl 10

    Luego verás una ventana en que podrás colocarle un nombre a tu clase y elegir una

    imagen de ícono. Recuerda que en Java, los nombres de las clases deben escribirse

    siempre con la primera letra mayúscula.

  • www.iplacex.cl 11

    Una vez este creada tu clase, podrás verla de esta forma:

    Ya que la clase ha sido creada, ahora podrás instanciarla en el escenario. Esto

    quiere decir que puedes colocar a tu personaje en el mundo de Greenfoot para

    observarlo y ver su comportamiento, pero además, ya que es una instancia, puedes

    copiarlo las veces que quieras, y tener a muchos personajes en el escenario.

    Para instanciar la clase, primero debes hacer click derecho sobre la clase que creaste y

    seleccionar la opción new persona(). Al hacer esto, aparecerá el ícono que

    seleccionaste para tu clase, y podrás arrastrarlo con el mouse y dejarlo en el mundo,

    en la posición que desees.

  • www.iplacex.cl 12

    Veamos el código

    Pasaremos a ver el código fuente que se encuentra

    dentro de nuestro personaje, con el que podremos

    controlar su comportamiento.

    Para entrar al código de la clase que haz creado,

    debes hacer doble click sobre la clase.

    Al hacerlo, se abrirá otra ventana con el código que

    contiene esta clase.

  • www.iplacex.cl 13

    Este código aparece por defecto al crear una clase. Si te fijas, ya existe un método que

    se encuentra vacío, llamado act(). Este método es el encargado principal de controlar el

    comportamiento de esta clase, y es aquí en donde podrás escribir todas las acciones

    que deseas que realice. El método act se ejecuta automáticamente al momento de que

    le pongas play al juego, y se repite una y otra vez de forma cíclica.

  • www.iplacex.cl 14

  • www.iplacex.cl

    PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº I

    OBJETOS EN EL MUNDO

  • www.iplacex.cl 2

    Desarrollo

    ¿Qué es el código fuente?

    Es el código escrito por un programador.

    El código debe ser traducido posteriormente a lenguaje binario para ser entendido por

    la máquina.

    En Greenfoot, utilizaremos el lenguaje de programación Java.

    Tipos de Código Fuente

    El término código fuente se utiliza para describir el tipo de codificación. Dependerá del

    lenguaje de programación que se use, como por ejemplo, HTML, Php, JavaScript o

    Java

    ¿Cómo se organiza el código?

    Los códigos en Java son organizados en orden, generalmente por bloques de código.

    Los bloques de código inician y finalizan con una llave { }

    SEMANA 2

  • www.iplacex.cl 3

    Importe de paquetes de clases

    Comentarios

    Cáscara de la clase

    Definición de atributos

    Definición de métodos

  • www.iplacex.cl 4

    Frames

    Como haz visto, el código de Greenfoot se encuentra dividido en bloques o frames de

    diferentes colores, verde, amarillo y blanco.

    Esto nos ayudará a mantener el

    código ordenado y entenderlo

    rápidamente.

    El frame blanco cubre el área de

    instrucciones.

    El frame verde cubre el área de la

    clase.

    El frame amarillo cubre el área de los

    métodos.

  • www.iplacex.cl 5

    Método act

    Como ya hemos visto, en Greenfoot el método act() aparece por defecto al crear una

    clase.

    Act() es un método con la particularidad de que se repita una y otra vez al momento de

    correr tu juego, de forma cíclica.

    Observa este código. Se ha agregado el código move(5); dentro del método act.

    Lo que se ha indicado aquí es que el personaje al que pertenece este código se mueva

    con una velocidad de 5.

    Lo que ocurrirá aquí será que, una vez instancies el personaje en el Mundo y corras el

    juego, verás que este se mueve hacia la derecha, hasta chocar contra el borde del

    Mundo. El método act() se está repitiendo de forma cíclica, es decir, cada vez vuelve a

    repetirse el código que está dentro de él, por lo que el personaje se mueve

    continuamente, hacia la derecha a la velocidad indicada.

  • www.iplacex.cl 6

    Uso de parámetros

    El parámetro es un dato que puede o no venir entre paréntesis en un método. Por

    ejemplo, puede ser un nombre, o una cantidad, de la que podremos disponer al

    momento de usar el método.

    Si te fijas, el método act tiene un paréntesis al final ( ). Todos los métodos tienen ese

    paréntesis, que a veces puede estar vacío (cuando hablamos de un método sin

    parámetros) o puede contener uno o varios datos (en ese caso, hablamos de un

    método con parámetros).

    Método sin parámetros

    Método con parámetro

    El parámetro que se encuentra en el método, tiene primero la palabra int. Cuando

    colocamos un parámetro, lo primero que debemos hacer es señalar qué tipo de dato

    es. Si es un número entero, se llama int. Si es un valor de tipo alfanumérico, como un

    nombre, se llama string. Luego, puedes agregar el nombre del dato, que en este caso,

    se llama distancia.

    Lo que vemos aquí, es que el dato distancia es de tipo numérico, y que ha sido

    utilizado dentro del método para señalar la velocidad a la que se moverá este objeto.

  • www.iplacex.cl 7

    Cuidados de sintaxis e indentación

    Es común equivocarse al momento de escribir el código, y encontrarnos con que éste

    no funciona.

    Puede encontrar incompleto (que falte un punto y coma al final, o que no se encuentra

    una llave de cierre).

    Para mantener ordenado el código, se coloca una tabulación entre la clase y el método,

    o entre el método y la instrucción, como se ve en la imagen. Estos espacios son

    llamados indentación.

  • www.iplacex.cl 8

    Compilación

    Cuando haz terminado de escribir un código, debes presionar el botón Compilar que

    se encuentra en la parte superior izquierda en Greenfoot.

    Inmediatamente después, podrá ver en la parte inferior un mensaje que dirá que el

    código ha compilado correctamente o que hay un error.

  • www.iplacex.cl 9

    Detalla la Idea

    Proceso de compilación

    El código fuente escrito por un programador genera un archivo .java

    Al compilarlo y estar correcto, se genera el Bitecode archivo .class

    Luego, archivo.class es interpretado por la máquina en código binario.

  • www.iplacex.cl 10

    Orden del código fuente

    Importación de paquetes de clases:

    En la primera línea, vemos un import que permite acceder a clases del sistema

    de Greenfoot. Esto significa, como veremos en detalle más adelante, que podremos

    colocar métodos en nuestro código que ya se encuentran preparados en Greenfoot y

    que nos permitirán lograr nuestros objetivos de manera más rápida y eficiente.

    Comentarios de la clase:

    En todo código fuente, existe la posibilidad de colocar comentarios. Estos son

    indicaciones que deja el programador para mantener el código ordenado y usarlos

    como una guía, pero realmente, no producen cambios en el comportamiento de los

    objetos, como si no fueran parte del código.

    Cáscara de la clase:

    La cáscara de la clase es el nombre que se la da a esta línea de código en la

    que se encuentra escrito el nombre de la clase, en donde inicia el código para esta

    clase.

    Atributos de la clase:

    Los atributos son datos o variables pertenecientes a esta clase. Al igual que

    cuando colocamos un parámetro, se escribe primero qué tipo de dato es (int o string

    por ejemplo), y luego se coloca el nombre de la variable. Más adelante, en el código, se

    le da el valor a esta variable.

    Métodos de la clase:

    Finalmente, se encontrarán los métodos, dentro de los frames de color amarillo.

    Pueden ser todos los que sean necesarios, y definirán el comportamiento del objeto.

    Los métodos pueden ser agregados al código, pero no necesariamente producirán un

    efecto. Para eso, es necesario activar o llamar al método. En Greenfoot, el método act()

    es el único que se activa automáticamente al correr el juego. Por lo tanto, todo lo que

    coloques dentro de act() será lo que ocurra en el juego. Para mantener un orden en el

    código, lo que hacemos es crear métodos fuera de act(), y luego, dentro de act()

    colocamos una llamada a esos métodos, lo que hará que se activen y comiencen a

    funcionar.

  • www.iplacex.cl 11

    Código por defecto y código agregado

    Cuando hablamos de código por defecto, nos referimos al código que ya viene en

    Greenfoot, el cual nos ayuda a trabajar más rápido que si hiciéramos todo desde cero.

    Por ejemplo, el método act() ya viene al momento de crear tus clases. También lo son

    los códigos que vienen en el importe de paquetes de clases.

    Pero también podemos crear un código desde cero. Cuando queremos agregar

    funcionalidad, es necesario agregar nuestro propio código. Instrucciones, atributos,

    métodos o llamadas a métodos son códigos que es posible agregar.

    Herencia

    public class Abeja extends Actor

    ¿Recuerdas esta línea de código? Esta es la cáscara de la clase que hemos

    mencionado anteriormente. Si te fijas, dice extends Actor. Lo que nos está diciendo

    esta línea es que la clase Abeja es una clase que extiende de Actor.

    Esto señala que la clase Abeja es una especialización de la clase Actor, Abeja

    es un tipo de Actor. Significa que Abeja tiene acceso a todos los métodos que se

    encuentren dentro de Actor. Por ejemplo, cuando agregamos el código move(5); este

    es un método que hace que la Abeja se mueva, pero el código específico se encuentra

    en la clase Actor, y solamente lo llamamos desde Abeja. Es decir, cuando escribimos

    move(5); solamente estamos activando un método que ya existe, pero que podemos

    llamar desde las subclases de Actor.

    Actor es una superclase y Abeja es una subclase.

    En la imagen, vemos la flecha que señala que

    Abeja es una subclase de Actor.

    Abeja también es un Actor, que hereda todos los

    métodos que provee la superclase Actor.

  • www.iplacex.cl 12

    Llamadas a métodos

    En programación, es normal crear nuevos métodos y hacer que a su vez, estos sean

    llamados desde otro método.

    Esto mejora la calidad del código, haciéndolo más ordenado y legible. Nos da la

    posibilidad de utilizar un mismo método varias veces si es que es necesario, en vez de

    tener que escribirlo de nuevo cada vez que sea necesario realizar una acción.

    Métodos privados y métodos públicos

    Los métodos de una clase pueden ser públicos o privados.

    El término privado o público se denomina modificador de acceso

    Método público:

    Significa que quedan disponibles para otras clases del proyecto. Los

    métodos pueden ser llamados de una clase a otra.

    Ejemplo:

    public void girarAbeja()

    {

    }

    Método privado:

    Corresponde a los métodos que solo son accesibles dentro de la misma

    clase.

    Ejemplo:

    Private void girarAbeja()

    {

    }

  • www.iplacex.cl 13

    Demuestra

    Ahora veremos de forma práctica lo que hemos aprendido a hacer en Greenfoot.

    Cómo crear un escenario nuevo en Greenfoot.

    Para crear una escena nueva en Greenfoot, lo primero que debes hacer, una vez

    abierto el programa, es click en la pestaña Scenario, que se encuentra en la parte

    superior izquierda de la interfaz. Al desplegarse la pestaña, debes elegir la opción New

    Java Scenario Aparecerá una ventana nueva, en la que deberás elegir en dónde se

    guardará tu nuevo archivo y podrás colocarle un nombre.

  • www.iplacex.cl 14

    Cómo setear la imagen de fondo.

    Al crear tu proyecto, lo primero que verás será lo siguiente.

    Puedes ver que la clase MyWorld aparece creada por defecto. Si queremos, por

    ejemplo, cambiar la imagen de fondo de nuestro escenario, debemos modificarlo dentro

    de esta clase, la que está representando el Mundo. Para eso, debes hacer click

    derecho sobre MyWorld y seleccionar la opción set Image. Aparecerá una ventana en

    la que podrás elegir una imagen. Ya que estamos hablando del fondo del escenario,

    deberías seleccionar la imagen de la carpeta que dice Backgrounds.

    Crear nuevos actores (clases)

  • www.iplacex.cl 15

    Para crear una clase nueva de tipo actor, que serán los personajes del videojuego,

    debes hacer click derecho en la clase Actor . Luego debes elegir la opción New

    sublcass. Con esto, estarás creando una clase nueva, que sea una subclase de Actor.

    Luego aparecerá una ventana en la que podrás ingresar el nombre de la clase, y

    seleccionar una imagen.

  • www.iplacex.cl 16

    Cómo hacer que un objeto se mueva

    Lo primero que debes hacer es ingresar al objeto que quieres que se mueva. Para eso,

    debes hacer doble click sobre la clase. En una ventana nueva se abrirá el código por

    defecto que tiene el objeto.

    Para que el objeto se mueva, simplemente debes colocar el siguiente código dentro del

    método act()

    move(5);

    El número que aparece dentro del paréntesis indica la velocidad a la que se

    moverá el objeto. Si quieres que se mueva más rápido, debes ingresar un número

    mayor. Si quieres que se mueva más lento, debes ingresar un número menor.

    En Greenfoot, el movimiento de los objetos está definido por el eje x (horizontal )

    y el y (vertical). El eje x comienza al inicio del mundo del lado izquierdo, lo que significa

    que irá aumentando hacia la derecha. Por esto, en este caso, el personaje se mueve

    hacia la derecha del mundo, aumentando en el eje x. Si por ejemplo, cambiamos el

    código a move(-5); el objeto se movería a la misma velocidad hacia el lado izquierdo

    del mundo, hasta chocar con el borde.

  • www.iplacex.cl 17

    Cómo hacer que un objeto gire

    El código para que un objeto gire es similar al código para que un objeto se mueva:

    turn(5);

    Al igual que en el anterior, el número en el paréntesis se puede cambiar para elegir la

    velocidad a la que gira el objeto. Si es un número positivo, el objeto girará hacia la

    derecha, si es un número negativo, el objeto gira hacia la izquierda.

    Instanciar un objeto en el escenario

    Para crear un objeto en el escenario, simplemente debes hacer click derecho sobre la

    clase que quieres colocar en el mundo y elegir la opción new. Verás que en el cursor

    del mouse aparece la imagen que haz elegir para tu personaje. Debes mover el mouse

    hasta el lugar el mundo en donde quieres dejar a tu personaje y hacer click ahí. Esto

    significa que haz instanciado a tu personaje en el mundo. Puedes instanciar a tu

    personaje la cantidad de veces que quieras.

    Luego puedes hacer click en Run y verás el comportamiento que tiene el

    personaje que haz instanciado.

    Ahora observa el siguiente código:

  • www.iplacex.cl 18

    isAtEdge() es una función que tiene Greenfoot. Significa “está al borde”. Lo que este

    código quiere decir, es que si el objeto está al borde del mundo, se cumple una

    condición y entrará al código dentro de ésta, que es girar. Pero si no se cumple la

    condición, solamente continuará moviéndose.

    Lo que veremos a correr este código es que el objeto se mueve continuamente hacia la

    derecha, en una velocidad constante. Pero en el momento en que toca el borde el

    mundo, el objeto cambia de dirección. Luego continuar avanzando a una velocidad

    constante. Al chocar con otro borde del mundo, volverá a girar, y seguirá repitiendo

    este ciclo continuamente.

    Esta es una forma de usar las condiciones en programación, logrando que el objeto

    tenga diferentes comportamientos de acuerdo a lo que sucede en el juego.

  • www.iplacex.cl 19

  • [Escribir texto]

    PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II

    COMPORTAMIENTO DE OBJETOS

  • www.iplacex.cl

    Desarrollo

    Organiza la idea

    ¿Qué es una conducta aleatoria?

    Proceso de cálculo: Una conducta aleatoria comienza con un proceso de cálculos

    de una fórmula predeterminada.

    Datos aleatorios: Los resultados arrojan valores numéricos al azar.

    Reflejado en comportamientos: Los valores al azar pueden ser canalizados hacia

    un objeto causando diferentes comportamientos.

    ¿En qué utilizamos la conducta aleatoria?

    Los datos aleatorios son producidos por fórmulas matemáticas.

    Estos resultados servirán para establecer diversidad en el comportamiento de los

    objetos en Greenfoot.

    Métodos para generar conducta aleatoria

    En los videojuegos es frecuente visualizar objetos moviéndose al azar.

    Greenfoot tiene un método llamado: getRandomNumber() que permite obtener

    valores aleatorios para usar en el comportamiento de los objetos.

    Clase Métodos con datos aleatorios

    Objetos

    SEMANA 3

  • www.iplacex.cl

    Qué son los métodos estáticos

    Un método estático es accesible sin necesidad de instanciar su clase.

    Basta con escribir el nombre de la clase donde reside, punto y el método.

    Este tipo de método siempre está disponible para usar en cualquier momento.

    Se utiliza este método de tipo estático para obtener el número random:

  • www.iplacex.cl

    Qué son los métodos dinámicos

    Un método dinámico es accesible solo al crear o instanciar un objeto de la clase.

    Recordemos que la palabra new permite instanciar un nuevo objeto.

    Probabilidad en una

    conducta aleatoria

    Pueden calcular una

    probabilidad de acción en un

    actor.

    Un valor 100 en getRandomNumber arroja un valor aleatorio.

    Al especificar menor que 10, la probabilidad es de 10%.

  • www.iplacex.cl

    Refactorización

    Código claro: escribir código con nombres y variables entendibles.

    Funcionalmente bien diseñados: Que cumplan la tarea completa.

    Métodos breves: Esta técnica también se llama Cohesión.

  • www.iplacex.cl

    Detalla la idea

    Conducta aleatoria

    seleccionando

    comportamientos:

    Recordemos que un bloque if

    ejecuta entre llaves cuando

    la condición es verdadera.

    Un método estático aleatorio

    getRandomNumber puede

    seleccionar un

    comportamiento.

    El código dice que si el número aleatorio es menor al valor 10, se ejecutará un giro

    de valor 5. Si no, entonces no ocurrirá nada.

    De esta forma, podemos

    seleccionar un movimiento de

    manera aleatoria.

    Otro caso de selección de

    comportamiento

    Nota que la conducta aleatoria

    ahora tiene otro comportamiento

    adicional.

    Si la condición es verdadera, el objeto Abeja girará. Si no lo es, se moverá.

  • www.iplacex.cl

    Creando una probabilidad

    con conducta aleatoria

    La probabilidad de veces que se

    ejecute un bloque de código

    dependerá de nuestra condición.

    Considerar que getRandomNumber incluye número enteros entre. Si es 100,

    considera entre 0 a 99.

    Si la condición indica menor (

  • www.iplacex.cl

    Refactorizando código

    Observa el siguiente código:

    La clase puede contener otros métodos que sean invocados.

    Este tipo de técnica se conoce como una refactorización del código.

    El método act hace una llamada al método girarAbeja.

    Con eso se logra una mejora en el desarrollo del código.

  • www.iplacex.cl

    Demuestra

    Observa este código para que

    veamos de manera más práctica lo

    que hemos aprendido. Lo que

    estamos haciendo aquí es crear

    una variable, cuyo valor es

    aleatorio. Luego le indicamos al

    objeto que gire de acuerdo a ese

    valor aleatorio.

    int numero: es el nombre de la

    variable que creamos. Primero

    indicamos de es de tipo número

    entero (int), luego indicamos que

    se llama numero. Cada vez que

    llamemos a esta variable, será por

    su nombre, numero.

    Greenfoot.getRandomNumber(50): Luego indicamos que la variable numero es

    igual a este valor. Lo que nos dará esto será un número aleatorio, entre 0 a 49.

    turn(numero);: lo que indicamos aquí es que el objeto gire(turn), pero en vez de

    ingresar un número entero como lo hemos hecho otras veces, hacemos un

    llamado a nuestra variable aleatoria.

    Como la variable ha sido creada dentro del método act, veremos que cada vez

    que el método act se repite, la variable obtiene un nuevo valor, de 0 a 49, ya que

    vuelve a sacar un número aleatorio. Si por ejemplo, creáramos nuestra variable

    antes del método act, obtendría su valor aleatorio una sola vez al momento de

    reproducir el juego. Pero como está dentro de act, el valor vuelve a cambiar cada

    que act se repite. Por esta razón, podemos saber que el movimiento del objeto no

    será completamente constante.

  • www.iplacex.cl

    Ahora observa este código que ha

    sido modificado:

    Lo que vemos ahora es que el

    comportamiento del objeto cambia de

    acuerdo a una probabilidad.

    Se ha agregado una condición, en la

    que indicamos que solo si el numero

    es menor a 10, ocurrirá una acción. Si

    no, ocurrirá otra. Usamos una

    condición if para tener un 10% de

    probabilidad de que se active la

    acción de girar.

  • www.iplacex.cl

    Observa este código: Tiene

    una pequeña diferencia con el

    anterior.

    Hemos movido todo nuestro

    código fuera del método act, y

    le hemos dado un nuevo

    nombre al método. Se llama

    probabilidadGirar().

    Como se encuentra el código

    ahora, al momento de correr

    el juego, no ocurrirá nada, ya que no hay nada que esté activando nuestro nuevo

    método. Sólo se reproducirá lo que se encuentra en act, pero ya que está vacío,

    no veremos ningún comportamiento en el objeto.

  • www.iplacex.cl

    Para activar nuestro método, debemos hacer una llamada a él desde act. Para

    hacerlo, solamente escribimos el nombre del método y ; dentro de act

    La siguiente imagen tiene una refactorización un poco más compleja:

    Observa que desde el método act se hace una llamada al método

    comportamientoCompleto(), y a su vez, desde este método se hace una llamada al

    método probabilidad().

  • www.iplacex.cl

  • www.iplacex.cl

    PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II

    COMPORTAMIENTO DE OBJETOS

  • www.iplacex.cl 2

    Desarrollo

    Colisión en los juegos

    Existe colisión cuando dos objetos tienen la misma coordenada x e y.

    Ambas coordenadas pueden producir un nuevo comportamiento.

    Por ejemplo: “Cerdo come manzana”

    Comentarios

    Muchas veces es necesario comentar nuestro propio código fuente.

    Con el fin de describir cuál es la funcionalidad de los componentes de la clase.

    Esto servirá para que otros programadores comprendan mejor el código. Incluso a

    nosotros mismos.

    o Comentarios de línea múltiple

    Utilizamos este formato cuando queremos escribir varias líneas de

    comentarios:

    /**

    *Este es el comentario

    *de línea múltiple

    */

    o Comentarios de línea simple

    SEMANA 4

  • www.iplacex.cl 3

    Utilizamos este formato cuando queremos escribir una sola línea de comentario:

    //Este es un comentario de línea simple

    Planificar programación

    o Top-Down

    Una estrategia de programación es comenzar de lo más general a lo más particular.

    A esta forma de programar se le conoce como Top-Down.

    Este diseño consiste en una serie de descomposiciones sucesivas del problema inicial.

    o Bottom-Up

    Esta estrategia de programación considera diseñar con detalle y luego enlazar

    componentes mayores.

    A esta forma de programar se le conoce como: Bottom-Up.

  • www.iplacex.cl 4

    Reutilización del código

    La reutilización considera invocar los métodos que ya se encuentran escritos.

    Si un programa o clase requiere ejecutar el mismo código, sólo se invoca al método

    que lo contiene.

    Ahorra trabajo y tiempo formando parte de un buen diseño.

    El ejemplo muestra como la ClaseA y ClaseC reutilizan el métodoHacer de la ClaseB.

  • www.iplacex.cl 5

    Usuarios

    El término usuario hace mención a la persona que utiliza el producto aplicación.

    El usuario es la persona final que hará uso de la herramienta.

    Normalmente, no tiene acceso al código de programación del lenguaje.

    Entrada corresponde al ingreso de datos de parte del usuario hacia la aplicación.

    Salida, será los datos procesados por la aplicación produciendo la “información”.

    La información ayuda a los usuarios a tomar mejores decisiones dependiendo del

    contexto de la aplicación.

  • www.iplacex.cl 6

    Método act

    Como hemos visto anteriormente, en Greenfoot el método Act() aparece por defecto al

    crear una clase.

    Act() es un método con la particularidad de que se repite una y otra vez al momento de

    correr tu juego, ejecutándose de forma cíclica.

  • www.iplacex.cl 7

    Detalla la Idea

    Detectar colisiones

    Como se mencionó, Greenfoot utiliza coordenadas para establecer ubicación de los

    objetos.

    Podemos generar colisión de los objetos y hacer que produzca un nuevo

    comportamiento.

  • www.iplacex.cl 8

    Colisiones en Greenfoot

    Observemos este código.

    Vemos un método comer(), el cual es invocado desde el método act() de Cerdo.

    Utilizando el método getOneObjectAtOffset() señala que las coordenadas de

    Cerdo con respecto a la manzana son 0,0 de distancia.

    De ser así, entrega el objeto Manzana.

    Por otra parte, mundo corresponde a una subclase de World.

    Finalmente, se remueve (usando el método removeObject()) el objeto manzana

    del mundo.

    Este evento hace que se produzca un nuevo comportamiento entre los actores.

  • www.iplacex.cl 9

    Comentarios en Greenfoot

    Los comentarios nos permiten documentar nuestro código.

    Esto permite aclarar más la codificación.

    Los comentarios pueden ir en la cabecera de la firma del método, como líneas

    múltiples.

    O bien, puedes ser de línea simple con //

  • www.iplacex.cl 10

    Comentarios Javadoc

    Como hemos visto, los comentarios nos permiten documentar nuestro código.

    Los comentarios javadoc permiten la documentación del código cuando lo agregamos

    sobre la firma del método.

    Note que son comentarios de línea múltiple.

  • www.iplacex.cl 11

    Visualizar documentación

    En el lenguaje Java, existe un archivo llamado Javadoc, el cual se hace a partir de los

    comentarios que dejamos en el código, transformándolos en un documento.

    En Greenfoot, al hacer click en la parte superior derecha generamos la documentación

    Javadoc.

    Nuestros comentarios se convierten automáticamente en un documento de nuestro

    proyecto.

    Este documento nos servirá para futuras consultas técnicas del proyecto.

  • www.iplacex.cl 12

    Planificar Top-Down

    Si ponemos la planificación de programación Top-Down en greenfoot, comenzando

    desde lo más general a lo particular, iniciaríamos el Fondo desde la clase World.

    Posteriormente, comenzaríamos por los actores y sus detalles.

  • www.iplacex.cl 13

    Planificar Bottom-Up

    Al contrario, si ponemos la planificación de programación Bottom-Up en Greengoot,

    desde lo particular a lo general, comenzaríamos por los actores con detalle.

    Posteriormente hasta al código de World.

  • www.iplacex.cl 14

    Reutilizar el código

    Reutilizar código permite ahorrar tiempo y trabajo.

    Si el código está en un método este puede ser invocado las veces que sea necesario.

    De esta manera se evita reescribir nuevamente código que ya existe.

  • www.iplacex.cl 15

    Detectar teclado

    En un videojuego, necesitamos detectar el teclado o mouse, que utilizará el jugador

    para interactuar.

    En la documentación o API de Greentoo existen métodos que facilitan la lectura de las

    teclas y click del mouse.

    El método isKeyDown() puede leer casi cualquier tecla del teclado estándas.

    El método mouseClicked(); en cambio, leerá los click que hagamos en el proyecto.

  • www.iplacex.cl 16

    Leer teclado

    El método isKeyDown() puede leer inclusa las flechas de dirección del teclado

    (derecha, izquierda, arriba, abajo).

    El método mouseClicked(); en cambio, lee mediante el mouse cuando hacen un click

    sobre “este” (this) objeto.

    De esta forma, podemos darle al jugador el control del personaje.

  • www.iplacex.cl 17

    Este código nos indica que si una tecla

    es presionada, la flecha derecha, el

    personaje se moverá “5” hacia la

    derecha.

    En este caso, se indica lo mismo, pero

    en dirección a la izquierda al presionar

    la flecha a la izquierda.

    En este código, se indica que el

    personaje se moverá hacia arriba en el

    eje Y al presionar la tecla hacia arriba.

    Aquí también podemos ver que se

    indica lo mismo, pero en dirección hacia

    abajo, al presionar la flecha hacia abajo

    en el teclado.

    En este último código, podemos ver que

    se indica que el personaje se moverá al

    ocurrir un click en el mouse.

    Finalizar un juego

  • www.iplacex.cl 18

    Finalizar un juego requiere utilizar el método estático stop() de Greenfoot.

    Al pasar la ejecución del proyecto por esa línea, se detendrá en forma automática.

    En el ejemplo, el if pregunta si el

    objeto manzana tiene un valor

    (distinto de null).

    De ser así, se detendrá el juego.

  • www.iplacex.cl 19

    Leer documentación

    Al igual que nuestras clases, hemos visto que Greenfoot posee sus propias clases y

    métodos.

    Pueden ser consultadas en Internet y revisar tanto clases y métodos a las cuales

    tenemos acceso a utilizar en nuestros proyectos.

    La API de Greenfoot es la documentación oficial de la herramienta.

  • www.iplacex.cl 20

    Demuestra

    Vamos a practicar lo que hemos aprendido.

    Comenzaremos por crear un nuevo proyecto de Greenfoot, con un Fondo. En este

    caso, crea 2 actores, para que podamos hacerlos colisionar entre sí.

    Como se ve en la imagen, hemos creado la clase Abeja, y la clase Flor como Actores.

    También está la clase Fondo, para el escenario.

    Lo primero que debes hacer es entrar al código de la clase Abeja, haciendo doble click

    en la clase.

    El siguiente es el código que hemos usado para que exista colisión entre la Abeja y la

    Flor, haciendo que esta última desaparezca del escenario al momento de ocurrir la

    colisión:

  • www.iplacex.cl 21

    Observémoslo paso a paso:

    En primer lugar, hemos

    agregado este código en

    el método act.

    En las dos primeras

    líneas simplemente le

    hemos dado movimiento

    (move (1)) y giro (turn(1))

    a la clase Abeja, para

    que se mueva al momento de correr el juego. En la tercera línea, llamamos a un

    método que será creado por nosotros en el código que continúa, el cual es el

    encargado de la colisión de los dos objetos.

    En segundo lugar, vemos el método que hemos creado, llamado

    comportamientoColisión()

    Lo que hacemos aquí es llamar a otro método que ya existe en Greenfoot, llamado

    getOneIntersectingObject(), que es el encargado de saber cuándo dos objetos han

  • www.iplacex.cl 22

    intersectado. Ya que nos encontramos dentro de la clase Abeja, lo que queremos saber

    es si la Abeja ha intersectado con otro objeto, el cual debe indicarse dentro de los

    paréntesis, al final del método, en donde dice Flor.class. Es decir, aquí indicamos que

    queremos saber si Abeja ha intersectado con la clase Flor.

    El método getOneIntersectingObject de Greenfoot nos dará una respuesta, verdadero o

    falso. Lo que quiere decir que Actor Flor es igual a verdadero o a falso.

    Actor flor = True/false

    Por lo que, en la siguiente línea de código, lo que colocamos es una acción que

    depende de esta respuesta.

    Lo que hacemos aquí es pregunta si Actor flor es nulo (falso). Al colocar el signo de

    exclamación ! , indicamos lo opuesto a lo que dice. Es decir, esta línea pregunta si flor

    no es igual a nulo. En caso de que no sea nulo, es decir, en caso de que sea

    verdadero, ingresaremos a este código.

    Lo que indica la siguiente parte del código es que se remueva al objeto flor del

    escenario si es que flor no es nulo.

  • www.iplacex.cl 23

    Observando el código de la clase Abeja, nos damos cuenta de que la programación

    comienza desde el método act.

    Luego, invoca otros métodos, es decir, ejecuta desde aspectos generales a

    particulares.

    A este concepto se le conoce como Top-Down.

  • www.iplacex.cl 24

    Comentarios

    Los cometarios Javadoc son

    una manera de documentar

    nuestro código de

    programación. Para ellos,

    escribimos sobre la firma del

    método. Se escribe /** luego

    presionamos enter y el resto de

    los símbolos aparecen por sí

    solos.

    Es código es ignorado por el

    compilador de Java, por lo cual

    no se ejecuta.

  • www.iplacex.cl 25

    Para ver nuestros comentarios en un documento o informe, debemos hacer en la parte

    superior derecha del código, en donde dice Source Code y elegir la opción

    Documentation.

    Al elegir esta opción, podremos ver el siguiente documento:

  • www.iplacex.cl 26

    Ahora observa el siguiente código. Hemos agregado un nuevo método con el que

    podemos controlar el movimiento usando el teclado.

    Con este código,

    indicamos que la Abeja

    avance hacia adelante

    solamente al presionar la

    tecla derecha del teclado.

    También hemos hecho un

    llamado a este método

    desde el método act. De

    esta forma, podemos

    hacer que el personaje

    sea controlado por el

    jugador.

  • www.iplacex.cl 27

    Por último, vamos a agregar un código para que el juego se detenga al momento de

    que la Abeja se coma a la Flor.

    Observa el código. Hemos agregado al

    final la siguiente línea:

    Greenfoot.stop();

    Este es un método estático que tiene

    Greenfoot, por eso escribimos la palabra

    Greenfoot antes del punto. Esto hará que

    el juego se detenga. Lo colocamos

    después de que se ha removido la Flor del

    mundo, para que el juego termine cuando

    el jugador se ha comido a la Flor.

  • www.iplacex.cl 28

  • www.iplacex.cl

    PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº III

    ESTRUCTURAS DE CONTROL

  • www.iplacex.cl 2

    Desarrollo

    Organiza la Idea

    Métodos constructores

    Un método constructor tiene por finalidad inicializar atributos de una clase.

    Se escribe exactamente igual a la clase.

    Es el primer método que se ejecuta en una clase.

    Un constructor en ocasiones podría recibir un valor. De ser así, tiene un parámetro de

    entrada.

    Los parámetros se declaran en el paréntesis.

    El parámetro de entrada servirá para entregar el valor al atributo, estos tienen el mismo

    nombre.

    La palabra this indica que es el atributo de esta clase y que recibe el valor del

    parámetro.

    Constructor sin parámetros

    Constructor con parámetros

    SEMANA 5

  • www.iplacex.cl 3

    Estado inicial de un objeto

    Un método constructor inicializa el estado de un objeto.

    El estado del objeto es el valor que tienen sus atributos en ese momento.

    Esto puede ser muy útil para tener un mejor control inicial de los atributos de nuestra

    clase.

    Por ejemplo, observa este código. Tiene los atributos girar y

    velocidad.

    En la parte azul del código, estos atributos inicializan en un

    estado. En este caso, girar inicia con valor 10, velocidad inicia

    con valor 5.

    Add object en Greenfoot

    Para agregar un objeto al escenario de Greenfoot utilizamos el método addObject();

    Indicamos el objeto y las coordenadas donde queremos que aparezca.

  • www.iplacex.cl 4

    Animar imágenes en Greenfoot

    La animación de imágenes permite dar más realismo al personaje.

    La técnica clásica de colocar varias imágenes con diferentes posiciones.

    En videojuego, el conjunto de imágenes recibe el nombre de: Sprite.

    Se crea un objeto de un sprite y luego se actualiza con el método setImage();

    Variables de instancia

    Una variable de instancia también es llamada miembro de dato.

    Está relacionada con la instancia de una clase.

    El objeto lleva consigo estas variables que determinan su “estado”.

  • www.iplacex.cl 5

    Private o public

    Un atributo y un método pueden presentar un modificar de acceso: público o privado.

    Public será cuando creemos que este método debe ser accedido por otros desde otras

    clases.

    Private cuando consideramos que solo la clase a la que pertenece tiene acceso.

    Variables de objetos

    Una variable de objeto es producida a partir de una clase.

    La palabra new está asociada a esta nueva variable.

    El objeto y punto accede a los métodos que generan el comportamiento.

    Detalla la idea

    Como crear una variable de instancia

  • www.iplacex.cl 6

    Una variable de instancia se declara fuera de un método, a continuación de la cáscara

    de la clase.

    Las variables son declaradas con visibilidad privada de manera que para cambiar el

    valor se hará dentro de un método.

    Esto conlleva el concepto llamado “Encapsulamiento”.

    Variable de instancia

  • www.iplacex.cl 7

    Encapsulamieno

    Normalmente, las variables de instancia permanecen encapsuladas.

    Definidas como privadas en la clase y

    ocultas dentro de métodos.

    La idea es ocultar los detalles de la

    clase frente a las demás.

    Como ventaja da al programar más

    libertad en la implementación de los

    detalles de un sistema.

    Constructor de la clase.

    Como sabemos, los constructores inicializan el estado de un objeto.

    Es el primer método en ejecutar al

    momento de instanciar.

    Un constructor se escribe público y

    con el mismo nombre de la clase.

    En la imagen apreciamos como las

    variables de instancia son

    inicializadas.

    Métodos constructores

  • www.iplacex.cl 8

    Hemos visto que los constructores

    inicializan el estado de un objeto.

    Cuando instanciamos un objeto

    podemos hacerlo con datos

    iniciales en un constructor sin

    parámetros.

    Cuando necesitamos instanciar un

    objeto con datos ingresados

    agregamos parámetros en el

    paréntesis del constructor.

    Intercalar imágenes

    Greenfoot incluye código que hace

    posible trabajar las imágenes para dar el efecto de movimiento.

    Para ello necesitamos algunas imágenes secuenciales también llamadas “sprite”.

    Estas imágenes las agregamos en la carpeta image de nuestro proyecto.

    Para intercalar las imágenes debemos definirlas como variables de instancia.

    Luego instanciar objetos de cada imagen.

  • www.iplacex.cl 9

    Para mostrarla, debemos invocar el método setImage();

    En el ejemplo, un if pregunta si la tecla flecha a la derecha ha sido presionada, de ser

    así, moverla (velocidad 5), con la imagen 2,

    El comportamiento del objeto Iron irá cambiando de acuerdo a la tecla presionada.

    Define variables de imágenes

    Instancia objetos con las imágenes

    Muestra la imagen

  • www.iplacex.cl 10

    Variable de objeto en la imagen

    Para intercalar las imágenes debemos definirlas como variables de instancia

    Estas variables son llamadas también como variables de objetos.

    Variables de objetos debido a que en el método constructor utiliza la palabra new para

    instanciar un objeto de la imagen.

  • www.iplacex.cl 11

    Demuestra

    Vamos a practicar lo que hemos aprendido.

    Comienza por crear un nuevo escenario de java en greenfoot, con un fondo y un actor.

    Ahora, entremos al código del actor para comenzar a modificarlo.

    Observa el siguiente código:

    Una variable de instancia contiene un valor que define el estado del objeto.

    Un método puede definir y recibir un parámetro de entrada y luego pasar el valor a la

    variable de instancia.

    Una variable de instancia puede ser usada en todos los métodos de la clase que lo

    requieran.

    Ahora observa lo que ocurre cuando

    instancias la clase en el escenario.

    Aparece una ventana, en la que debes

    ingresar un número.

  • www.iplacex.cl 12

    Observemos el código nuevamente.

    Encontramos que existe un constructor. Un constructor es un método que se escribe

    con el mismo nombre de la clase.

    Un método

    constructor sólo se

    ejecuta una vez y al

    inicio de la ejecución

    puede recibir uno,

    muchos o ningún

    parámetro.

    Los parámetros, como

    hemos visto, son

    asignados a las variables de instancia marcadas con this.

  • www.iplacex.cl 13

    Ahora veamos cómo hacer un personaje, cuyos movimientos sean animados.

    Para comenzar, necesitamos buscar un grupo de imágenes que funcionen como una

    animación. Debes estar recortadas en formato png y debes agregarlas a la carpeta

    “images” de tu proyecto de Greenfoot. Así estarán listas para usarlas.

    Para crear a tu personaje animado, lo siguiente que debes hacer es crear una nueva

    clase. Esta vez, debes

    elegir una de las imágenes

    que ha guardado al

    momento de crearlo, y

    darle un nuevo nombre.

  • www.iplacex.cl 14

    Ya que haz creado a tu personaje, entra al código haciendo doble click en la clase.

    Lo primero que haremos, será

    crear 3 variables antes del

    método act, con los nombres

    imagen1, 2 y 3. Estas variables

    serán las que contendrán las 3

    imágenes que queremos que

    tenga el personaje.

    Luego, dentro del

    método act,

    indicamos cuáles

    serán las

    imágenes que

    estarán

    contenidas en las

    variables que ya

    creamos. Esto es

    lo que se ve en las 3 primeras líneas de código.

    En la línea siguiente, indicamos que el personaje aparecerá con la imagen1 primero.

    Y por último, hacemos un llamado al método mover, que se explica más adelante.

  • www.iplacex.cl 15

    En el método mover, primero se coloca una if, indicando que el código sólo se activará

    al presionar la flecha derecha del teclado.

    Luego, al entrar al

    if, lo primero es que

    el personaje tiene

    un movimiento de

    velocidad 5. Lo

    siguiente, es que la

    imagen del

    personaje cambia

    por la segunda

    imagen. Luego,

    llamamos a un

    método delay, que

    hace una espera antes de cambiar a la imagen siguiente. Y así es como las imágenes

    se van alternando con una pequeña pausa entre sí.

    Esto hace el efecto de un personaje animado.

    Este es el código completo.

  • www.iplacex.cl 16

  • www.iplacex.cl

    PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº III

    ESTRUCTURAS DE CONTROL

  • www.iplacex.cl 2

    Desarrollo

    Estado en Greenfoot

    El estado es un concepto que está relacionado con el valor que tiene el objeto.

    Las variables de instancia son las que toman el valor y dan el estado al objeto.

    Estado complementado con comportamiento

    El comportamiento de un objeto puede ir variando en el transcurso de la ejecución del

    proyecto.

    El estado-el valor del objeto- puede afectar el comportamiento.

    Veamos el siguiente ejemplo.

    Un parámetro con el mismo nombre de la variable de instancia es evaluada. Si cumple

    la condición mayor que cero, se suma a la velocidad actual.

    La palabra this hace referencia a la variable de instancia declarada al principio de la

    clase.

    SEMANA 6

  • www.iplacex.cl 3

    Diferencias entre = y ==

    Existen diferencias notorias entre = y ==

    En java, usamos = para asignar un valor a una variable.

    El primer recuadro asigna 5 a

    la variable velocidad.

    Por otra parte, el signo ==

    significa igualdad.

    Por otra parte, el signo ==

    significa igualdad.

    En el ejemplo del segundo

    recuadro, la condicionante if

    pregunta si velocidad es igual

    a 0.

    Usando código if –else de Java, es posible cambiar el flujo de la ejecución de un

    proyecto.

    El if hace una pregunta (si velocidad es mayor que cero) si la respuesta es verdadera,

    ejecuta un bloque de código.

  • www.iplacex.cl 4

    Si la respuesta del if es false, ejecuta el bloque else.

    Con esto, el flujo de bifurcación afectará

    comportamiento dependiendo de una

    condicionante.

    Flujo de bifurcación con if-else

    Al llevar la lámina anterior al código, apreciamos

    que existe una bifurcación del flujo a seguir.

    Dependerá de la respuesta que genere el if

    Si la respuesta es verdadera, ejecuta el primer

    bloque de código entre llaves.

    Si la respuesta es falsa ejecuta el bloque else

    restando 1 a velocidad.

    Desde una subclase de World

    podemos codificar métodos que

    permitan el conteo de elementos del

    escenario. comerManzana aparece

    como una variable de instancia de

    una clase Fondo.

    Si encuentra un objeto de la clase

    Manzana, invoca el método comer y

    suma 1 a la variable comerManzana.

  • www.iplacex.cl 5

    Detalla la idea

    Creando un contador

    En este ejemplo, un contador es una variable que nos permitirá contabilizar las

    manzanas a comer.

    Un contador es declarado como variable de instancia de esta manera, para ser usada

    en los métodos de la clase.

    El if evalúa presionar la tecla flecha derecha, mueve 5 y luego invoca al método

    comer().

  • www.iplacex.cl 6

    Agregar contador

    Continuando el código anterior, manzana obtiene un objeto si las coordenadas 0, 0

    coinciden.

    Luego if pregunta si es distinto de null, es decir, si manzana tiene un valor asignado.

    De ser así, remueve el objeto manzana, ejecuta un sonido con el método playSound.

    Suma 1 al contador. La idea que cuenta el número de manzanas que come el

    personaje (clase Cerdo).

    El signo = en el contador significa asignación donde contador es actualizado con la

    suma +1.

    Un segundo if pregunta si contador es igual (==) a 10. De ser así, ejecuta un archivo de

    sonido “felicitaciones.wav” al método comer().

  • www.iplacex.cl 7

    Flujo de bifurcación

    Revisemos los if del método comer.

    Las estructuras if pueden presentar bifurcación en el flujo del código.

    El primer if como hemos revisado, pregunta si la variable actor de manzana tiene un

    valor.

    Si tiene un valor remueve el objeto manzana.

    El segundo if pregunta si la variable contador es igual a 10. Si la respuesta es

    verdadera, ejecuta el archivo de audio felicitaciones.wav y luego detiene la ejecución.

    Si l respuesta del if es falsa, ejecuta el bloque else acciona un archivo de audio

    comer.wav y suma 1 al contador.

    Con esto, confirmamos que la estructura if varía la bifurcación del flujo de la ejecución.

  • www.iplacex.cl 8

    Contar objetos del mundo

    Contar objetos puede ser de utilidad si pensamos en que puede afectar el

    comportamiento de objetos.

    Tal como revisamos en el ejemplo anterior, una variable contador suma 1 por cada

    “manzana” comida.

    Por lo tanto, es el contador que nos indica la cantidad de objetos.

  • www.iplacex.cl 9

    Mostrar puntajes

    Desde una subclase de World instanciar (new) objeto de una clase Contador.

    Luego agregarlo al fondo con el método addObject en las coordenadas 100, 40

  • www.iplacex.cl 10

    Mostrar datos de puntaje

    La clase Contador como subclase de Actor tiene una variable puntaje.

    El método setImage muestra el título Puntaje con el tamaño y color.

    Null significa que el texto no tendrá color de fondo.

    Para usar estos parámetros descritos se debe importar el paquete de clases java.awt

    en la cabecera del archivo.

  • www.iplacex.cl 11

    Demuestra

    Vamos a practicar lo que hemos aprendido.

    Para comenzar, crea un escenario nuevo en Greenfoot, con una Fondo y una Clase.

    Luego, entra al código de la clase que hayas creado.

    Lo primero que haremos será crear un Contador. Para esto comenzamos agregando el

    código public int contarDistancia antes del método act, en la clase, como se ve en la

    siguiente imagen.

    Con esto, hemos creado una variable que usaremos para contar.

  • www.iplacex.cl 12

    Ahora, vamos a crear el método avanzar, para darle movimiento al personaje y,

    además, contar la distancia que avanza, usando el contador. Así debe ser el código:

    Con esto, hemos creado el método avanzar y le hemos hecho un llamado desde el

    método act,, para activarlo.

  • www.iplacex.cl 13

    Sólo nos falta una cosa. Debemos crear un constructor el cual le dará un estado inicial

    a la variable contarDistancia que habíamos creado. Recuerda que la variable existe,

    pero el programa aún no sabe cuál es su valor. Con el siguiente código, le indicamos

    que el valor de la variable comienza en 0.

    Fíjate que hemos agregado el

    constructor arriba del método

    act, y ya le hemos dado un

    valor inicial a la variable

    contarDistancia.

    Observemos de cerca el código

    que hemos creado. Ya

    sabemos que creamos la

    variable, y que le dimos un valor

    de inicio. Lo siguiente que nos

    indica el código, es que cada

    vez que el jugador presiona la

    tecla derecha, el personaje

    avanzará con velocidad 5 y,

    además, la variable

    contarDistancia tendrá un

    aumento de 1.

    Cuando tengas tu código listo, presiona el botón compile y asegúrate de que está

    escrito correctamente. Luego, haz una prueba de tu juego. Lo que debe ocurrir, es que

    el personaje se mueva cada vez que presiones la tecla derecha en el teclado. Aún no

    podemos ver el contador, aunque ya lo hemos creado.

    Lo siguiente que debemos hacer, es agregar un contador en pantalla, para que

    podamos ver el avance del personaje. Para eso, entra de nuevo al código de la clase.

    Necesitamos cambiar un pequeño detalle del código.

  • www.iplacex.cl 14

    Para poder usar la variable contarDistancia que ya creamos en otras clases, la

    cambiaremos por una variable de tipo estática. Para eso, solamente debes cambiar el

    código public int contarDistancia por public static int contarDistancia.

    Ahora que nuestra variable es de tipo estática, compila ese código y abre el código de

    la clase MyWorld o la que hayas creado para el Fon del escenario.

    Verás que esta clase, a diferencia de los actores, no tiene un código act por defecto.

    Pero eso no importa, ya que puedes crear el tuyo propio.

    Luego, colocaremos el código para que mostrar texto en pantalla, como se ve en la

    siguiente imagen

  • www.iplacex.cl 15

    Ahora puedes compilar tu código, y hacer una prueba de nuevo de cómo está

    funcionando tu juego. Verás que, al momento de mover a tu personaje, aparece un

    contador, sumando la distancia que avance.

  • www.iplacex.cl 16