Abstracción: classes

April 15, 2008 – 10:09 pm

Processing 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);

Post a Comment