Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12....

19
[Escribir texto] PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS

Transcript of Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12....

Page 1: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

[Escribir texto]

PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II

COMPORTAMIENTO DE OBJETOS

Page 2: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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

Page 3: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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.

Page 4: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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

Page 5: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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.

Page 6: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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.

Page 7: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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?

Page 8: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓ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%.

Page 9: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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

Page 10: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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á.

Page 11: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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?

Page 12: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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.

Page 13: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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.

Page 14: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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.

Page 15: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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

Page 16: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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().

Page 17: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

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.

Page 18: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

www.iplacex.cl

Page 19: Paradigma Orientado a Objetos - IPLACEXcursos.iplacex.cl/CED/POO1008/S3/ME_3.pdf · 2020. 12. 14. · PARADIGMA ORIENTADO A OBJETOS UNIDAD Nº II COMPORTAMIENTO DE OBJETOS . INTRODUCCIÓN

www.iplacex.cl