Abstracción: classes
April 15, 2008 – 10:09 pmProcessing es una librerÃa de Java, y Java es un lenguaje de programación Orientado Objetos (OO). Este tipo de lenguajes hace gran uso de la creación y uso de classes e instancias. En esta sesión veremos la idea general de la programación orientada objetos y su utilidad.
Todos los ejercicios que hemos hecho hasta el dÃa de hoy hemos tomado una perspectiva procedural. Donde indicamos al ordenador que hacer en cada momento un comando tras otro. En el GenerArt y la InfoVis la programación orientada a objetos puede ser muy útil. En muchos casos la programación OO nos ayuda a abstraernos del código para crear y manipular los procesos de forma más intuitiva. Un ejemplo de esto son los sistemas de partÃculas o los grafos representando las redes sociales.
Qué es una clase?
Una clase consiste en un tipo de variable definido por el programador al que se le asignan unas variables y unos métodos miembros. Más tarde esta clase se podrá instanciar (materializar) tantas veces como sea necesaria con distintos parámetros.
Qué uso tienen?
El ejercicio anterior es un ejemplo claro en el que el uso de la programación OO nos puede ayudar a extenderl. Imaginemos que en el ejemplo anterior, en lugar de una pelota, queremos 100 de ellas cayendo de alturas distintas.
Una solución serÃa crear un array distinto para cada una de las variables necesarias para el comportamiento de la pelota (el rebote con gravedad). Cada una de las casillas de los arrays corresponderÃan a una pelota distinta y en el draw habrÃa que actualizar y dibujar todas ellas. Esta solución es difÃcil de mantener y de leer.
Para situaciones en las que tenemos objetos con unos comportamientos definidos y una forma de dibujarse determinada la programación OO es muy conveniente.
La solución OO del ejercicio anterior corresponderÃa a crear una clase Pelota. En su interior esta clase, tendrá las variables posY, velY, gravY, y radio caracterÃsticas de cada pelota. La clase Pelota tendrá dos métodos principales: actualizate() y dibujate(). El método actualizate() se ocupará de actualizar la posición y la velocidad de la pelota. El método dibuajte() tan solo se ocupará de dibujar la pelota en su posición actual posY. Finalmente en el setup() crearÃamos un array de pelotas y en el draw() solo iterar sobre el array de pelotas llamando al actualizate() y dibujate() de cada una de ellas.
Como defino una clase?
La sintaxis para definir una clase consiste en un bloque
class MiClase{
}
en cuyo interior definiremos:
- las variables miembros de la clase
- una función especial llamada constructor que se ejecuta cuando se crea una instancia de esta clase (la función constructor debe tener el mismo nombre que la clase y no debe devolver nada, ni siquiera void)
- los métodos de la clase
Como crear una instancia de una clase?
Para usar una clase debemos instanciarla. Instanciar una clase significa crear una variable del tipo de la clase e inicializarla con parámetros por defecto o pasados por el constructor. La sintaxis usada para crear una instancia de una clase es la siguiente:
MiClase miInstancia = new MiClase();
El constructor de MiClase podrÃa tomar como entrada dos parametros en cuyo caso harÃamos:
MiClase miInstancia = new MiClase(parametroUno, parametroDos);