Comunidad de diseño web y desarrollo en internet online

Clases e Instancias

¿Qué es una Clase?

Cuando decimos “ave”, sabemos que nos referimos a “algo” con plumas, pico, dos patas, etc. No importa realmente si hemos visto un ave o no, o si tenemos un ave frente a nosotros; entendemos claramente que la palabra “ave” se refiere a alguna cosa que cumple con unas características específicas, se comporta de una forma concreta, etc, etc. No es más que una palabra, pero nos permite clasificar las cosas. Por ejemplo, sabemos que una gallina es un ave y que un perro no es un ave.

La clasificación es algo que hacemos todos los días, a cada momento (entre otras cosas, nos libra de utilizar medias como guantes o bañarnos en el comedor en vez de en la ducha). Cada vez que decimos que algo es alguna cosa, estamos clasificándolo, asociándolo a una clase.

Sin embargo, sabemos que la palabra ave no se refiere a un animal concreto, sino a una serie de animales. Ave es la palabra que usamos para identificarlos en un grupo, pero no podemos decir hoy haré volar la palabra “ave” (bueno, puedes decirlo, pero estarás cada vez más cerca del manicomio), en tal caso siempre nos referiremos a esta o aquella ave, siempre hablaremos de un animal concreto. La palabra es lo que conocemos como un concepto, una abstracción.

En la POO ocurre igual, una clase no es más que una serie de código que define a todos los elementos relacionados con ella. Así, podríamos escribir la clase ave colocando en ella todas las características que tienen las aves (pico, color, alto, ancho, patas,…) esas características las llamaremos en lenguaje de programadores, propiedades.

Pero la cosa no termina allí, resulta que las aves tienen también ciertos mecanismos específicos, como comer, dormir, reproducirse (como eldervaz), etc. Estos mecanismos los llamamos métodos.

Por último, también sabemos que las aves reaccionan ante ciertos sucesos, como peligro, atracción, defensa... A esto lo llamaremos eventos.

Entonces, vemos que una clase es algo así como el concepto de lo que queremos hacer, es como la idea (concebida al detalle) de la cosa, del objeto; pero igual que con las ideas, no puedo hacer nada directamente con una clase (puedes sentarte en una silla, pero no en tu idea de una silla). Sin embargo, esta idea será la que dé forma al objeto que crearemos (que tendrá las características, mecanismos y comportamientos que habíamos pensado en nuestra idea).

Comparación Clase - Concepto

¿Qué es una Instancia?

Bien, decíamos que una clase es como la definición de un objeto, pero no es el objeto en sí, del modo como una idea no es una cosa física (el ejemplo de la silla). Así que para sentarnos necesitaremos convertir esa idea en algo, en un objeto real; a ese objeto lo llamamos instancia.

En un mismo proyecto puedo tener una o más instancias de una misma clase sin problemas.

Cada vez que creamos una nueva instancia, ésta adquiere las propiedades, métodos y eventos de la clase a la que pertenece (es lo que permite la relación es un), sin embargo, cada instancia es independiente de las otras; esto nos da dos ventajas:

  1. Si hago algún cambio en la clase, todas las instancias de esta clase se actualizarán automáticamente; esto nos permite hacer cambios sin tener que ir a cada una de las instancias (se aplica el mismo principio de herencia, aunque a un nivel diferente).
  2. Al ser independientes de las otras instancias, puedo darles valores diferentes sin que afecten a las demás (como tener una silla negra, una roja, una más alta, etc.). Aunque comparten la misma estructura, pueden programarse individualmente, dando versatilidad y flexibilidad al código.

Ahora que tenemos la base teórica, debemos dar un paso más práctico, en el siguiente post aprenderemos Cómo Escribir una Clase.

 

Información adicional

Si tienes alguna pregunta de este ejemplo; puedes hacerla aqui en los foros.