[Escribir texto]
PARADIGMA ORIENTADO A OBJETOS
UNIDAD Nº II
www.iplacex.cl
INTRODUCCIÓN
Hasta ahora hemos visto como crear los objetos y escenario en un proyecto Greenfoot. Usamos código Java con las clases y métodos de la herramienta. Aprendimos como compilar el código, instanciar los objetos y ejecutar el proyecto. Definimos las variables y usamos los métodos que generan la acción en los diferentes actores en un escenario. En esta tercera semana consideraremos los siguientes objetivos:
• Entender y programar una conducta aleatoria
• Comprender la probabilidad en el comportamiento
• Acceder a métodos dinámicos y estáticos
• Refactorizar el código. SEMANA 3
www.iplacex.cl
IDEAS FUERZA
1.
Conducta aleatoria: Una conducta aleatoria comienza con un proceso de cálculos de una fórmula predeterminada que se producen por fórmulas determinadas.2.
métodos estáticos: Están disponibles para su uso en cualquier instante. puede llamarse sin tener que crear un objeto de dicha clase. 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.3.
métodos dinámicos: son aquéllos, que tienen en cuenta el hecho de que los capitales tienen distintos valores en los diferentes momentos del tiempo.4.
Refactorización: Una limpieza de código, básicamente. La refactorización no arregla errores ni incorpora funcionalidadesAltera la estructura interna del código sin cambiar su comportamiento externo
Si durante una refactorización se ha cambiado el comportamiento del software o web, es que has generado un error o bug.
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 condatos aleatorios
www.iplacex.cl
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.
Un ejemplo sería que asteroides presenten diferentes movimientos dentro del escenario de tal manera que haya una nave deba esquivarlos. Estos movimientos nunca tendrán los mismos desplazamientos ya que intervienen movimientos al azar.
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.
www.iplacex.cl
Se utiliza este método de tipo estático para obtener el número random:
¿Cómo utilizamos los métodos estáticos?
En el código ejemplo de la figura anterior los valores son obtenidos al azar de tal manera que el asteroide pueda tener diferentes movimientos. La clase Greenfoot accede a un método getRandomNumbre(50); que retorna valores al azar entre 0 y 49. Luego una estructura if evalúa considerando solo los valores menores o iguales a 20. Si esto último se cumple hace girar el asteroide y lo desplaza.
Es importante señalar que el método getRandomNumber es un método de sistema que nos entrega a través de cálculos matemáticos los valores al azar que necesitemos. Por lo tanto anteponemos el nombre de la clase (Greenfoot), un punto y el método estático.
PREGUNTA DE REFLEXIÓN
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:Consiste en generar un código claro: escribir código con nombres y variables entendibles. Funcionalmente bien diseñados: Que cumplan la tarea completa. Con métodos breves. Esta técnica también es llamada Cohesión.¿Por qué es importante refactorizar el código?
Refactorizar es una manera eficiente de generar métodos que cumplan tareas específicas donde estos sean invocados desde un método inicial. Esto permite un orden y legibilidad.
Ejemplo de refactorización:
En este ejemplo el método inicial es act() mientras que llama al método desplazar durante toda la ejecución del proyecto. Dicho de otra forma,” será como tener distintas piezas que conforman una maquinaria
www.iplacex.cl
• 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 aleatoriaLa 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 (<) que 10, equivale a un 10% de probabilidad de que el bloque de código se ejecute.
En esta imagen, nota que el bloque de código que icluye turn(5) tiene un 10% de probabilidad de ejecutarse.
El método getRandomNumber(100) por definición es un método estático, ya que le antecede la clase Greenfoot.
PREGUNTA DE REFLEXIÓN.
www.iplacex.cl
• Refactorizando códigoObserva 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.
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 con 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 número. Cada vez que llamemos a esta variable, será por su nombre, numero.
Greenfoot.getRandomNumber(50): Luego indicamos que la variable número 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.
www.iplacex.cl
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.
Ahora observa este código que ha sido modificado:
Lo que vemos ahora es que el comportamiento del objeto cambia de acuerdo con una probabilidad.
Se ha agregado una condición, en la que indicamos que solo si el número 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
www.iplacex.cl
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 comportamiento Completo (), y a su vez, desde este método se hace una llamada al método probabilidad().
www.iplacex.cl
Conclusión
Los temas de programación ya estudiados, son la base que te permitirá crear programas, sistemas, aplicaciones, videojuegos, etc.
A su vez, consiente crear el código modular y reutilizable. Esta encapsulación es la que admite la modularidad entre los componentes.
Por una parte, se vio la parte de abstracción de los datos, el cómo modelar un problema de la vida real a un entorno que una computadora lo pueda comprender, primeramente diseñando las clases y su relación entre ellas.
Es importante destacar que tanto los métodos y las propiedades de las mismas pueden tener un acceso restringido a otras clases, de modo que la interacción se diera en un contexto seguro.