paradigma orientado a objetos - iplacexcursos.iplacex.cl/ced/poo1008/s3/me_3.pdf · 2020. 12....
TRANSCRIPT
[Escribir texto]
PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II
COMPORTAMIENTO DE OBJETOS
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 funcionalidades
Altera 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 con
datos aleatorios Objetos
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
En tu vida diaria, ¿dónde piensas están presentes los métodos estáticos?
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 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 (<)
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.
¿Para qué sirve crear una probabilidad de conducta aleatoria?
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.
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.
www.iplacex.cl
www.iplacex.cl